我的Gentoo系统备份与还原方案
Java 应用程序中文显示及输入的解决方案

Gentoo下如何编译安装xetex-dev

lyanry posted @ 2007年10月15日 17:39 in 我爱用Gentoo with tags gentoo xetex , 7711 阅读

现在已经可以:$ sudo emerge -avt texlive-xetex 来安装 xetex 0.997 了。下文无需再看。


我的系统中安装了texlive 2007套件,该套件中的xetex版本是0.996。最近yindian写了一个zhspacing宏包,可以帮助xetex中文用户处理中文标点间距紧责、中英文字体自动切换等问题。但是zhspacing是利用的xetex-0.997提供的几个特性,因此xetex-0.996是不行的。对于Linux用户,目前只有从xetex svn上迁出 (checkout) 正在开发中的xetex-0.997,并进行编译后才能得到支持zhspacing宏包的xetex。下面讲一讲我的做法。

1 获取xetex源码

首先是获取xetex与xdvipdfmx的svn版本,在终端当前的工作目录下:

$ svn co http://scripts.sil.org/svn-public/xetex/TRUNK xetex-dev
$ svn co http://scripts.sil.org/svn-public/xdvipdfmx/TRUNK xdvipdfmx-dev

这样就将xetex与xdvipdfmx的源码分别下载到当前工作目录的xetex-dev与xdvipdfmx-dev目录下了。

2 编译kpathsea库

因为要编译xetex与xdvipdfmx,需要kpathsea库的支持,但是texlive 2007安装时没有包含kpathsea库,所以也只好自己从texlive 2007光盘镜像中解出kpathsea源码自行编译。

在TeXlive的光盘中的source目录下有source.tar.bz2文件,我们将它解压到临时目录中。解压出来的文件中有一个texk目录,其下有kpathsea目录,这就是kpathsea的源文件。关于如何编译kpathsea库,可以参考kpathsea目录中的INSTALL文件。如果你不想阅读这份英文文档,而且对我也足够信任,可以参考一下我的编译过程。

首先进入kpathsea目录,执行:

$ ./configure

然后执行make,进行编译:

$ make

这时,你可能会得到这样的错误信息:

... ...
/bin/sh: ../libtool: 没有那个文件或目录
make: *** [tex-file.lo] 错误 127

之所以得到这样的错误信息,是因为现在你是在单独编译kpathsea源码,而不是在编译整个的tex工具集。这样在编译kpathsea时,它默认以为libtool工具已经在其父目录下准备好了的,实际上是没有的,所以报错。要想顺利编译kpathsea,就必须在Makefile中申明libtool的正确位置,有两种做法。

第一种做法很简单,在 kapthsea 源码目录下实际上是已经生成了一个 libtool 工具的,只需要将其复制到上一层目录下即可。

第二种做法是使用Gentoo系统中的libtool,做法如下:

  1. 打开kpathsea目录下的Makefile文件;
  2. 找到“LIBTOOL = $(SHELL) $(kpathsea_parent)/libtool”这样一行信息;
  3. 将其修改为“LIBTOOL = $(SHELL) /usr/bin/libtool”

采用以上方法的任一种,完成后,就应该可以顺利编译kpathsea了:

$ make
$ sudo make install

要注意的一个问题就是在安装所编译的 kpathsea 库时,会把一些编译的 kpathsea 相关的程序复制到了 /usr/local/bin 目录下了。由于我们只是想使用 kpathsea 库,而不是这些程序,另外这些程序实际上已经存在你的 TeX Live 目录下了,因此这里可以把 /usr/local/bin 目录下的有关 kpathsea 的程序都清除掉。否则系统默认会优先调用它们,导致你的 TeX Live 系统配置文件的位置有可能访问出错。

3  编译xdvipdfmx-dev

进入xdvipdfmx-dev目录,执行:

./configure --with-ft2lib=/usr/lib/libfreetype.a --with-ft2include=/usr/include/freetype2

之所以要指定freetype2头文件目录与库文件,是因为编译xdvipdfmx需要freetype2库的支持。此处目录的设定只是针对我的Gentoo系统配置而言的。

如果configure成功,就可以进行编译并安装了:

$ make
$ sudo make install

所编译的xdvipdfmx默认是安装在/usr/local/bin目录下的,建议你将它移动到$TEXLIVE/current/bin/i386-linux目录下,覆盖texlive 2007原有的xdvipdfmx。

4 编译xetex-dev

进入xetex-dev目录,执行:

$ ./build-xetex
$ sudo  ./install-xetex
$ rm -rf ~/.texlive2007/texmf-var/web2c/xetex/*

上述第三行代码是删除个人home目录下的上一版本xetex的一些fmt文件,因为它们与新安装的xetex版本不符,而它们的优先权又最高,所以应当都干掉。

5 生成xelatex

$TEXLIVE/current/bin/i386-linux目录中原有的xelatex调用的是xetex-0.996,因此它已经没有存在的必要了,把它干掉。yulewang言:在该目录下建立一个指向xetex的连接,即xelatex:

$ ln -s xetex xelatex

这样在执行xelatex的时候,它会根据argv来获知该load哪个format.

Avatar_small
rex 说:
2007年11月07日 22:15

该文很有用,被我收藏了。谢谢作者的努力。

Avatar_small
thom 说:
2007年11月26日 22:35 您好,我在gentoo里安装了texlive-xetex,发现xetex/xelatex还是0.996版本的。 另外,xetex/xelatex不是texlive-xetex这个包提供的,而是texlive-core这个包提供的。 hanyiny A-T gmail DOT com
Avatar_small
bbcc 说:
2007年12月07日 17:20 我在debian下,apt-get了“libkpathsea-dev”这个包,就搞定kpathsea那一步了,ubuntu应该也可以吧,这样对新手简单一点。
Avatar_small
lyanry 说:
2007年12月07日 17:30 恩。 ubuntu 下我曾经试过,是可以的。
Avatar_small
bbcc 说:
2007年12月07日 19:12 大侠,看看这个错误,编译你给的那个zhspacing示例,字体名换成我有的了,出错如下:好象是kpathsea的问题 (/usr/share/texmf/tex/xelatex/euenc/lm/eu1lmr.fd)kpathsea: Illegal fontname `[lmroman10-regular]:mapping=tex-text': contains '[' ! Font EU1/lmr/m/n/10=[lmroman10-regular]:mapping=tex-text at 10.0pt not loadab le: Metric (TFM) file or installed font not found.
Avatar_small
lyanry 说:
2007年12月07日 21:35 可能是字体没有找到。 用 fc-list 查看一下系统安装的字体名称,多试几个看看。
Avatar_small
norwalk weight loss 说:
2011年11月19日 02:09

Auto installed gentoo are also available in the market just buy them to avoid the problem of the instalation.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter