在OS X上安装Git

时间:2009-05-22 11:52:01

标签: git macos version-control

我正在尝试在Mac OS X Leopard上安装Git。我正试图避开MacPorts / Fink路线。我也试图避开谷歌上的installer,因为我自己走得很远,但如果必须,我会继续下载安装程序。

无论如何,我安装了Git。 /usr/local/bin/git。问题是没有安装任何文档,Makefile从不打扰告诉我。所以现在我让Git坐在那里等待我尝试为它安装联机帮助页。

由于某些可怕的原因,联机帮助页被维护为文本文件,这些文件将由AsciiDoc程序处理,我很快就安装了该程序。但是AsciiDoc将这些文本文件转换为XML。

然后Git使用另一个名为xmlto的程序将AsciiDoc吐出的XML转换为联机帮助页(我想 - 我还没有那么远)。问题是,每当它开始该步骤时我都会收到此错误(第一行是从make输出,rest是错误):

    XMLTO git-apply.1
I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
/Users/chrislutz/prog/sources/git-1.6.3.1/Documentation/git-apply.xml:2: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
D DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"

所以基本上它只是遍历每个文件并为我们所有文件提供错误。

我确实尝试过下载文件http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd,将其放在目录中,然后将XML文件中的所有引用更改为目录中的文件,但这给了我更多更奇怪的错误。如果我有一个常规解决方案可以工作,它可能仍然会给我那些陌生人的错误,这意味着整个事情都被搞砸了,我只会使用Google安装程序。

然而,我自己已经(跌跌撞撞)了,我觉得这是松一口气和使用Git的机会之前的最后一步。所以我想做出最后的努力来理解什么是错的。而“最后努力”意味着“Ask Stack Overflow。”

因此,如果有人能够让我对这个错误意味着什么以及为什么会发生错误(以及我可以做些什么来修复它)给出任何见解,那就太棒了。如果没有,我会尝试使用Google安装程序。

8 个答案:

答案 0 :(得分:12)

我最近在CentOS 5.3上安装了git-1.6.4.2。构建git没有问题,但是尝试安装随附的文档会在每一步都产生痛苦。来自yum repos的xmltoasciidoc的版本是旧的,所以我从源代码构建它们。然后xmlto(通过xmllint)抱怨缺少DocBook 4.5,我终于设法手动获取了这些内容。

到目前为止,doc build快乐地推进,直到

    DB2TEXI user-manual.texi
/bin/sh: line 1: docbook2x-texi: command not found
make[1]: *** [user-manual.texi] Error 127

但是安装了docbook2x!啊,命令不同:

$ rpm -q --filesbypkg docbook2x | grep bin.\*texi
docbook2x                 /usr/bin/db2x_docbook2texi
docbook2x                 /usr/bin/db2x_texixml

即使尝试手动运行,我仍然没有找到快乐:

$ db2x_docbook2texi user-manual.xml --encoding=UTF-8 --to-stdout >user-manual.texi++
docbook2texi:/book: no description for directory entry
/usr/bin/db2x_texixml:-::node: fatal error: node belongs to a different file
Died at /usr/bin/db2x_texixml line 959.

INSTALL的底部提到了几个方便的make目标:quick-install-man和quick-install-html。例如,它变成了那个

$ make prefix=/usr/local quick-install-man

相当于

$ ./Documentation/install-doc-quick.sh origin/man /usr/local/share/man

这有两个问题:我们需要一个git repo来使用这些目标,manhtml分支的头部可能与您正在安装的版本不对应。

所以,一个快速而又脏的引导程序:

tar xfz git-1.6.4.2.tar.gz
cd git-1.6.4.2
make prefix=/usr/local all
sudo make prefix=/usr/local install  # (1)

cd ..
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
git checkout v1.6.4.2  # (2)

# (3)
./Documentation/install-doc-quick.sh \
  c8b9e605d51dd2f0c7ce6a363df31171af16534c \
  /usr/local/share/man

# (4)
./Documentation/install-doc-quick.sh \
  35b47ca5285a4059792ba937f8e09b2ab4a7adf4 \
  /usr/local/share/doc/git-doc

git init --help  # (5)

注意:

  1. 此时,git将存在/usr/local/bin
  2. 现在,您将拥有与detached head上的上一步相同的树。
  3. SHA-1来自git log origin/man中的最后一次1.6.4.2提交。
  4. 与上述相同,但origin/html除外。
  5. 利润!

答案 1 :(得分:9)

也许不是您想要的答案,但您可以下载与源一起发布的git-manpages-*.tar.gzgit-html-*.tar.gz。它们的发布是因为已知asciidoc工具链有点脆弱,并且需要付出相当大的努力来安装和安排所有内容。

我认为,您可能需要一整套docbook支持文件。也许还有一些样式表......虽然如果你安装了xmlto,你应该已经拥有了所有这些。

答案 2 :(得分:3)

Wincent Colaiuta在knowledge base维护了一个非常有用的wincent.com/wiki,这是Mac OS X上git的绝佳信息来源。

特别是,请看这两篇文章:

答案 3 :(得分:3)

当我搜索“ docbook2x-texi:command not found ”时,我被驱使到了这个问题,因为我在构建从git存储库获取的git 1.8.2.1时遇到了这个问题,其中包含:

make prefix=/my_prefix/git all doc info

所以,在http://git-scm.com/book/en/Getting-Started-Installing-Git之后我发起了:

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

但是要完成make,我必须安装下一个包:

yum install asciidoc xmlto docbook2X

正如最常读回答所指出的,最后一个提供了db2x_docbook2texi命令,但没有提供所需的docbook2x-texi。然而,一个简单的符号链接解决了这个问题:

ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

现在,make成功了,我必须安装 git

make prefix=/my_prefix/git install install-doc install-html install-info 

此解决方法在Scientific Linux 6.1(Carbon)下进行了测试。

答案 4 :(得分:2)

我刚发现这个很好solution to the Git manpages chain problem on OS X。为方便起见,这里是(将git-manpages-1.6.6.tar.bz2替换为您的git版本,将/usr/local/替换为安装git的地方):

$ curl -O http://kernel.org/pub/software/scm/git/git-manpages-1.6.6.tar.bz2
$ sudo tar xvf git-manpages-1.6.6.tar.bz2 -C /usr/local/man

然后,(正如Boblet指出的那样),检查git manpath:

echo $MANPATH

并在必要时进行调整:

答案 5 :(得分:0)

随机思考;您的Git联机帮助页安装在哪里?我在/usr/local/git/man猜测。如果是这样,请检查它是否在$ MANPATH中:

echo $MANPATH

如果您没有git manpath,请通过TextMate或vi或其他内容将此文本添加到您$PATH的任何位置(例如~/.bash_profile};

export MANPATH=/usr/local/git/man:$MANPATH

或者只是从shell中使用此命令:

echo 'export MANPATH=/usr/local/git/man:$MANPATH' >> ~/.bash_profile

在完成Hivelogic Snow Leopard安装后,我自己就遇到了这个问题,所以HTH

答案 6 :(得分:0)

如果您正在使用git源代码库的克隆,您可以执行以下操作:

git archive origin/man | sudo tar -x -C /usr/local/share/man

发现于http://johnreilly.tumblr.com/post/41241198/installing-git-man-pages - 我已经使用了一段时间了,它的效果非常好。

答案 7 :(得分:0)

本周早些时候我在Cygwin上遇到了类似的构建问题(试图加载网络实体失败),并且通过一些搜索我能够发现问题是缺少xml目录。在Cygwin上有一个名为build-docbook-catalog的脚本。该工具可能正在尝试自动运行,但是当我手动运行时,由于/etc/xml目录不存在而失败了。

build-docbook-catalog的来源可能是here,但我现在无法确认,因为我没有Windows或Cygwin可用。

我意识到这个问题早已回答,但我在寻找问题的答案时偶然发现了这个页面,所以希望这为其他人节省了一些时间。