ルギア君の戯言

雑多な記事。

texlive と texlive-texmf は分けずに一本化する

・・・どうも texlive と texlive-texmf に分けない方がビルドしやすいようだ

http://twitter.com/lugia_kun/status/12935666832

この理由を説明しようかの。


図解の予定だったんだが 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 だった。

*1:ただ単にルギア君が文面で説明するのが苦手なだけ。

*2:[http://www.momonga-linux.org/docs/Specfile-Guidance/ja/attention.html#files]

*3:それゆえコピーするだけで済むのである

*4:実際にはごく最近の TUG の SVN サーバーから取っているのでバージョンが 2010 になっている

*5:が、texlive-texmf のソースは不明である。