【发布时间】:2013-01-15 02:00:37
【问题描述】:
【问题讨论】:
-
Cygwin 现在提供git-2.1.1-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 并按添加(确保两者都突出显示)。
- 或者,您可以使用源软件镜像,但如果这样做,您必须使用托管在与您选择的服务器不同的服务器上的镜像 发行版镜像。
- 继续选择和安装包,确保安装任何指定的依赖项。
【讨论】:
要安装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 文件。
【讨论】:
make configure 创建./configure 文件。
我通过关注these instructions成功安装了git 1.8.4.474;我正在运行 Windows 7 64 位,cygwin 版本 1.7.22(0.268/5/3)
运行 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 的评论)
使用 git clone https://github.com/git/git.git 克隆 Git 源代码。关于 Git 配置的几点说明:
确保
core.autocrlf=false,否则最终会出现导致构建中断的 DOS 样式行尾。我还有一个古怪的
http.sslcainfo属性值;要么取消设置,要么将其指向/usr/ssl/certs/ca-bundle.crt。从您新克隆的 git 存储库中,运行以下命令:
make configure ./configure make make install
【讨论】:
你的指示对我真的没用...
我遵循了这些说明(只要确保安装了所有正确的软件包)
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 命令都需要该参数,但这对我有用
【讨论】:
我在执行“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 行:意外标记.'附近的语法错误(当然,前缀=/usr/local)。就像任何程序套件一样”
./install: line 11:
这是由于 Windows 操作系统不区分大小写,如果您的 PATH 中有“./”。 Cygwin 使用 git 源代码树中的 INSTALL 文件而不是 /usr/bin/install。我们必须将源树中的一些“安装”文件重命名为其他文件名。这是http://zengrong.net/post/1817.htm提到的
【讨论】:
我在执行此操作时遇到了一个问题,我花了一个小时进行调试,因此我发布了一个答案,以防其他人来这里查看。
其实和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的结果。
【讨论】:
make install 命令。工作就像一个魅力,我不必修改任何文件。
预构建的包不可用,因此您必须自己构建。
或者,您可以下载non Cygwin build 并将其添加到您的PATH。
【讨论】:
您可以从git-scm.com/download/win 安装适用于 Windows 平台的最新版本。
将以下内容添加到您的~/.profile:
export PATH=$PATH:`cygpath 'C:\Program Files (x86)\Git\bin'`
我将这个来自 SourceTree 和 cygwin 的 git 客户端与 Gerrit/SSH 服务器结合使用,还没有遇到任何问题。
【讨论】: