3. 安装软件包

3.1. 安装之前

以下部分介绍如何安装下载的软件包来设置你的 DocBook SGML 环境。示例可能引用旧版本的软件包,你应该修改示例并使用最新版本。

对于最新、最权威的信息,始终阅读你正在安装的软件包附带的文档。 通常,你会找到一个README和一个INSTALL文件,解压缩存档后。

由于软件包一直在变化,下面的详细说明可能无法完全按显示的那样工作。 但是,这些说明应该仍然让你大致了解使 DocBook SGML 工作的步骤。

3.2. 安装 OpenJade

3.2.1. openjade

这是你需要做的,但请记住阅读 OpenJade 附带的文件,看看是否有你想要为你的平台特别做的事情
		cd /usr/local
		tar -xvzf ~/openjade-1.3.tar.gz
		cd openjade-1.3
		./configure --prefix=/usr/local/openjade-1.3
		make
		make install

		# Once installed, the objects etc. can be deleted.
		make clean
	
安装会将库放入 /usr/local/openjade-1.3/lib,因此你可能想将其添加到 /etc/ld.so.conf 并运行 ldconfig。将 /usr/local/openjade-1.3/bin 添加到你的$PATH.

你可能想知道为什么我将 openjade 源代码直接转储到/usr/local。 作者在使用 openjade 的安装时遇到了一些问题。 但是,对于较新版本的 OpenJade,你可以尝试使用一个标准(/usr/local/src)位置来放置 openjade 源代码包,并使用一些其他的 prefix 安装位置,看看效果如何。

3.2.2. jadetex & pdfjadetex

如前所述,jadetexpdfjadetex 是与 OpenJade 打包在一起的 TeX 宏。 可以在 /usr/local/openjade-3.1/dsssl 中找到它们。 Frank Atanassow Christoph 准备了一个安装这些宏的方便指南,可以在以下位置找到:

ftp://ftp.dante.de/tex-archive/macros/jadetex/install.pdf

http://reaster.com/installjadetex.pdf

以下内容基于 install.pdf 中的说明

3.2.2.1. 创建 hugelatex(如果需要)

jadetexpdfjadetex tex 宏需要比常规运行的 tex 更多的内存。 默认的 tex 内存限制配置通常太有限。 可以编辑 tex 配置文件texmf.cnf并增加限制 tex 内存使用的变量。 但是,与其只编辑texmf.cnf文件以允许 tex 在所有实例中拥有更多内存,不如创建一个自定义的 tex 上下文,称为 hugelatex。 如果你的系统上已经配置了 hugelatex,则可以跳过此子部分 (which hugelatex)。

验证是否安装了有效的 TeX 并找到其目录
		bash$ which tex
		/usr/share/texmf/bin/tex
		bash$ kpsewhich -expand-var='$TEXMFMAIN'
		/usr/share/texmf
		bash$
	

使用 which 应该可以找到 tex 程序的位置。 如果找不到,你可能需要安装 teTeX,然后返回此处。 kpsewhich 是 teTeX 附带的实用程序,如果一切顺利,它会找到主 tex 目录。

现在texmf目录已知,可以开始安装
		cd /usr/share/texmf
		cd tex/latex
		cp -r config config-temp
		cd config-temp
		tex -ini -progname=hugelatex latex.ini
		mv latex.fmt hugelatex.fmt
		mv hugelatex.fmt /usr/share/texmf/web2c
		cd ..
		rm -r config-temp
		cd /usr/share/texmf/bin
		ln -s tex hugelatex
		cd /usr/share/texmf/web2c
	
web2c目录包含texmf.cnf配置文件。 制作此文件的备份:cp texmf.cnf texmf.cnf.orig。 使用你喜欢的任何编辑器编辑文件,并在末尾添加以下行
		% hugelatex settings
		extra_mem_top.hugelatex = 8000000
		extra_mem_bot.hugelatex = 8000000
		hash_extra.hugelatex = 15000
		pool_size.hugelatex = 5000000
		string_vacancies.hugelatex = 45000
		max_strings.hugelatex = 55000
		pool_free.hugelatex = 47500
		nest_size.hugelatex = 500
		param_size.hugelatex = 1500
		save_size.hugelatex = 5000
		stack_size.hugelatex = 15000

		% jadetex
		extra_mem_top.jadetex = 8000000
		extra_mem_bot.jadetex = 8000000
		hash_extra.jadetex = 20000
		pool_size.jadetex = 5000000
		string_vacancies.jadetex = 45000
		max_strings.jadetex = 55000
		pool_free.jadetex = 47500
		nest_size.jadetex = 500
		param_size.jadetex = 1500
		save_size.jadetex = 5000
		stack_size.jadetex = 15000

		% pdfjadetex
		extra_mem_top.pdfjadetex = 8000000
		extra_mem_bot.pdfjadetex = 8000000
		hash_extra.pdfjadetex = 20000
		pool_size.pdfjadetex = 5000000
		string_vacancies.pdfjadetex = 45000
		max_strings.pdfjadetex = 55000
		pool_free.pdfjadetex = 47500
		nest_size.pdfjadetex = 500
		param_size.pdfjadetex = 1500
		save_size.pdfjadetex = 5000
		stack_size.pdfjadetex = 15000
	
在这里,我们已经预先为 jadetexpdfjadetex 添加了条目,我们将在下面进行设置。 如果你遇到问题,你可以随意使用这些内存设置。

设置好 hugelatex 后,如上所述,可能需要调用 texhash 程序才能使其工作
		root# texhash
		texhash: Updating /usr/share/texmf/ls-R...
		texhash: Updating /var/cache/fonts/ls-R...
		texhash: Done.
		root#
	

3.2.2.2. jadetex & pdfjadetex

设置 jadetexpdfjadetex 类似于 hugelatex
		cd /usr/local/openjade-1.3/dsssl
		make -f Makefile.jadetex install
		# make creates and installs the .fmt
		# files to /usr/share/texmf/web2c

		# Now create symlinks ...
		cd /usr/share/texmf/bin
		ln -s tex jadetex
		ln -s pdftex pdfjadetex

		# Finally, run texhash.
		root# texhash
	
Makefile使用 hugelatex,因此必须已经设置了 hugelatex。 当 tex 作为 hugelatexjadetexpdfjadetex 运行时,它会从argv[0]在环境中获取其程序名称(上下文)。 然后,它扫描texmf.cnf, 并使用它找到的任何特定于上下文的设置。 格式 (.fmt) 文件在/usr/share/texmf/web2c中也基于上下文加载。

jadetex 命令采用从 openjade 生成的 tex 文件,并输出一个dvi文件。 pdfjadetex 采用从 openjade 生成的tex文件,并输出一个pdf文件。 dvips 程序采用dvi文件并输出一个 PostScriptps文件,你可以将其发送到你的打印机或使用 ghostscript gs 查看。

3.3. DocBook SGML DTD

3.3.1. 解压 DocBook SGML DTD

DocBook DTD 只是一些sgml文本文件,因此无需编译。 只需要在某个地方 unzip 它们
		# DocBook DTD V4.1 in
		# /usr/local/share/sgml/docbook/4.1

		cd /usr/local/share
		mkdir sgml; cd sgml
		mkdir docbook; cd docbook
		mkdir 4.1; cd 4.1
		unzip -a ~/docbk41.zip
	
如果你安装doctools-1.2从 XFree86 发行版中,它会将一些旧版本的 DocBook DTD 放在2.4.1/3.0/的子目录中docbook.

不同版本的 DocBook DTD 之间存在一些差异。xxissues.txt文件记录了这些问题。 标签在版本之间被添加、删除和重命名。

如果你需要使用 DocBook DTD V3.1,它可以从下载 V4.1 的同一位置获得。 V3.1 使用了很多,所以最好获取它并将其安装在3.1/子目录中。

3.3.2. 解压 ISO8879 实体

对于每个解压的 DocBook DTD 版本,进入其目录并解压iso8879-entities.tar.gz文件
		cd /usr/local/share/sgml/docbook/4.1
		tar -xvzf ~/iso8879-entities.tar.gz
	
在每个 DocBook 目录中,应该有一个docbook.cat文件或一个catalog文件,或者两者都有。 如果两者都存在,则它们可能相同。 如果只有docbook.cat存在,继续创建一个符号链接
		# If needed ...
		cd /usr/local/share/sgml/docbook/4.1
		ln -s docbook.cat catalog
	

3.4. DocBook DSSSL

DocBook DSSSL 的安装,适用于所有版本的 DocBook,只是一个 unzip 到某个地方的问题。
		cd /usr/local/share/sgml
		mkdir dsssl; cd dsssl
		unzip -a ~/db160.zip

		# If you downloaded the ldp.dsl stylesheet
		# customization, copy it to ...
		cd docbook
		cp ~/ldp.dsl html
		cp ~/ldp.dsl print
		# Copy into both directories.
	
除了设置$SGML_CATALOG_PATH后面讨论的内容外,这就是安装 DSSSL 的全部内容。 不要忘记理顺这些解压文件的文件模式和所有者/组 - 它们通常会被打乱并且不合适。

3.5. SGMLtools-Lite

如果你喜欢,你可以安装 SGMLtools-Lite,但它是可选的。 它的安装是标准的
		cd /usr/src
		tar -xvzf ~/sgmltools-lite-3.0.2.tar.gz
		cd sgmltools-lite-3.0.2
		./configure
		make install
	
这会将 sgmltools python 脚本安装到/usr/local/bin。 请注意,它使用 python,因此如果你没有它,那么这个包是无用的。

要使 sgmltools 脚本工作,必须进行一项调整,即必须编辑它并设置 openjade 的路径:vi `which sgmltools`。 查阅其文档以了解更多信息。

3.6. htmldoc

3.6.1. 二进制文件

最好为你平台下载一个 htmldoc 的二进制发行版。 安装很简单:只需解压缩它并运行设置。 阅读包中的文档以获取更多信息。

3.6.2. 源代码

如果你下载了源代码,你还需要 Fast Light Tool Kit,否则它将无法链接

http://www.fltk.org/

安装是 autoconf 风格。 只需运行 configure 脚本、makemake install。 如果一切顺利,它将安装在/usr/bin.

3.6.3. ldp_print

当从html文件中生成输出时,htmldoc 程序存在(或曾经存在)一些小故障。 例如,项目符号项未正确呈现,阴影区域并非总是阴影。

为了解决这个问题,可以从 LinuxDoc.org 获得一个 perl 脚本 (ldp_print)。 lpd_print 脚本处理来自 openjade 的 nochunkshtml文件,然后在其上运行 htmldoc 以生成正确呈现的pdfps.

Tip

获取它!

		tar -xvzf ldp_print.tar.gz
		cd ldp_print

		# Copy the lib somewhere where perl looks.
		cp fix_print_html.lib /usr/lib/perl5/site_perl

		cp ldp_print /usr/local/bin
	
查看脚本,以防你需要为你的系统更改其中的行。 也许有一天 htmldoc 的错误将被修复,并且不再需要此脚本。

3.7. DocBook2X 和 SGMLS.pm (sgmlspl)

3.7.1. sgmlspl

在 DocBook2X 中的 spec 文件可用之前,必须安装 perl 版本 5 的SGMLS.pm模块,假设已安装 perl 版本 5。 此模块的安装不像大多数 perl 模块安装那样自动化。 它使用了一个Makefile在运行 make 之前必须先编辑。
		cd /usr/src
		tar -xvzf ~/SGMLSpm-1.03ii.tar.gz
		cd SGMLSpm

		# Edit Makfile
		vi Makefile
		# In the user options of the Makefile
		# set everything correct for
		# your system.
		# Example:
		#	PERL = /usr/bin/perl
		#	BINDIR = /usr/local/bin
		#	PERL5DIR = /usr/lib/perl5/site_perl
		#	MODULEDIR = ${PERL5DIR}/SGMLS
		#	SPECDIR = ${PERL5DIR}
		#	HTMLDIR= /usr/local/apache/htdocs

		make install
	
sgmlspl 被复制到 /usr/local/bin。

3.7.2. docbook2X (docbook2man-spec.pl)

DocBook2X 不包含要编译或 install 的程序,尽管它有一些你可能想查看的脚本,因此要做的就是将它解压到某个地方。
		cd /usr/local/share/sgml
		tar -xvzf ~/docbook2X-0.6.0.tar.gz
		cd docbook2X
	
在解压的目录中是docbook2man-spec.pl以及一个用于修复一些问题的补丁文件。 应用补丁是可选的,但建议这样做。
		patch docbook2man-spec.pl docbook2man-spec.pl.patch
	
稍后,在使用 DocBook中,你将看到如何使用 sgmlspldocbook2man-spec.pl<refentry>DocBook 文档生成 man 页面。

3.8. $SGML_CATALOG_FILES

$SGML_CATALOG_FILES环境变量被 openjade(和其他 SGML 软件)用于定位 DTD 和 DSL(样式表)。 SGML 软件无法在找不到这些文件的情况下运行,这些文件已被解压到各个目录。 鉴于到目前为止的设置,以下是如何$SGML_CATALOG_FILES可以在/etc/profile:
##########################################################################################
# SGML DocBook - openjade sgmltools-lite
JADE_HOME=/usr/local/openjade-1.3
SGML_SHARE=/usr/local/share/sgml

PATH=$PATH:$JADE_HOME/bin

# DSSSL stylesheets
#       Norman Walsh's Modular DocBook Stylesheets
SGML_CATALOG_FILES=$SGML_SHARE/dsssl/docbook/catalog
#       OpenJade stylesheets
SGML_CATALOG_FILES=$SGML_CATALOG_FILES:$JADE_HOME/dsssl/catalog
#       sgmltools-lite's stylesheets
SGML_CATALOG_FILES=$SGML_CATALOG_FILES:$SGML_SHARE/stylesheets/sgmltools/sgmltools.cat

# DocBook DTD
#       From OASIS-Open.org
SGML_CATALOG_FILES=$SGML_CATALOG_FILES:$SGML_SHARE/docbook/3.1/catalog
SGML_CATALOG_FILES=$SGML_CATALOG_FILES:$SGML_SHARE/docbook/4.1/catalog
#       These old ones were installed with doctools-1.2 from XFree86.org
SGML_CATALOG_FILES=$SGML_CATALOG_FILES:$SGML_SHARE/docbook/2.4.1/catalog
SGML_CATALOG_FILES=$SGML_CATALOG_FILES:$SGML_SHARE/docbook/3.0/catalog

# sgmltools-lite catalogs for LinuxDoc
SGML_CATALOG_FILES=$SGML_CATALOG_FILES:$SGML_SHARE/dtd/sgmltools/catalog

export JADE_HOME SGML_SHARE PATH SGML_CATALOG_FILES
##########################################################################################
	
中设置。 保存你的profilelogout 然后重新登录以生效。

安装完成! 在下一节中,我们将测试安装并 convert 一些测试 DocBook 文件。