平衡点


2012/12/08 [長年日記]

_ Ubuntu 12.04/Debian Squeeze での TeXLive (>=2012) 環境

この記事は TeX & LaTeX Advent Calendar の 12/08 の記事です. 昨日は黒木さん(@kuroky_plus)の「TUG2013への参加のすすめ」でした.

「何か書きます。多分。」とか, 書いておきながらネタで悩んでしまいました. 今日のお話は前回のお話 に続いて, Ubuntu 12.04 LTS での TeX 環境のお話です.

Ubuntu 12.04 LTS (もしくは Debian squeeze) の TeX 環境

以前, ~師範、組版システム「TeX」について教えてください!~ 行っとけ! Ubuntu 道場, 第60回 でもちょっと触れましたが, Ubuntu 12.04 LTS のパッケージで提供されている TeX 環境は Debian Squeeze 相当, つまり TeXLive 2009 と teTeX + pTeX patch です. ですので, このままでは 「Ubuntu の TeX は UTF-8 のファイルを処理できないかよ, ( `д´) ケッ!」みたいな人に 「まあ, 落ち着けよ. nkf でも使えよ」という返答をし続けなければなりません(何度か書いてますが, かなりアレな気分になってるわけです).

そこで, TeXLive のインストーラ/マネージャを使用して最新の TeXLive 環境を導入すれば良いですね, となります.

その前に equivs で仮想パッケージを作りましょう

tlmgr を使った TeXLive 環境の構築については後で触れますが, その前に equivs についてちょっと触れておきます.

equivs って何?

Debian/Ubuntu で提供されているパッケージのうち, texlive に依存するパッケージはかなり沢山あります. tlmgr で最新の TeXLive 環境を導入して幸せになっていたつもりが, 他のパッケージの依存関係に引きづられて, 古い(パッケージで提供されている)TeX環境も導入され, 気がついたらどっちを実行しているのか良くわからなくなった, なんて事もあるかもしれません.

そこで, 依存関係を解消するため だけ のダミーパッケージを作成しましょう. そのために使用するのが equivs です.

で, どうするの?

equivs を使ったダミーパッケージの作成については TeXLive 本家の TeX Live and Debian/Ubuntu に書かれています. ここでは, それを抜粋します. また, ファイルの編集を省くために(簡単のため)上記ページに置かれている サンプル をそのまま使うことにします.

$ sudo apt-get install equivs
$ wget http://www.tug.org/texlive/files/debian-control-ex.txt
$ equivs-build debian-control-ex.txt
$ sudo dpkg -i texlive-local_2011-1~1_all.deb

以上で, 依存関係を解決するためだけのダミーパッケージ texlive-local が導入されました. このパッケージは実際には何のファイルも提供していませんが, 他のパッケージを導入する際の依存関係を解消してくれます.

tlmgr で TeXLive 環境を導入

tcl/tk で書かれた, TeXLive 用のパッケージマネージャである tlmgr で 最新の TeXLive 環境を導入しましょう.

$ wget http://ftp.naist.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
$ tar xvf install-tl-unx.tar.gz
$ cd install-tl-YYYYMMDD       <-- 日付のディレクトリができます.
$ sudo ./install-tl \
  --repository http://ftp.naist.jp/pub/CTAN/systems/texlive/tlnet/

実行すると, 幾つかデフォルトの設定が表示されます. デフォルトのままで良いので I を押して install を開始しましょう.

...
Actions:
<I> start installation to hard disk
<H> help
<Q> quit

それなりに時間がかかるので, 気長にまちましょう.

インストールが終わったら path を更新します.

  • 32bit 環境の場合

    $ sudo /usr/local/texlive/2012/bin/i386-linux/tlmgr path add
  • 64bit 環境の場合

    $ sudo /usr/local/texlive/2012/bin/x86_64-linux/tlmgr path add

終わったら tlmgr を一度実行して, 状況を眺めてみるのも良いかもしれません.

続いて, 日本語化された xdvi(pxdvi), metapost(pmetapost) を tlptexliveリポジトリ からインストールします.

$ sudo tlmgr update --self --all
$ sudo tlmgr repository add http://www.tug.org/~preining/tlptexlive/ tlptexlive
$ sudo touch /usr/local/texlive/texmf-local/tlpkg/pinning.txt
$ echo 'tlptexlive:pxdvi*,pmetapost*' | sudo tee -a /usr/local/texlive/texmf-local/tlpkg/pinning.txt
$ sudo tlmgr install pxdvi pmetapost
$ sudo tlmgr path add

以上で, Debian/Ubuntu のパッケージシステムの依存関係を解消しつつ, 最新の TeXLive 環境を導入することができました.

インストール先は

$ /usr/local/texlive/2012

以下になります. tlmgr path add によって, /usr/local/bin 以下に 実行ファイルのシンボリックリンクが作成されていますので, 実行の際に path を追加する, といった作業は必要ありません.

注意点

ディストリビューションのアップグレードの場合 (Squeeze -> Wheezy, 12.04 -> 12.10) の場合には, 一度

$ sudo tlmgr remove path
$ sudo dpkg --purge texlive-local

によって,

  • tlmgr によって導入された TeXLive のシンボリックリンクを削除
  • equivs によって作成/導入した texlive-local の削除

を行なってから, アップグレード -> TeX 環境の(パッケージからの)新規インストールを 行なった方が良いと思います.

試していませんが, 祟りがあるかも...

まとめ

書いた後に TeX Wiki - Linux/Ubuntu を見たら, TeX Live Backports PPA がありますね (てか, equivs 以外は, かなりしっかり書かれていて, この記事の存在意義がががが).

ただし, PPA はサイズ制限がある (TeXLive 関連のパッケージを全部提供するのは無理)ので, pTeX 関連までは提供できていないみたいです. もし真面目に(全ての TeX 関連のパッケージの) PPA を提供するのであれば, チームを組んでサイズ上限について Canonical と交渉することになるのかもしれません. 誰か気力のある人がいらっしゃるなら, 協力します. ご連絡下さい.

明日(もう今日かな?)は吉村優さん(@yoshimura_yuu)の予定です.