【问题标题】:How to get Git 1.8 in Cygwin? [closed]如何在 Cygwin 中获取 Git 1.8? [关闭]
【发布时间】:2013-01-15 02:00:37
【问题描述】:

根据http://cygwin.com/packages/git/,最新可用的 Cygwin 包是 1.7.9-1。

我想将 git 更新到至少 1.8.0。

我可以这样做吗?

【问题讨论】:

标签: git cygwin


【解决方案1】:

cygwinports有很多新版本的各种工具

在我写这篇文章的时候它有 1.8.3.4

新的简化安装说明:

  • 使用最新的 Cygwin 安装程序(至少 2.829 版):setup-x86.exe 用于 32 位,或 setup-x86_64.exe 用于 64 位。 (注意 许多软件包尚未移植到 x86_64。)
  • 使用 -K 标志启动 setup-*.exe,例如:

    cygstart -- /path/to/setup-x86.exe -K http://cygwinports.org/ports.gpg

  • 在选择安装类型页面上,选择“从 Internet 安装”。

  • 在选择下载站点页面上,选择发行版镜像,然后在用户 URL 字段中输入 ftp://ftp.cygwinports.org/pub/cygwinports 并按添加(确保两者都突出显示)。
    1. 或者,您可以使用源软件镜像,但如果这样做,您必须使用托管在与您选择的服务器不同的服务器上的镜像 发行版镜像。
  • 继续选择和安装包,确保安装任何指定的依赖项。

【讨论】:

  • +1:是的,cygwin 确实有 git v1.8.3.4(因此无需从源代码克隆和构建 git)。
  • 为避免超出您的预期,请在设置的“选择包”步骤中单击“查看”按钮。安装程序默认更新您选择的站点(例如 CygwinPorts)已更新的所有内容,并且更新并不总是更好。
  • 我收到一条错误消息:“550 /pub/cygwinports/x86_64/setup.xz.sig: 没有这样的文件或目录”(我想使用 git 2.22 但 Cygwin 只有 2.21。)
【解决方案2】:

要安装git 1.8.0,您需要编译源代码。

你需要克隆git仓库(git clone https://github.com/git/git.git),进入git目录,将当前版本改成1.8.0或者你想要的其他版本(git checkout v.1.8.0),然后输入以下命令:

make configure
./configure --prefix=/usr/local
make
make install

它将在/usr/local 目录下安装git。有关 git 安装的更多信息,如文档,您可以查看位于 git 存储库根目录中的 INSTALL 文件。

【讨论】:

  • 如果您遇到问题,请尝试更新您的 Cygwin 安装(即再次运行 Cygwin setup.exe)。我在构建 Git 1.8.1 时遇到了一些问题,因为我的一些库在本地落后。您可以使用“uname -r”检查您的 Cygwin 版本。
  • 缺少的小步骤...首先:make configure 创建./configure 文件。
  • 谢谢@darcyparker。更新答案。
  • 另外,由于a problem related to gettext,我不得不运行“make -i install”而不是“make install”
  • 在底部查看我的答案以获得免费的编译方式。
【解决方案3】:

我通过关注these instructions成功安装了git 1.8.4.474;我正在运行 Windows 7 64 位,cygwin 版本 1.7.22(0.268/5/3)

  1. 运行 Cygwin 设置实用程序并确保您已安装以下软件包:

    gcc
    autoconf
    curl
    libcurl-devel, required for http/https support 
                   (NOTE: this is an obsolete package, you will need to
                   uncheck "Hide obsolete packages" when selecting packages
                   to install)
    make
    libiconv
    python
    perl
    gettext
    

    您可能需要 libiconv-devel 和 cygwin32-liviconv(参见 Marek 的评论)

  2. 使用 git clone https://github.com/git/git.git 克隆 Git 源代码。关于 Git 配置的几点说明:

    确保core.autocrlf=false,否则最终会出现导致构建中断的 DOS 样式行尾。

    我还有一个古怪的http.sslcainfo 属性值;要么取消设置,要么将其指向/usr/ssl/certs/ca-bundle.crt

  3. 从您新克隆的 git 存储库中,运行以下命令:

    make configure
    ./configure
    make
    make install
    

【讨论】:

  • 请注意,link-only answers are discouraged,SO 答案应该是搜索解决方案的终点(相对于另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
  • "gcc-core" 似乎是我这里需要的包,也安装了一堆必需的依赖项。
【解决方案4】:

你的指示对我真的没用...

我遵循了这些说明(只要确保安装了所有正确的软件包)

http://randomartifacts.blogspot.com/2013/04/compiling-git-on-cygwin.html

修改了 Makefile

$ git diff Makefile
diff --git a/Makefile b/Makefile
index 3588ca1..90f337c 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ RPMBUILD = rpmbuild
 TCL_PATH = tclsh
 TCLTK_PATH = wish
 XGETTEXT = xgettext
-MSGFMT = msgfmt
+MSGFMT = msgfmt.py
 PTHREAD_LIBS = -lpthread
 PTHREAD_CFLAGS =
 GCOV = gcov

然后

make configure NO_MSGFMT_EXTENDED_OPTIONS=1
./configure
make NO_MSGFMT_EXTENDED_OPTIONS=1
make install NO_MSGFMT_EXTENDED_OPTIONS=1

不确定是否所有 make 命令都需要该参数,但这对我有用

【讨论】:

  • 64位版本安装gcc-core(bc gcc不工作)。
【解决方案5】:

我在执行“make install”时遇到了问题。错误信息是:

安装 -d -m 755 '/usr/local/bin'
git:“安装”不是 git 命令。请参阅“git --help”。
./install:第 4 行:通常:找不到命令
./install:第 5 行:将:找不到命令
./install: 第 6 行: to: command not found
./install:第 8 行:$:找不到命令
./install:第 11 行:意外标记 .'
./install: line 11:
附近的语法错误(当然,前缀=/usr/local)。就像任何程序套件一样”

这是由于 Windows 操作系统不区分大小写,如果您的 PATH 中有“./”。 Cygwin 使用 git 源代码树中的 INSTALL 文件而不是 /usr/bin/install。我们必须将源树中的一些“安装”文件重命名为其他文件名。这是http://zengrong.net/post/1817.htm提到的

【讨论】:

    【解决方案6】:

    我在执行此操作时遇到了一个问题,我花了一个小时进行调试,因此我发布了一个答案,以防其他人来这里查看。

    其实和Yorkwar的原因一样,只是错误不同。

    make install 输出之前一切正常:

    $ make install
        GEN perl/PM.stamp
        SUBDIR gitweb
        SUBDIR ../
    make[2]: 'GIT-VERSION-FILE' is up to date.
        GEN git-instaweb
        BUILTIN all
        SUBDIR git-gui
        SUBDIR gitk-git
        SUBDIR perl
        SUBDIR templates
    install -d -m 755 '/usr/local/bin'
    make: execvp: install: Permission denied
    Makefile:2342: recipe for target 'install' failed
    make: *** [install] Error 127
    

    在对 UAC、setuid、icacls、所有权等进行了大量的研究之后,我通过strace 发现实际问题是在执行install 时:因为我的PATH 中有./,并且Windows 不区分大小写,它会尝试执行INSTALL,这是一个没有设置x 位的文本文件。所以“Permission denied”是指这个文件没有设置x

    @Yorkwar 通过重命名所有 INSTALL 文件来解决此问题,但另一种选择是编辑 Makefile 并替换

    INSTALL = install
    

    INSTALL = /usr/bin/install
    

    我在 Windows 7 64 位中使用 cygwin 32 位(在 cygwin64 出现之前安装它并且没有费心升级)。成功构建并安装了git version 2.0.0.rc4.dirty,这是git clone https://github.com/git/git.git的结果。

    【讨论】:

    • 我刚刚以管理员身份打开了一个 bash 实例,然后运行了make install 命令。工作就像一个魅力,我不必修改任何文件。
    • @nihilon 你为什么要发布这个。我的回答是针对和我有同样问题的人,而不是针对没有问题的人
    • 因为我遇到了同样的错误并解决了它而无需修改makefile,或者做很多其他事情?有可能?当然,总是有土豆。至于“针对……随机的没有问题的人”部分,我不太确定这与任何事情有什么关系。我评论了您的答案,针对有特定问题的人。不要随便随便没有问题的人。我觉得我已经用更少的步骤和更少的文件修改解决了同样的问题,所以我提到了它。看看我在那里做了什么?
    【解决方案7】:

    预构建的包不可用,因此您必须自己构建。

    或者,您可以下载non Cygwin build 并将其添加到您的PATH

    【讨论】:

      【解决方案8】:

      您可以从git-scm.com/download/win 安装适用于 Windows 平台的最新版本。

      将以下内容添加到您的~/.profile

      export PATH=$PATH:`cygpath 'C:\Program Files (x86)\Git\bin'`
      

      我将这个来自 SourceTree 和 cygwin 的 git 客户端与 Gerrit/SSH 服务器结合使用,还没有遇到任何问题。

      【讨论】:

      • -1 他要安装 git @cygwin
      • 该站点的二进制版本不知道 Cygwin 路径,所以如果您尝试在 Cygwin 下使用它会发生奇怪的事情。
      • 你是指哪些奇怪的事情?我还没有遇到任何问题。我尝试了 cygwin 发行版中的 git 客户端,但这个客户端在推送到 git/ssh 服务器时表现出奇怪的行为(永远挂起)。
      • git-scm.com 上的版本通常也落后于可用资源。在撰写本文时,git-scm.com 提供 Git 版本 1.9.4,而源代码已经是 2.1.0-rc2 版本。
      • 是的! 2.1.0 版现已在标准 cygwin 发行版中可用: git --version 显示“git version 2.1.0” :-)
      猜你喜欢
      • 2012-10-14
      • 2013-01-11
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多