最近の TeX システムには mktexlsr なるコマンドが付属していま す。これは /usr/share/texmf (環境によって異なります) ディレ クトリ以下の全ファイルのリストをテキストファイル /usr/share/texmf/ls-R*1 に記 録するためのコマンドです。
ls-R ファイルの目的は、/usr/share/texmf 以下のファイルの検索 (Kpathsea ライブラリによって行われます) を高速化することにあ ります。筆者はこの高速化の仕組みは有害であると主張します。
なぜなら、この高速化によって得られる利益より、弊害の方が大き いと考えられるからです。極端に言えば「百害あって一利しかない」 ということです。
弊害とはこういうことです。/usr/share/texmf 以下に何かファイ ルを追加したとします。このとき、必ず忘れずに mktexlsr を実行 して ls-R ファイルを更新しなければなりません。もし更新を忘れ ると、新しく追加したファイルは TeX システムから見つけられな い、つまり使えないことになります。
ls-R ファイルの更新を忘れたことをすぐに気づけばよいのですが、 そうでなければ、追加したファイルに問題があったのかもしれない、 などと見当違いの原因を追求して無駄に時間を費やすことになりま す。ls-R ファイルの存在を知らない初心者であれば問題はさらに 深刻です。
つまり、ファイルの検索をちょっと速くしようという貧乏くさい高 速化 のおかげで、大きな落とし 穴が作られているのです。昔の遅い計算機ではこのような高速化は 必要だったのかもしれませんが、現代の計算機では必要でしょうか?
筆者は /usr/share/texmf/ls-R ファイルの削除を強くお勧めしま す。ls-R ファイルが存在しなければ、 Kpathseaライブラリは /usr/share/texmf ディレクトリ以下を普通に探索して目的のファ イルを見つけてくれます。
ls-R ファイルの削除によって TeX の処理が遅くなったことを、体感できますか?
まとめ
ls-Rファイルを使った方がいい場合
- 昔の遅い計算機を使っている
- texmf ディレクトリを NFSで共有している
- texmf ディレクトリ以下のファイルが異様に多い
CTAN全体を持っている場合など - texmf ディレクトリ以下にファイルを一切、追加しない
- 自分を信用できる (mktexlsrの実行を忘れない)
ls-Rファイルを使わない方がいい場合
- いまどきの速い計算機を使っている
- texmfディレクトリをローカルに持っている
- texmfディレクトリ以下のファイルがそれほど多くない
- 自分を信用できない (mktexlsr の実行を忘れる)
- mktexlsr に恨みを持っている
注釈
- /var/tmp/texfonts/ls-R なるファイルも存在しますが、この ファイルによって苦労することはまずないと思います。
- ちなみに、タイトルは Csh Programming Considered Harmful (日本語訳) の真似です。原典は Dijkstra の "Goto Statement Considered Harmful" (CACM vol. 11, no. 3, pp.147-148, March 1968) のようです。