mktexlsr は有害だ (mktexlsr Considered Harmful)

最終更新日: 2000-08-20 (公開日: 2000-08-20)


最近の 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ファイルを使った方がいい場合

ls-Rファイルを使わない方がいい場合

注釈

  1. /var/tmp/texfonts/ls-R なるファイルも存在しますが、この ファイルによって苦労することはまずないと思います。
  2. ちなみに、タイトルは Csh Programming Considered Harmful (日本語訳) の真似です。原典は Dijkstra の "Goto Statement Considered Harmful" (CACM vol. 11, no. 3, pp.147-148, March 1968) のようです。

Satoru Takabayashi