在 macOS 上安装 Git

14

我正在尝试在Mac OS X Leopard上安装Git。我试图避免使用MacPorts/Fink途径,也试图避免使用Google上的安装程序,因为我已经自己做了很多工作,但如果必须,我会下载安装程序。

无论如何,我已经安装了Git。/usr/local/bin/git。问题是,没有安装任何文档,并且Makefile从未告诉过我这一点。现在,当我试图为它安装man页时,Git闲置着等待被使用。

出于某种可怕的原因,这些man页被维护为文本文件,应由AsciiDoc程序处理,我立即安装了AsciiDoc。但是,AsciiDoc将这些文本文件转换为XML。

然后,Git使用另一个名为xmlto的程序将AsciiDoc输出的XML转换为man页(我想——我还没有走到那一步)。问题是,每当它开始执行这一步骤时,我都会得到以下错误信息(第一行是make的输出,其余是错误信息):

    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。所以我想尽最后努力理解问题出在哪里。而“最后的努力”意味着“问问 Stack Overflow”。

如果有人能给我任何关于这个错误是什么意思,为什么它发生(以及我可以做什么来修复它)的洞察力,那就太好了。如果没有,我将尝试使用Google安装程序。

8个回答

12

最近我在CentOS 5.3上安装了git-1.6.4.2。构建git没有问题,但尝试安装附带的文档时遇到了困难。yum仓库中的xmlto和asciidoc版本过旧,因此我从源代码构建了它们。然后,xmlto(通过xmllint)抱怨缺少DocBook 4.5,最终我设法手动添加了这些。

到这一步,文档构建可以愉快地进行,直到

    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来使用这些targets,而manhtml分支的heads可能与您正在安装的版本不相符。

因此,一个快速而简单的引导:

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. 现在,您将拥有与上一步相同的树形结构,但在分离的head上。
  3. SHA-1来自于git log origin/man中最后一个1.6.4.2提交。
  4. 与上面相同,只是从origin/html取得。
  5. 收获!

9
也许不是你想要的答案,但你可以下载与源代码一起发布的git-manpages-*.tar.gzgit-html-*.tar.gz。它们被发布是因为asciidoc工具链已知有些脆弱,并需要相当大的努力来安装和排列所有内容。
我认为你可能需要整个docbook支持文件包。也许还需要一些样式表...虽然如果你安装了xmlto,应该已经得到了所有这些文件。

此时此刻,我想要的答案就是最有效的答案。我不想为了获取手册而重新安装Git,这个方法完美解决了这个问题。我希望早点检查它们的索引。简而言之,谢谢! - Chris Lutz
1
araqnid,HTML文档归档的名称实际上是git-htmldocs-*.tar.gz,而不是git-html-*tar.gz。(请参见http://www.kernel.org/pub/software/scm/git/。)也许Git存储库维护者在您编写答案后重命名了文件。 - Derek Mahar

4

当我在搜索"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)下进行了测试。


谢谢,这非常有帮助。在Mac OS X 10.5.8上,路径将是ln -s /usr/local/bin/db2x_docbook2texi /usr/local/bin/docbook2x-texi - user1985657
谢谢,谢谢!你提到的符号链接使得Git能够在我的CentOS 6.x上安装。 - Garret Wilson

3

知道我曾经离成功如此之近,现在感觉有点沮丧。我自己完成了所有步骤,只剩最后一步就放弃了。 - Chris Lutz

2

我刚刚发现了一篇很好的关于OS X上Git手册链问题的解决方案为了方便,这里是具体操作(将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

并且如果必要的话进行调整:


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安装后遇到了这个问题,希望对你有所帮助。


0

0
本周早些时候,我在Cygwin上遇到了类似的构建问题(尝试加载网络实体失败),经过一番搜索,我发现问题是缺少xml-catalog。在Cygwin上有一个名为build-docbook-catalog的脚本。该工具可能正在尝试自动运行,但当我手动运行它时,由于/etc/xml目录不存在而失败。 build-docbook-catalog的源代码可能在这里,但我现在无法确认,因为我没有Windows或Cygwin可用。
我意识到这个问题已经得到了解答,但我在寻找答案时偶然发现了这个页面,希望这能为其他人节省一些时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接