7

编译 git 时出现以下错误:

make[2]: Leaving directory `/home/xxx/git-master'
    XMLTO git-add.1
xmlto: /home/xxx/git-master/Documentation/git-add.xml does not validate (status 3)
xmlto: Fix document syntax or use --skip-validation option
I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
/home/xxx/git-master/Documentation/git-add.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"
I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
validity error : Could not load the external subset "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
Document /home/xxx/git-master/Documentation/git-add.xml does not validate
make[1]: *** [git-add.1] Error 13
make[1]: Leaving directory `/home/xxx/git-master/Documentation'
make: *** [doc] Error 2

主要问题是什么?

4

5 回答 5

7

在 OSX(Mountain Lion)上,我必须这样做:

brew install asciidoc
brew install xmlto
brew install docbook   

# then (as prompted by brew...)
#
# If you intend to process AsciiDoc files through an XML stage
# (such as a2x for manpage generation) you need to add something
# like:
#
export XML_CATALOG_FILES=/usr/local/etc/xml/catalog
#
# to your shell rc file so that xmllint can find AsciiDoc's
# catalog files.

brew install docbook-xsl

(感谢 Nathan 提供必要的提示)。#6个字符

于 2013-08-03T01:27:20.727 回答
6

派对迟到了,但在 cygwin 上,您需要验证的包是docbook-xml45(如 DTD URI 所暗示的,docbook/xml/4.5/docbookx.dtd)

于 2013-04-16T13:28:27.410 回答
2

这似乎是 git 反复出现的问题。在寻找解决方案时(今天),我在几个论坛上遇到了它。(Linux、Cygwin、Mac OS)。问题总是一样的:缺乏好的文档目录。不幸的是,安装适当的目录在很大程度上取决于您的安装,而且缺少一个好的目录的方法不止一种。

  1. 几年前发布了一个糟糕的目录。卸载并安装更新。
  2. 构建目录的包中途失败。删除并重新安装包。
  3. 安装目录的包还没安装,包工具也没管你。

选项 3 是我所在的位置。我已经安装了 brew,所以 sudo brew install docbook sudo docbook-register 为我解决了这个问题。

或者,可以单独下载可用的文档。

于 2012-12-25T23:52:45.600 回答
2

注意:您可能会在最近的(2019 年,七年后)版本中再次发现此错误,因为 Git 开始使用 DocBook 5(而不是 DocBook 4.5),因为 Asciidoctor 2.0 不再适用于旧版本。
Git 2.24(2019 年第四季度)澄清了这种情况。

请参阅brian m的提交 f6461b8(2019 年 9 月 15 日) 。卡尔森 ( bk2204) .
(由Junio C Hamano 合并 -- gitster--提交 faf5576中,2019 年 10 月 6 日)

文档:使用 Asciidoctor 2 修复构建

我们的文档工具链传统上是围绕 DocBook 4.5 构建的。
此版本的 DocBook 是最后一个基于 DTD 的 DocBook 版本。
2009 年,DocBook 5 被引入使用命名空间,其语法以 RELAX NG 表示,它更具表现力并允许更广泛的语法形式。

Asciidoctor 是构建我们文档的替代方案之一,它在其最近的 2.0 版本中将 DocBook 4.5 的支持移出核心,现在仅在主版本中支持 DocBook 5。
DocBoook 4.5 转换器仍可作为单独的组件使用,但这在大多数发行版包中不可用。
如果不是因为我们使用 xmlto,这不是问题,它仍然停留在 DocBook 4.5 时代。

xmlto作为构建过程的一部分执行 DTD 验证。
这对于具有有效 DTD 的 DocBook 4.5 来说没有问题,但它显然不适用于 DocBook 5,因为没有 DTD 可以充分表达其完整语法。
此外,即使xmlto确实支持RELAX NG验证,这也是不够的,因为它使用基于 libxml2 的xmllint来执行此操作,这在RELAX NG.

幸运的是,有一个简单的方法:让 Asciidoctor 使用它的 DocBook 5 后端并告诉xmlto它跳过验证。
Asciidoctor 自 2013 年 v0.1.4 起支持 DocBook 5,而 xmlto 支持跳过验证的时间可能更长。

我们还需要教授xmlto如何使用命名空间的 DocBook XSLT 样式表,而不是它通常使用的非命名空间的样式表。
通常这些样式表是可互换的,但是非命名空间的样式表有一个错误,导致它们在使用命名空间时不会自动从某些元素中去除空格。
这会在列表元素的开头产生额外的空白,这是不和谐且难看的。

我们可以通过传递一个带有选项的自定义样式表来做到这一点,该-x选项只是通过 URL 导入命名空间样式表。
任何支持 XML 目录的系统都会自动查找此 URL 并引用本地副本,而无需我们知道此本地副本的位置。我们知道任何使用的人xmlto都已经正确设置了目录,因为在验证期间使用的 DocBook 4.5 DTD 也是通过目录查找的。
所有主要的 Linux 发行版都分发必要的样式表并具有内置的目录支持,Homebrew 也这样做,尽管需要设置环境变量以启用目录支持。

如果有人缺乏对目录的支持,则可以xmlto(via xmllint) 从相关 URL 下载样式表,尽管这可能会表现得很糟糕以引起注意。
人们仍然可以选择使用我们发布的预构建文档,所以很高兴这不应该成为障碍。

最后,我们需要过滤掉在 CI 作业中调用 dblatex 时出现的其他样式表中的一些消息。
这个工具很像没有命名空间的 DocBook 样式表剥离命名空间并打印类似的消息。
如果我们允许将这些消息打印到标准错误,我们的文档 CI 作业将失败,因为我们检查标准错误是否有意外输出。
由于dblatex依赖于 Python 2,我们可能需要在未来重新审视它的使用,在这种情况下,这个问题可能会消失,但这可能会延迟到未来的补丁。

我们过滤的最后一条消息libxslt来自现代 Debian 和 Ubuntu。
他们用来实现可重现的 ID 生成的补丁也会打印关于 ID 生成的消息。
虽然这不会影响我们当前的 CI 映像,因为它们使用缺少此补丁的 Ubuntu 16.04,但如果我们升级到 Ubuntu 18.04 或现代 Debian,则会出现这些消息,并且与上述消息一样,会导致 CI​​ 失败。

于 2019-10-06T21:31:04.730 回答
2

jonseymour 的回答在 Mac OS X El Capitan 中帮助了我

导出 XML_CATALOG_FILES=/usr/local/etc/xml/catalog 我这样做

sudo vim ~/.bash_profile

(in an empty line insert)
export XML_CATALOG_FILES=/usr/local/etc/xml/catalog

save & exit

. ~/.bash_profile

解决了

于 2015-11-29T04:02:06.077 回答