tlmgr オンラインアップデータ

system updater

TeX Live は、tlmgr を用いてオンラインアップデートすることが可能です。Debian 系や RHEL 系のディストリビューションに慣れた人は、apt-get / aptitude や rpm / yum のようなディストリビューション固有のアップデータでのシステム管理に慣れていると思いますが、tlmgr はそれら程ではないものの、TeX Live に収録されたユーティリティの version number を管理し、ユーティリティの中で古くなったものをその時点における最新の version に更新することができます。

もし tlmgr がなかったら、僕は TeX Live を /usr/local/texlive 以下にインストールすることに関して、このような document を作成しなかったでしょう。現在用いられている Debian 系や RedHat 系のディストリビューションのほとんど全てが TeX Live を収録していますし、ユーティリティの version 管理などに関しても、システムを構成する他のソフト同様に、そのディストリビューション固有のシステム管理に委ねる方が、どう考えても安全でしょうから。

しかし、tlmgr のおかげで、TeX Live のユーザは、その時点において最もデバッグの行き届いたシステムを使用することができます。そして、ここで取り上げているように、Mac OS X と Linux の双方において、ほぼ同じ感触で管理を行うことができるわけです。

しかし、後述しますが、tlmgr は決して完全なアップデータではありませんし、その使用に際しては、いくつか知っておいた方がいいこともあります。ここでは、それらの問題に関して解説します。

tlmgr の使用法

リポジトリの設定

TeX Live のインストールと path の設定が終わった段階で、tlmgr の設定作業に入ります。まずはオンラインアップデートのリポジトリ(パッケージとそれらの情報を得るための URL)を指定します(この処理は初回だけ必要で、それ以後は変更の必要がない限りは不要です)。

$ sudo tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
リポジトリは、上の例のように mirror.ctan.org を指定しておくと、ネットワーク的に近所のミラーサイトに飛ばされるので便利です。

tlmgr の更新

リポジトリの指定が終わったら、tlmgr 自体のアップデートを行います。この操作は初回と、tlmgr の version up が行われたときに必要です。いずれの場合も、tlmgr の更新なしで通常のアップデートを行おうとすると、

Updates for tlmgr itself are present.
===============================================================================
Please update the package manager first, via either
  tlmgr update --self
or by getting the latest updater for Unix-ish systems:
  http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
and/or Windows systems:
  http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.exe
Then continue with other updates.
===============================================================================
/usr/local/texlive/2021/bin/x86_64-linux/tlmgr: Exiting, please read above warning.
とメッセージが出て、tlmgr のアップデートが要求されます。

tlmgr のアップデートは以下のように行います。

$ sudo tlmgr update --self

システムの更新

以上の準備が整ったら、まずは、

$ sudo tlmgr update --list
としてみて下さい。アップデートが必要とされるパッケージのリストが出てきます。これらのパッケージに対して、
$ sudo tlmgr update --all
でアップデートをかけることができます。これ以後は、定期的にこのコマンドで更新を行えばよいのですが、後述のような問題が生じた場合には、その都度対策する必要があります。現状では、残念ながら「tlmgr は万能ではない」ということを念頭に置いてシステム運営を行う必要があります。

GUI による tlmger の利用

GUI で使いたい方は、事前に Perl/TK(勿論これに必要な Tcl/Tk の環境も)を入れた上で、
$ sudo tlmgr gui
または
$ sudo tlmgr --gui
とすることで GUI の tlmgr が起動します。
tlmgr gui

上のスクリーンショットは日本語で表示されていますが、tlmgr の GUI モードは環境変数 LC_MESSAGES をチェックして、ユーザの通常使用している言語で GUI を表示しようとします。もし他の言語で GUI を利用したい場合は、

$ sudo tlmgr --gui --gui-lang en
のように、--gui-lang オプションで表示言語を指定することもできます。詳細は、tlmgr のオンラインマニュアルを御参照下さい。

tlmgr の問題

上述のとおり、tlmgr は自動的に古くなったパッケージをリストアップし、それらを最新のパッケージに更新してくれます。しかし、その機能は残念ながら万能ではありません。

更新タイミングに起因する問題

tlmgr によるアップデートを行った際に、取得したパッケージの展開に失敗することがしばしばあります。TeX Live のパッケージは tarXZ Utilsでアーカイブされているのですが、失敗するところを見ていると、「これは XZ アーカイブではない」というようなメッセージを散見します。

この原因は現時点で未だ判然としていませんが、レポジトリサーバ上へのアップロードが完了していないファイルをそのまま取得してしまっているのかもしれません。このような場合には、しばらく時間をおいてから、再度アップデートを試みるようにして下さい。

強制的なパッケージ除去に起因する問題

しばしば起きるものとしては、 tlmgr での update 時に以下のようなメッセージが出ることがあります:

skipping forcibly removed package <package_name>

これは、更新がうまく行かなかったために強制的に除去されたパッケージがあることを示しています。このようなメッセージが出た場合は、まず、

$ sudo tlmgr update --self
として tlmgr を更新してから、
$ sudo tlmgr install --reinstall <package_name>
としてインストールを再試行するか、
$ sudo tlmgr update --reinstall-forcibly-removed --all
とします。この時点で、インストールに失敗したパッケージが取得可能であれば、除去されたパッケージの再インストールが行われます。取得に失敗するようであれば、上記コマンドを何度か入力していただくと、インストールに失敗したパッケージの削除が行われ、次回以降、取得可能になった段階でインストールが行われます。

このような状態になったときは、すぐに何度も再試行を行っても、ターゲットのパッケージが取得できない状態が改善されない限りは、インストールやアップデートが完了することはありません。ですから、少し待ってから上記の作業を行うようにして下さい。

それでもダメなときは……

次章『日本語フォントのセットアップ』で、システムの改変に関して言及していますが、そこでは TeX Live のインストールツリーに触れずにシステムを改変するように記述を徹底させています。それは、このような update の失敗が発生して生じる不具合に ad-hoc に対処するために、TeX Live のインストールツリー:

/usr/local/texlive/2021
をばっさり消去して再インストールしても大丈夫な状態を維持する、という意味合いもあります。こういう解決策を薦めたくはないのですが、文書の締切が迫っているときにトラブったときなど、さくっと再インストール→ update で事が済むようにしておくのが……「大人の選択」というものでしょうね。


Go back to the top
Go back to the index

Copyright(C) 2021 Tamotsu Thomas UEDA