TeX Live 2017 や 2018 を最新版の 2019 にアップグレードする。

TeX

TeX Live のパッケージをアップデートしようとしたところ、使用している TeX Live のバージョンが古くて更新できない様子だったので、この機に TeX Live をアップグレードしてみました。

TeX Live 2017 と TeX Live 2018 の2つの環境をそれぞれ TeX Live 2019 にアップグレードしてみています。


MacTeX 2018 でセットアップした TeX Live 2018 を macOS で利用していたのですけれど、いつものように tlmgr update --self --all でパッケージをアップデートしようとしたところ、 次のようなメッセージが表示されて、アップデートが行われませんでした。

tlmgr: Remote repository is newer than local (2018 < 2019)

Cross release updates are only supported with

update-tlmgr-latest(.sh/.exe) --update

Please see https://tug.org/texlive/upgrade.html for details.

アップデートできない理由は、どうやら TeX Live が、自分が使用している 2018 版より新しい 2019 版がリリースされて、 それに起因して旧バージョンのアップデート配信が終了したためのようです。 そこで、今回は macOS にインストールしてある TeX Live 2018 をアップグレードして、 最新の TeX Live 2019 にしてみることにしました。

なお、セカンドマシンの MacBook には TeX Live 2017 がインストールされていたので、 そちらも合わせてアップグレードしてみました。手順は TeX Live 2018 からアップグレードする場合と ほぼ同じで 2017 から 2019 へダイレクトにアップグレードできたので、 以下では TeX Live 2018 から TeX Live 2019 へのアップグレードを中心に記載して、 TeX Live 2017 からのアップグレード特有なところは補足として添える ことにします。

はじめに

ところで今回、最初は TeX Live が公式に説明している "コマンドラインを使ってアップグレードする方法" を使って アップグレード作業をしてみたのですけれど、もしかすると MacTeX を使っている場合は "MacTeX インストーラーを使って追加セットアップする方法" が、簡単かつ適切な方法 なのかもしれません。

以下では試した順番通り、最初に "コマンドラインを使ってアップグレードする方法" から紹介しますけれど、 それは参考にしつつ、そのあとに記載する "MacTeX インストーラーを使って追加セットアップする方法" を試してみるのが良いかもしれません。

A. コマンドラインを使ってアップグレードする方法

まずは TeX Live で一般的な、コマンドラインを使ってアップグレードする方法から見ていきます。

この方法は、最後に /Library/TeX を最新版に差し替える方法が見つからなかったのですけれど、 それ以外の /usr/local/bin などの主要なところはアップグレードできたので、 macOS で MacTeX を使っていない場合や、Windows 版の TeX Live をアップグレードする上では適切な方法になってくるかもしれません。

TeX Live アップグレードのための下準備

アップグレードするにあたって、まずは TeX Live がインストールされているフォルダーを複製します。

既定では /usr/local/texlive にインストールされるようになっています。 この中に、現在使用中のバージョン名にあたる 2018 という名前のフォルダーが保存されているので、 これを、次のコマンドを実行して、使用する予定のバージョン名にあたる 2019 という名前で複製します。

cd /usr/local/texlive
sudo rsync -av --exclude='tlpkg/backups/*' 2018/ 2019

これで tlpkg/backups フォルダーを除く全てのファイルが 2019 フォルダー内に複製されました。

この複製作業は、アップグレードに失敗したときに正常な Live TeX を失わないようにするためのようです。 元の 2018 フォルダーの名前を 2019 に変更して tlpkg/backups フォルダーを削除する方法も 考えられますけど、ディスク容量が余程切迫しているとかでなければ、複製して、アップグレードに成功してから削除するのが安心そうです。

TeX Live 2017 から TeX Live 2019 にアップグレードする場合、以前のバージョンに含まれる bin/universal-darwin が 邪魔になるようなので、複製を rsync で作成するときに --exclude='bin/universal-darwin などとして、 新しいバージョン用のフォルダーには含めないようにしておくようにします。

tlmgr のパスを確認する

続いて tlmgr コマンドのアップグレードを行っていきたいところなのですけれど、 そのまま手順を進めようとすると、旧バージョン用の 2018 フォルダーに対してアップグレードを実施してしまう様子でした。

適切にアップグレードを行うためには tlmgr version コマンドを実行したときに、次のように、 新しいバージョンを想定した 2019 フォルダーが tlmgr using installation として表示される必要がありそうです。

tlmgr revision 49885 (2019-01-31 20:27:00 +0100)
tlmgr using installation: /usr/local/texlive/2018
TeX Live (http://tug.org/texlive) version 2018

もしここで tlmgr using installation のパス表示が /usr/local/texlive/2018 みたいになっていると、 少なくとも自分が試してみた感じでは、そちらに対してアップグレードが図られてしまう様子でした。

tlmgr のパスを調整する

適切に 2019 側が更新されるようにしたかったので、 次のようにして tlmgr に登録されているパス情報を変更しておくことにしました。

sudo tlmgr path remove
sudo /usr/local/texlive/2019/bin/x86_64-linux/tlmgr path add

自分の環境では、上記を試みてもパスが変更されない場合があったのですけれど、いったん macOS そのものからログアウトして、 改めてログインし直して tlmgr version を実行してみたところ、 先ほどの tlmgr using installation 表記が、期待していた /usr/local/texlive/2019 に変更されました。

2つの TeX Live 環境をそれぞれアップグレードしてみた印象として、特にこの 新バージョン用のフォルダーを用意した後に、いったん macOS からログアウトする 操作が 新バージョン用のフォルダー側の tlmgr を認識させる上で大事になってくる印象です。

tlmgr revision 49885 (2019-01-31 20:27:00 +0100)
tlmgr using installation: /usr/local/texlive/2019
TeX Live (http://tug.org/texlive) version 2018

TeX Live をアップグレードする

上記の手順で、次に使う予定のバージョン名をつけたフォルダーを用意して、そこにある tlmgr を有効にできたら、そのフォルダー内に移動して、次の手順で tlmgr コマンドのアップグレードを行います。

cd /usr/local/texlive/2019
sudo curl -L http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh -O
sudo sh update-tlmgr-latest.sh -- --upgrade

これが終わったら tlmgr version を実行してみて、tlmgr using installationTeX Live のバージョンが、どちらも期待通りになっていれば、tlmgr のアップグレードは完了です。

tlmgr revision 51217 (2019-05-24 23:47:41 +0200)
tlmgr using installation: /usr/local/texlive/2019
TeX Live (http://tug.org/texlive) version 2019

TeX Live 2017 からのアップグレードの場合

TeX Live 2017 から TeX Live 2019 へのアップグレードの場合、上記のように update-tlmgr-latest.sh を実行したときに 次のようなエラーメッセージが表示されることがありました。

./runme.sh: ok, doing full release upgrade from 2017 to 2019.

./runme.sh: updating /usr/local/texlive/2019/bin/universal-darwin ...

tar: universal-darwin: Cannot stat: No such file or directory

tar: Error exit delayed from previous errors.

./runme.sh: no xz.[universal-darwin][.exe] binary for /usr/local/texlive/2019/bin/universal-darwin in /tmp/selfgz366527961/installer/xz.

これはどうやら TeX Live 2017 に含まれていた bin/universal-darwin パッケージが TeX Live 2018 以降には含まれていない ために、 これをアップグレードしようとしてエラーになっている様子でした。

TeX Live 2019 を利用する場合、このパッケージは不要なので、次のようにしてそれらを削除してから改めてアップグレード用のスクリプトを実行することで、正常にアップグレードが完了しました。

sudo rm -rf /usr/local/texlive/2019/bin/universal-darwin
sudo sh update-tlmgr-latest.sh -- --upgrade

TeX Live をアップデートする

tlmgr のアップグレードが完了したら、あとは普段通り、 次のコマンドを実行することで TeX Live のアップデートが行えます。

sudo tlmgr update --self --all

これで、アップグレードに関する全ての手続きが完了しました。

以前のバージョンを格納した 2018 フォルダーは削除して問題ないはずですけれど、 念のため、既存の主要な TeX ファイルをビルドできることを確認してから削除するのが良さそうです。

アップデートに失敗した場合

ところでこのとき、次のエラーが発生してアップデートできないことがありました。

tlmgr: backupdir as set in tlpdb

/usr/local/texlive/2019/tlpkg/backups

is not a directory.

tlmgr: An error has occurred. See above messages. Exiting.

これは、新しいバージョン用に 2019 フォルダーを作成する段階で、 バックアップファイルを除外するのと一緒に tlpkg/backups フォルダーそのものを 削除したのが原因だった様子でした。

このエラーが発生した場合は、次のコマンドを実行して tlpkg/backups フォルダーを 作成してあげることで、正常にアップデートできるようになりました。

sudo mkdir tlpkg/backups

TeX Live に関するパスを調整する

上記の手順で TeX Live を 2019 にアップグレードしたことで、使用する TeX システムのパスが変更になりました。 ただ、依然として旧 TeX Live のパスを参照しているものが各所にあるので、そのあたりを調整しておきます。

/usr/local/bin

まず、規定で利用される TeX 関連のバイナリーが /usr/local/bin にシンボリックリンクで用意される様子なのですけれど、 これらについては上記の手順だけで最新のものに更新される様子でした。

確認方法は、たとえば ls -l /usr/local/bin/tlmgr とか ls -l /usr/local/bin/platex などを実行して、 リンク先が /usr/local/texlibe/2019/bin/x86_64-darwin/tlmgr みたいになっているかで判断できます。

このあたりは、もしかすると texlinks というコマンドがあって、これに -v オプションを添えて実行すると、 これらのシンボリックリンクを作成しようとする様子が見て取れるので、この辺りを使って自分で更新することもできるかもしれません。

もう少し具体的に確認したい場合は、例えば platex コマンドをパス指定なしで実行したときに、どの TeX Live に関連している pLaTeX かが表示されるので、 それで優先されるバージョンがどれになっているかを確認することもできます。

This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.euc) (TeX Live 2019) (preloaded format=platex)
 restricted \write18 enabled.

/Library/TeX/texbin のパスを変更したいけれど⋯

ところで TeX を利用するときに /Library/TeX/texbin フォルダー内のコマンドを使用することがありますけれど、 この参照先は Distributions/Programs/texbin になっていて、これを辿ると Distributions/.DefaultTeX/Contents/Programs/texbin に着き、 そこからさらに x86_64 へのリンクを経て /usr/local/texlive/2018/bin/x86_64-darwin に辿り着く様子でした。

このリンク情報は システム環境設定にある TeX Destribusion というアプリで設定できるらしい のですけれど、自分の環境ではそのアプリを見つけられませんでした。

手動で変更するにも、中にはシンボリックリンクがたくさんあるため、できれば何か TeX Live が提供しているツールで変更したいところです。 探してみた感じでは、もしかすると TeX Live ユーティリティー アプリがそれに近い役目を持っているかもしれないですけど、 これを使って手動で入れた新バージョンを直接 /Library/TeX に割り当てることはできなさそうです。

B. MacTeX インストーラーを使って追加セットアップする方法

MacTeX を使って TeX Live をインストールしてあった場合、もしかするとこの方法がもっとも適切なアップグレードの方法なのかもしれません。

コマンドラインでアップグレードする中で見つけた TeX Live ユーティリティー アプリにもアップグレードの機能があるようだったのですけれど、それに従って進めてみようと思っても、結局のところ MacTex-2019 をインストールする方向に話が進んでいく様子です。 たしかに /Library/TeX/Distributions という仕組みがあることを踏まえると、 別バージョンの MacTeX を新たにインストールするのが自然なようにも感じます。

実際にこの方法を使ってみると、これまでのコマンドラインでアップグレードした場合と同等の環境に整えてくれた上で、おそらく MacTeX 環境特有の /Library/TeX による複数バージョン管理周りも整えてくれる印象でした。

MacTeX 2019 を改めてインストールする

MacTeX 2019 のインストーラーは MacTex-2019 のサイトからダウンロードできます。 そしてそれを実行すると macOS らしいインストーラーが起動します。

今回は Ghostscript は brew でセットアップ済みなので、途中に表示されるカスタムセットアップのオプションで、それ以外の TeXLive-2019GUI-Applications をセットアップしてみます。

インストール完了

そうしたところ、インストール先の /usr/local/texlive フォルダーには、これまで使用していたバージョン用のフォルダーはそのまま、新しいバージョン用の 2019 が新たに作成されました。

また、今回の課題だった /Library/TeX/texbin 配下で提供されるバイナリーも /usr/local/texlive/2019 のものに置き換わってくれました。

ここで提供される TeX のバージョンは /Library/TeX/Distributions で決定されている様子ですけれど、ここも、これまで存在しなかった TeXLive-2019.texdist が生成されて、 適切にバージョンアップされた様子が窺えます。

Mac 環境でヒラギノフォントを割り当てる

maacOS 環境の場合、標準フォントにヒラギノフォントを割り当てると、TeX の最終出力がより綺麗に仕上がる印象がします。 TeX Live をアップデートしたあとは、標準フォントが IPA フォントに戻ってしまう様子だったので、それも改めてアップデートしておきます。

TeX Live を最新版にする

標準フォントをヒラギノフォントにするにあたって、まずは TeX Live を最新版にアップデートしておく必要がありました。 そうしておかないと、作業の途中でエラーになる場合がある様子です。

sudo tlmgr update --all --self

システムフォントを差し替える準備

続いて、ヒラギノフォントに差し替える準備を行うにあたって、パッケージのインストールを行っておくと良いようです。

sudo tlmgr repository add http://contrib.texlive.info/current tlcontrib
sudo tlmgr pinning add tlcontrib '*'
sudo tlmgr install japanese-otf-nonfree japanese-otf-uptex-nonfree ptex-fontmaps-macos cjk-gs-integrate-macos

そして TeX Live 周りのリンク情報を更新しておきます。

sudo cjk-gs-integrate --link-texmf --cleanup
sudo cjk-gs-integrate-macos --link-texmf

sudo mktexlsr

ヒラギノフォントに差し替える

こうして準備が整ったら、ヒラギノフォントを埋め込むためのマップファイルを作成すれば完了のようです。

マップファイルは macOS High Sierra 以前の場合は hiragino-highsierra-pron を指定して、 それより前の macOS の場合は hiragino-elcapitan-pron を指定します。 これは macOS で、ヒラギノフォントの TrueType フォントファイルへのまとめ方が変更されたことが影響している様子でした。

sudo kanji-config-updmap-sys --jis2004 hiragino-highsierra-pron

ヒラギノフォントに差し替えられたかを確認するには

ヒラギノフォントに正常に差し替えられたかは、TeX で PDF を作成して、その埋め込みフォントを確認するのが良さそうです。

埋め込みフォントの確認は、PDF を Adobe Reader DC で開いて ファイル プロパティ から 文書のプロパティ を開きます。 ここのフォント タブのところを見ると、その文書で使用しているフォントを確認することができます。

IPA フォントが埋め込まれている場合は、ここでIPAexGothic(埋め込みサブセット)IPAexMinchi(埋め込みサブセット) というような表記が現れます。 ヒラギノフォントが埋め込まれている場合には、ここがHiraKakuProN-W6(埋め込みサブセット)HiraMinProN-W3(埋め込みサブセット) というような表記で登場します。

まとめ

もしかすると MacTex でセットアップした TeX Live の場合、最初に実施したコマンドライン中心のアップグレード作業をしないで、新しいバージョンの MacTeX をダウンロードして入れるのが、自然で適切なアップグレードの方法なのかも しれません。

コマンドライン中心で実施する方法も何かの役に立つかもしれないので書き残しておきますけれど、通常であれば最新版の MacTex パッケージをインストールする方法から試してみるのが良さそうでした。