インストーラープロファイルを用いてTeX Liveをインストールしよう

これは「TeX & LaTeX Advent Caleandar 2017」の18日目の記事です。
17日目は、uwabamiさんでした。19日目は、doraTeXさんです。

みなさん、#テフライブ! していますか?

この記事では、「TeXで作る環境」ということで、TeX Live公式のコマンドラインによるインストーラ install-tl コマンドに、インストーラープロファイルを与えることで、自分好みの構成でTeX Live環境をインストールするための解説をしてみます。

install-tl コマンドからインストールすると、

  • インストーラープロファイルを与えることで、TeX Liveのインストールを自動化できます。
  • Windows、macOS、Linux、FreeBSD、どのOSでも同じ処理、同一構成でインストール可能です。
  • (Unix系OS上から)他のプラットフォームのTeX Live環境も構築可能です。

install-tl コマンドに、インストーラープロファイルを与えて TeX Live をインストール

ここでは、以下の条件でTeX Live 2016 frozenをインストールするとします。

  1. /opt/texlive/2016 にインストール
  2. フル構成インストール(scheme-full
  3. Mac OS Xバイナリのみインストール(x86_64-darwin
  4. ソースとドキュメントを除く(texmf-dist/src, texmf-dist/doc
  5. その他オプションを調整

1. インストーラープロファイルを作成

この条件をみたすインストーラープロファイルを texadvent2017-tl16frozen.profile としてまとめました。

# texadvent2017-tl16frozen.profile
# 
# $ wget https://texlive.texjp.org/2016/tlnet/install-tl-unx.tar.gz
# $ sudo mkdir -p /opt/texlive/2016/tlpkg
# $ sudo cp /some/where/texadvent2017-tl16frozen.profile /opt/texlive/2016/tlpkg/texlive.profile
# $ sudo install-tl-20170413/install-tl \
#     --profile /opt/texlive/2016/tlpkg/texlive.profile \
#     --repository http://texlive.texjp.org/2016/tlnet
#
## 
selected_scheme scheme-full
#selected_scheme scheme-minimal
#collection-langjapanese 1
#collection-latexextra 1
#collection-xetex 1
#collection-luatex 1
#collection-fontsrecommended 1
#collection-texworks @@WITH_WINDOWS@@
#collection-wintools @@WITH_WINDOWS@@
#
## 
TEXDIR /opt/texlive/2016
TEXMFLOCAL /opt/texlive/texmf-local
TEXMFSYSCONFIG /opt/texlive/2016/texmf-config
TEXMFSYSVAR /opt/texlive/2016/texmf-var
TEXMFHOME ~/texmf
TEXMFCONFIG ~/.texlive2016/texmf-config
TEXMFVAR ~/.texlive2016/texmf-var
#
## set platform(s)
binary_x86_64-darwin 1
binary_x86_64-linux 0
binary_win32 0
#
## texmf-dist/doc, texmf-dist/src
option_doc 0
option_src 0
#
## set other options
in_place 0
option_adjustrepo 0
option_autobackup 0
option_backupdir tlpkg/backups
option_desktop_integration 0
option_file_assocs 0
option_fmt 1
option_letter 0
option_menu_integration 0
option_path 0
option_post_code 1
option_sys_bin /usr/local/bin
option_sys_info /usr/local/share/info
option_sys_man /usr/local/share/man
option_w32_multi_user 1
option_write18_restricted 1
portable 0

2. インストーラーをダウンロード

インストーラーをダウンロードします。
TeX Live YYYYをインストールする場合は、
https://texlive.texjp.org/YYYY/tlnet/install-tl-unx.tar.gz
をダウンロードします!(ココ、テストに出ます!)
実際に、Webブラウザから https://texlive.texjp.org/ 以下を辿ってもよいですね。

$ wget https://texlive.texjp.org/2016/tlnet/install-tl-unx.tar.gz

3. インストーラー install-tl を実行

インストールプロファイル texadvent2017-tl16frozen.profile を指定の場所に texlive.profile として置きます1

$ sudo mkdir -p /opt/texlive/2016/tlpkg
$ sudo cp /some/where/texadvent2017-tl16frozen.profile
/opt/texlive/2016/tlpkg/texlive.profile

Goooooooooooooooooooooo!!!

$ cd install-tl-20170413
$ sudo ./install-tl \
    --profile /opt/texlive/2016/tlpkg/texlive.profile \
    --repository http://texlive.texjp.org/2016/tlnet

以上です、簡単ですね!

このあと、後処理として、以下の設定を行います。

  • 環境変数 PATH(Windowsでは %PATH%
  • Unix系OSで OSFONTDIR(Windowsでは、初めから C:\WINDOWS\Fonts を見に行くようになっています)
  • 和文フォントの設定
  • tltexjp リポジトリの追加
  • その他

この各種後処理も色々と大事なことがありますけれども、今回は割愛いたします。

各事項の補足

tlnet リポジトリの場所

TeX Live historic ftp://tug.org/texlive/historic/ には、TeX Live公式のTeX Live YYYY frozenが保存されています。このhistoricを --repository で指定してもよいのですが…、当然のごとく、日本国内からインターネット上の距離が遠い場所にあります。

そこで、tlnetリポジトリ場所は、最新バージョンに対して、CTANミラー http://mirror.ctan.org/systems/texlive/tlnet (JAISTなどのCTANミラーを直接してしてもOK) を、過去にリリースされたTeX Live YYYYに対して、国内にある日本語TeX開発コミュニティ側の http://texlive.texjp.org/ をオススメいたします2

また、前述の例では、 --repository に日本語TeX開発コミュニティが運営しているサーバのURLを与えていますが、手元に適当なtlnetリポジトリを用意すれば、 --repository /some/where/tlnet のように与えることができます。

インストール場所: 1. /opt/texlive/YYYY にインストール

texadvent2017-tl16frozen.profile をご覧いただくと容易に分かるように、どのようなディレクトリ構成でもインストールできます3

今回、あえて「/opt/texlive/YYYY にTeX Live YYYYをインストールする」というプロファイルにしました。
たとえば、標準の /usr/local/texlive/YYYY に TeX Live YYYYをインストールする場合は、このプロファイルに対して

s|/opt/texlive|/usr/local/texlive|

の置換で十分です。

標準のTeX Directory Structure (TDS)を崩さなければ、kpath searchから自動的に TEXDIR が分かりますので、一度インストールした /opt/texlive/YYYY を丸ごと、 /usr/local/texlive/YYYY などに丸ごと持っていっても問題なく動作します。ここらへんは、 texmf.cnf のTDSに関する解説が別途必要になります(この解説も今回は割愛いたします)。

さらにTeX Live 2016にかぎらず、TeX Live YYYYをインストールする場合は、

https://texlive.texjp.org/YYYY/tlnet/install-tl-unx.tar.gz

をダウンロード、 texadvent2017-tl16frozen.profile2016YYYY に置換すれば十分です。

インストール構成: 2. フル構成インストール(scheme-full

通常、TeX Live YYYYの全パッケージのをインストールしておくのが無難です。

最近のTeX Live YYYYはおおよそ 4.5GBほどあります。このうち、

  • TEXDIR/texmf-dist/fonts: 2GB
  • TEXDIR/texmf-dist/doc: 2GB
  • TEXDIR/texmf-dist/src: 250MB

ほどあります。

それゆえ、単にビルド専用でTeX Liveをインストールしたり、どうせググるからdocもsrcも要らないっていう場合は、 foo-doc, foo-src のパッケージを除けばよいです(後述)。

また、フル構成 scheme-full を選ばずに、最小構成 scheme-minimal から最低限の日本語TeX環境を構築したい場合など、以下のような感じに変えてもよいでしょう。

selected_scheme scheme-minimal
collection-langjapanese 1
...

設定可能なscheme名やcollection名は、TeX Liveバージョンで大幅に変わることがないものの、TeX Live YYYYが変わることで使えなくなるものもありますので、要確認です(後述)。

プラットフォームの指定:3. Mac OS Xバイナリのみインストール(x86_64-darwin

通常、インストーラー install-tl がOSを自動判別して、最低限のバイナリが1つだけ選択されます。
最近の TeX Liveであれば、Mac OS X上で install-tl を動かすと、自動的に x86_64-darwin が選択されます。

実は、Mac OS X上から Linuxバイナリ x86_64-linux、Windowsバイナリ win32 も各OSだけの TeX Live YYYY、もしくは、複数バイナリを混ぜた TeX Live YYYY を構成できます。実際には

TEXDIR/bin/win32
TEXDIR/bin/x86_64-linux
TEXDIR/bin/x86_64-darwin

があるかどうかだけで、標準のTDSであれば、各プラットフォームごとにここの場所を環境変数の PATH に入れるだけで、あとは kpath search で全部自動的にパスが解決されるからです。

それゆえに、例えば…、Macと同一構成なTeX Live YYYY環境をもつLinuxのそれを作りたい場合は、まとめて

binary_x86_64-darwin 1
binary_x86_64-linux 1

としておいて、 /opt/texlive なり TEXDIR なりまるごと tarball などで固めておけば十分となります。

ドキュメントファイルやソースファイルのインストール有無:4. ソースとドキュメントを除く(texmf-dist/src, texmf-dist/doc

texadvent2017-tl16frozen.profile で以下のようにしています。

option_doc 0
option_src 0

これらのオプションはデフォルトで 1 となっています。
どーせ、みんな、ググっちゃうから、ディスクの肥やしになる!?ドキュメントもソースも要らんかもですねー ;-)

保守やデスクトップ向け関連付けなどのオプション:5. その他オプションを調整

option_adjustrepo 0

インストーラーでインストール後、ネットワーク上からmirrorのtlnetからさらに更新を試みるオプションです。

しかしながら、今回は TeX Live YYYY frozenからインストールしますし、通常の場合であったとしても、これは 0 で良いと思います。

option_autobackup 0, option_backupdir tlpkg/backups

$ sudo tlmgr update ごとに、過去のパッケージを順に TEXDIR/tlpkg/backups 以下に保持しておく機能です。

しかしながら、通常、これを使うユーザーはいないと推察できますし、 TEXDIR/tlpkg/backups に貯まっていくだけでディスク容量を食いますので、これも 0 であってよいと思います。

option_desktop_integration 0, option_file_assocs 0, option_menu_integration 0

これらのオプションたちは、名前から推察できるとおり、おもにインストーラーでパッケージを展開後、 mktexlsr, updmap-sys, fmtutils-sys 後の後処理で、おもにWindows向けにTeXworksなりのデスクトップアプリケーション関連付けが行われます。

しかしながら、Windowsであっても、advanced userにとって、余計なお世話だと思いますので、これらもあらかじめ 0 にしていてよいと思います。

関連記事

付録:過去3年分のTeX Live YYYYのインストーラープロファイル例集

TeX Live 2017

selected_scheme scheme-full
TEXDIR /opt/texlive/2017
TEXMFCONFIG ~/.texlive2017/texmf-config
TEXMFHOME ~/texmf
TEXMFLOCAL /opt/texlive/texmf-local
TEXMFSYSCONFIG /opt/texlive/2017/texmf-config
TEXMFSYSVAR /opt/texlive/2017/texmf-var
TEXMFVAR ~/.texlive2017/texmf-var
binary_x86_64-darwin 1
collection-basic 1
collection-bibtexextra 1
collection-binextra 1
collection-context 1
collection-fontsextra 1
collection-fontsrecommended 1
collection-fontutils 1
collection-formatsextra 1
collection-games 1
collection-genericextra 1
collection-genericrecommended 1
collection-htmlxml 1
collection-humanities 1
collection-langafrican 1
collection-langarabic 1
collection-langchinese 1
collection-langcjk 1
collection-langcyrillic 1
collection-langczechslovak 1
collection-langenglish 1
collection-langeuropean 1
collection-langfrench 1
collection-langgerman 1
collection-langgreek 1
collection-langindic 1
collection-langitalian 1
collection-langjapanese 1
collection-langkorean 1
collection-langother 1
collection-langpolish 1
collection-langportuguese 1
collection-langspanish 1
collection-latex 1
collection-latexextra 1
collection-latexrecommended 1
collection-luatex 1
collection-mathscience 1
collection-metapost 1
collection-music 1
collection-omega 1
collection-pictures 1
collection-plainextra 1
collection-pstricks 1
collection-publishers 1
collection-texworks 1
collection-xetex 1
in_place 0
option_adjustrepo 0
option_autobackup 1
option_backupdir tlpkg/backups
option_desktop_integration 1
option_doc 1
option_file_assocs 1
option_fmt 1
option_letter 0
option_menu_integration 1
option_path 0
option_post_code 1
option_src 1
option_sys_bin /usr/local/bin
option_sys_info /usr/local/share/info
option_sys_man /usr/local/share/man
option_w32_multi_user 1
option_write18_restricted 1
portable 0

TeX Live 2016

selected_scheme scheme-full
TEXDIR /opt/texlive/2016
TEXMFCONFIG ~/.texlive2016/texmf-config
TEXMFHOME ~/texmf
TEXMFLOCAL /opt/texlive/texmf-local
TEXMFSYSCONFIG /opt/texlive/2016/texmf-config
TEXMFSYSVAR /opt/texlive/2016/texmf-var
TEXMFVAR ~/.texlive2016/texmf-var
binary_x86_64-darwin 1
collection-basic 1
collection-bibtexextra 1
collection-binextra 1
collection-context 1
collection-fontsextra 1
collection-fontsrecommended 1
collection-fontutils 1
collection-formatsextra 1
collection-games 1
collection-genericextra 1
collection-genericrecommended 1
collection-htmlxml 1
collection-humanities 1
collection-langafrican 1
collection-langarabic 1
collection-langchinese 1
collection-langcjk 1
collection-langcyrillic 1
collection-langczechslovak 1
collection-langenglish 1
collection-langeuropean 1
collection-langfrench 1
collection-langgerman 1
collection-langgreek 1
collection-langindic 1
collection-langitalian 1
collection-langjapanese 1
collection-langkorean 1
collection-langother 1
collection-langpolish 1
collection-langportuguese 1
collection-langspanish 1
collection-latex 1
collection-latexextra 1
collection-latexrecommended 1
collection-luatex 1
collection-mathextra 1
collection-metapost 1
collection-music 1
collection-omega 1
collection-pictures 1
collection-plainextra 1
collection-pstricks 1
collection-publishers 1
collection-science 1
collection-texworks 1
collection-xetex 1
in_place 0
option_adjustrepo 1
option_autobackup 1
option_backupdir tlpkg/backups
option_desktop_integration 1
option_doc 1
option_file_assocs 1
option_fmt 1
option_letter 0
option_menu_integration 1
option_path 0
option_post_code 1
option_src 1
option_sys_bin /usr/local/bin
option_sys_info /usr/local/share/info
option_sys_man /usr/local/share/man
option_w32_multi_user 1
option_write18_restricted 1
portable 0

TeX Live 2015

selected_scheme scheme-full
TEXDIR /opt/texlive/2015
TEXMFCONFIG ~/.texlive2015/texmf-config
TEXMFHOME ~/texmf
TEXMFLOCAL /opt/texlive/texmf-local
TEXMFSYSCONFIG /opt/texlive/2015/texmf-config
TEXMFSYSVAR /opt/texlive/2015/texmf-var
TEXMFVAR ~/.texlive2015/texmf-var
binary_x86_64-darwin 1
collection-basic 1
collection-bibtexextra 1
collection-binextra 1
collection-context 1
collection-fontsextra 1
collection-fontsrecommended 1
collection-fontutils 1
collection-formatsextra 1
collection-games 1
collection-genericextra 1
collection-genericrecommended 1
collection-htmlxml 1
collection-humanities 1
collection-langafrican 1
collection-langarabic 1
collection-langchinese 1
collection-langcjk 1
collection-langcyrillic 1
collection-langczechslovak 1
collection-langenglish 1
collection-langeuropean 1
collection-langfrench 1
collection-langgerman 1
collection-langgreek 1
collection-langindic 1
collection-langitalian 1
collection-langjapanese 1
collection-langkorean 1
collection-langother 1
collection-langpolish 1
collection-langportuguese 1
collection-langspanish 1
collection-latex 1
collection-latexextra 1
collection-latexrecommended 1
collection-luatex 1
collection-mathextra 1
collection-metapost 1
collection-music 1
collection-omega 1
collection-pictures 1
collection-plainextra 1
collection-pstricks 1
collection-publishers 1
collection-science 1
collection-texworks 1
collection-xetex 1
in_place 0
option_adjustrepo 1
option_autobackup 1
option_backupdir tlpkg/backups
option_desktop_integration 1
option_doc 1
option_file_assocs 1
option_fmt 1
option_letter 0
option_menu_integration 1
option_path 0
option_post_code 1
option_src 1
option_sys_bin /usr/local/bin
option_sys_info /usr/local/share/info
option_sys_man /usr/local/share/man
option_w32_multi_user 1
option_write18_restricted 1
portable 0

以上、 texmf.cnf の TDS の説明以外で、インストーラーのインストーラープロファイルに関わる解説をざーっとしてみました。


  1. この処理は必須ではないですけれども、過去のバージョンで特定の場所しか認識しないことがあったので、そのままにしています。 

  2. このリポジトリ集 https://texlive.texjp.org/ の管理は、わたしが某弊社Green Cherryのサーバでやっていたものを、日本語TeX開発コミュニティにそのまま持ってきました。 

  3. ほんまに /some/where/texlive/YYYY の「texlive/YYYY」ですらなくてもかまいません。 

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.