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 installation
と TeX 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-2019
と GUI-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 パッケージをインストールする方法から試してみるのが良さそうでした。