・・・どうも texlive と texlive-texmf に分けない方がビルドしやすいようだ
この理由を説明しようかの。
図解の予定だったんだが inkscape が起動しないので、文面で説明します*1。
では、始めようか。
まず、1つめは、 texlive のソース texlive-20091107-source.tar.xz をビルド・インストールすることでインストールされるファイルと、texlive-texmf のソース texlive-20091107-texmf.tar.xz をインストール(実際にはほぼコピーだけ)することでインストールされるファイルは Conflict している。そのため、分けるとなるとどちらかで抜かなければいけない。一緒ならただ単に上書きされるだけ。どちらを先にやるべきか、が重要になるが、Conflict しているのは基本的には man のファイルのため、ほとんど影響はないと思われる。
2つめは、tetex では (ptetex のため?)
make c macro otf babel
(411行目、@ rev.43154) の中で fmtutil-sys が実行される(か、元から .fmt ファイルが提供されている)が、ptexlive の方法にしたがってビルドする場合は DVD が必要となる。もちろん焼く必要は無く、-o loop
で mount すればよいが、Momonga Linux では特に許可してない場合 root でなければいけない。OmoiKondara では su してビルドも可能だが、やはりしないほうがいいだろう。先ほどの texlive のソースには fmtutil-sys を実行するのに必要な hoge.ini が入っておらず、texlive-texmf の方に入っているため、各サブパッケージのインストール時に、それが必要とする ini ファイルを含む texlive-texmf のサブパッケージを Requires: に追加しておいて %post で fmtutil-sys を実行することも不可能ではない。spec ファイルでは %ghost としておけば良いのだろう*2。だが、texlive-texmf の上に示したソースではすでに全て pdftex など適切な typesetter で処理されて適切に配置されて保存されているが*3、ptex-texmf および奥村先生のマクロパッケージは dtx と ins で配布されているので platex で処理しなければいけない。ということは %install の中で fmtutil-sys を実行して platex が使える状態にしておかないといけないわけだ。
じつは Fedora 13 にマージされると思われる(?) TeX Live 2009 *4 も texlive と texlive-texmf は分けられていなかった*5。
余談
spec の中で
# I think this is not good idea. export TEXMF=%{buildroot}%{_texmfdir} export TEXMFSYSVAR=%{buildroot}%{_texmfvardir} export TEXMFSYSCONFIG=%{buildroot}%{_texmfconfigdir} export PATH=%{buildroot}%{_bindir}:${PATH} export LD_PRELOAD=%{buildroot}%{_libdir}/libkpathsea.so.5:%{buildroot}%{_libdir}/libptexenc.so.2
なんて言うのは気分的に気持ち悪かったんだが、あとで tetex.spec を見たら
export TEXMFMAIN=%{buildroot}%{texmf} export TEXMFDIST=%{buildroot}%{texmfdist} export TEXMFSYSVAR=%{buildroot}%{texmfvar} export TEXMFSYSCONFIG=%{buildroot}%{texmfconfig} export PATH=%{buildroot}%{_bindir}:$PATH export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
ってあって(444行目〜)、仕方ないのかな〜と思ったw
そうか LD_PRELOAD じゃなくて LD_LIBRARY_PATH にすればバージョン番号変わっても良いのか。
P.S. inkscape
$ inkscape inkscape: error while loading shared libraries: libperl.so: cannot open shared object file: No such file or directory
trunk バイナリの最新の状態。texlive のビルドに必要な teckit 以外は特に入ってないし、抜いてもない・・・はず。手元ではリビルドすれば OK だった。