44
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

過去の TeX Live の Docker コンテナ化

Last updated at Posted at 2020-01-04

以前の記事では,最新の TeX Live 2019 に,高品質なオープンソース和文フォントである原ノ味フォントと,新進気鋭の LaTeX 文書ビルドシステム llmk を搭載した Docker コンテナのイメージを作成しました。

それに対し今回は,過去バージョンの TeX Live を保存した Docker コンテナを作成してみました。

使い道

過去バージョンの TeX Live を Docker コンテナとして保存し,いつでも過去バージョンを呼び出せるようにしておくと,次のような場面で役立つはずです。

  • 過去に組版した文書を今コンパイルしたら組版結果があちこち変わり,ページ数が変わってしまった!(←これ結構起こりますよね……😓)元と同じ環境で再度コンパイルしたい……!
  • 最新の TeX Live だとコンパイルが通らない。昔のバージョンではこのソースで通っていたはず。どの時点の TeX Live まではコンパイルが通っていたのかをさかのぼって検証したい。
  • Web 上で「TeX Live 2015 で組版したところ結果が期待通りになりません」といった質問に答えるにあたり,手元で検証して動作を確認したい。

仕様

日本語 TeX 開発コミュニティ (texjp.org) のサーバから取得した,次の各 TeX Live の frozen 版 (scheme-full) をコンテナイメージとして固めました。それぞれ Ubuntu 18.04 ベースです。Ubuntu 18.04 公式レポジトリの Ghostscript 9.26 も同梱・設定されています。

  • TeX Live 2012 (frozen)
  • TeX Live 2013 (frozen)
  • TeX Live 2014 (frozen)
  • TeX Live 2015 (frozen)
  • TeX Live 2016 (frozen)
  • TeX Live 2017 (frozen)
  • TeX Live 2018 (frozen)
  • TeX Live 2019 (frozen)

IPAex フォント埋め込み設定

各バージョンとも,(u)pLaTeX + dvipdfmx/dvips を使った場合にデフォルトで IPAex フォントを埋め込む設定を済ませてあります。

llmk 同梱

TeX Live とは別に,/usr/local/binllmk を入れ,Docker コンテナを引数なしで起動したときに llmk が呼び出されるようにしてあります。(ただし TeX Live 2012 の texlua では llmk を動かせなかったので入れていません。)

Docker Hub レポジトリ

次の各タグでバージョンが区別されています。

  • 2012frozen
  • 2013frozen
  • 2014frozen
  • 2015frozen
  • 2016frozen
  • 2017frozen
  • 2018frozen
  • 2019frozen

使い方

イメージの pull

まず,使いたいバージョンのタグを指定して pull します。

$ docker pull doratex/tlarchive:2015frozen

起動法

コンテナ内では /workdir が作業ディレクトリとなるので,それをカレントディレクトリと bind マウントして使うのを想定しています。

alias tl2015="docker run --rm \
  --mount type=bind,src=\"\$(pwd)\",dst=/workdir \
  --mount type=volume,src=ltfontcache2015,dst=/usr/local/texlive/2015/texmf-var/luatex-cache/generic/fonts/otl \
  doratex/tlarchive:2015frozen"

などとエイリアスを設定しておくと楽でしょう。(--mount type=volume,... の部分は,LuaTeX のフォントキャッシュを ltfontcache2015 というボリューム(名前は任意です)に保存し永続化させるための設定です(詳細は前回の記事を参照)。このエイリアスが設定されている下で

$ tl2015 ptex2pdf -l hoge.tex
$ tl2015 lualatex fuga.tex

などと普通にコンパイルすることも可能です。pLaTeX + dvips + ps2pdf のワークフローを使う場合は,

$ tl2015 /bin/bash -c 'platex hoge.tex && dvips hoge.dvi && ps2pdf hoge.ps'

とすれば OK です。

(u)pLaTeX + dvipdfmx/dvips においては,デフォルトで IPAex フォントを埋め込む設定になっています。

また,引数なしで

$ tl2015

と起動すると,同梱の llmk が動き,カレントディレクトリの llmk.toml に基づきビルドしようとします。

$ tl2015 llmk hoge.tex

のようにして特定のファイルをターゲットにすることもできます。従来の latexmk もインストールされているので

$ tl2015 latexmk hoge.tex

も使えます。

Dockerfile

このイメージを作るために使用した Dockerfile は GitHub レポジトリに置いてあります。年号が違う以外はほぼ同様に見えますが,各バージョンの仕様の違いに応じて以下のように微調整してあります。

  • install-tl-repositoryhttps に対応したのは TeX Live 2017 以降なので,TeX Live 2016 以前では http を使う。
  • TeX Live 2012 では kanji-config-updmap-sys ではなく updmap-setup-kanji-sys を使う。
  • TeX Live 2012 では luaotfload-tool がないので TEXMFDIST/scripts/luaotfload/mkluatexfontdb.lua を直接呼び出す。
  • TeX Live 2012 では llmk が動かないのでインストールしない。

イメージサイズ

scheme-full で TeX Live を丸ごとコンテナ化しているイメージサイズは大きいです。それにしても,こうやって並べてみると,TeX Live の全体サイズが年々肥大化しているのが分かりますね……。

REPOSITORY TAG SIZE
doratex/tlarchive 2012frozen 1.90 GB
doratex/tlarchive 2013frozen 2.03 GB
doratex/tlarchive 2014frozen 2.27 GB
doratex/tlarchive 2015frozen 2.38 GB
doratex/tlarchive 2016frozen 2.68 GB
doratex/tlarchive 2017frozen 2.94 GB
doratex/tlarchive 2018frozen 3.22 GB
doratex/tlarchive 2019frozen 3.74GB

参考文献

44
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?