これは「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をインストールするとします。
-
/opt/texlive/2016
にインストール - フル構成インストール(
scheme-full
) - Mac OS Xバイナリのみインストール(
x86_64-darwin
) - ソースとドキュメントを除く(
texmf-dist/src
,texmf-dist/doc
) - その他オプションを調整
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.profile
の 2016
を YYYY
に置換すれば十分です。
インストール構成: 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 の説明以外で、インストーラーのインストーラープロファイルに関わる解説をざーっとしてみました。
-
この処理は必須ではないですけれども、過去のバージョンで特定の場所しか認識しないことがあったので、そのままにしています。 ↩
-
このリポジトリ集 https://texlive.texjp.org/ の管理は、わたしが某弊社Green Cherryのサーバでやっていたものを、日本語TeX開発コミュニティにそのまま持ってきました。 ↩
-
ほんまに
/some/where/texlive/YYYY
の「texlive/YYYY
」ですらなくてもかまいません。 ↩