ミシシッピ川以東のルイジアナ

わたしのブログへようこそ!出てけ

aptのTeX Liveが古い

ほとんど先駆者様 【WSLでも確認済み】Ubuntu18.04/20.04でのLaTeX環境構築 (TeXLive2019/2020/2021) をなぞっただけだが、備忘録として残しておく。

きっかけ

mahjongパッケージを使おうとしたら使えない。

2021年くらいに CTAN に追加されて TeX Live にもとっくに収録された筈なのだが、何故か見つからない。仕方ないからtlmgrから入れようとしたらそもそも動かない。パスの問題かなーとか変なパッケージを入れようとした時に conflict しちゃったのかなーとか思いつつ少しいじってみるが、どうにもおかしい。

すると TeX Live のパッケージ更新が3年半くらい前で止まっていた。

$ dpkg -s texlive-full 
Package: texlive-full
Status: install ok installed
Priority: optional
Section: tex
Installed-Size: 70
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Multi-Arch: foreign
Source: texlive-base
Version: 2019.20200218-1
......
...

Ubuntu の repo は軒並みパッケージが古いのだが、TeX Live くらいは新しいのを使いたい。

TeX Live の入れ替え

もうaptには任せておけないので思い切って全部消しちゃう。

$ sudo apt purge texlive-*
$ sudo apt autoremove

とはいえ丸投げする先がaptからインストーラに変わっただけである。適当なディレクトリを作ってwgetでダウンロードする。もちろん cURL 教徒の皆さんはcurlを使えばよい。

$ wget http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
$ tar xzf install-tl-unx.tar.gz
$ cd install-tl-20230923
$ sudo ./install-tl

するとウィザードが立ち上がって「止めるなら今のうちだぞ?」と聞いてくる。LaTeX が使えないと困るのでIで続行。

毎度のことだが TeX Live はクソ重いのでダウンロードにすごぶる時間がかかる。以前家の回線がゴミカスだった頃は、インストーラを走らせてから晩ご飯を食べて風呂に入ってもまだ終わらず、寝て起きて作業を再開するなどしていた。

 ----------------------------------------------------------------------
 The following environment variables contain the string "tex"
 (case-independent).  If you're doing anything but adding personal
 directories to the system paths, they may well cause trouble somewhere
 while running TeX.  If you encounter problems, try unsetting them.
 
 Please ignore spurious matches unrelated to TeX. (To omit this check,
 set the environment variable TEXLIVE_INSTALL_ENV_NOCHECK.)

    TEXLIVE_INSTALL_NO_DISKCHECK=1
 ----------------------------------------------------------------------


TeX Liveへようこそ!


ドキュメントの一覧は/usr/local/texlive/2023/index.htmlをご覧ください。TeX Liveのウェブサイト(https://tug.org/texlive/)にはすべてのアップデートとコレクションの情報が掲載されています。TeX Liveは全世界のTeXユーザ会有志による合同プロジェクトです。TeX Liveプロジェクトをサポートしていただける場合お好きなTeXユーザ会に入会することをご検討ください。TeXユーザ会の一覧はhttps://tug.org/usergroups.htmlでご確認いただけます。


Add /usr/local/texlive/2023/texmf-dist/doc/man to MANPATH.
Add /usr/local/texlive/2023/texmf-dist/doc/info to INFOPATH.
Most importantly, add /usr/local/texlive/2023/bin/x86_64-linux
to your PATH for current and future sessions.
Logfile: /usr/local/texlive/2023/install-tl.log

今回は30分くらいで終わった。天と地の差だ……

pathを通せと言われているので素直に従う。

# .bashrc の末尾に追加
export PATH="$PATH:/usr/local/texlive/2023/bin/x86_64-linux"
export MANPATH="$MANPATH:/usr/local/texlive/2023/texmf-dist/doc/man"
export INFOPATH="$INFOPATH:/usr/local/texlive/2023/texmf-dist/doc/info"
$ source ~/.bashrc

今回はパスを~/.bashrcからexportするようにしたが、これだと当然 root からは見れない。つまりsudoなど管理者権限で TeX Live 周りのコマンドを実行したい時にパスが通っていないと言われて困る(後述)。 全員が読むファイル(/etc/bash.bashrcとか)に書いてもいいかもしれないけど、なるべく触りたくないので僕はやってません。

パッケージの手動追加

おいおい LuaLaTeX に乗り換えたいなとは思っているのだが、とりあえず現環境で使ってる upLaTeX が正常に動くか確認したい。

普段のテンプレートをコンパイルしてみる。

! LaTeX Error: File `gnuplot-lua-tikz.sty' not found.

そういえば、いくつかのパッケージは自前で放り込んでいたのだった。gnuplot-lua-tikzgnuplotLaTeX で出してくれたグラフを処理するためのパッケージである。実験レポート作成時にはいつも助けられる。

gnuplot.styファイルを吐いてくれるので使う。場所と権限によっては管理者で実行する必要がある。

$ cd /usr/local/texlive/texmf-local/tex/latex/local/
$ sudo mkdir gnuplot
[sudo] password for jj1lis:
$ cd gnuplot/
$ sudo gnuplot

    G N U P L O T
    Version 5.2 patchlevel 8    last modified 2019-12-01 

    Copyright (C) 1986-1993, 1998, 2004, 2007-2019
    Thomas Williams, Colin Kelley and many others

    gnuplot home:     http://www.gnuplot.info
    faq, bugs, etc:   type "help FAQ"
    immediate help:   type "help"  (plot window: hit 'h')

Terminal type is now 'qt'
gnuplot> set term tikz createstyle

Terminal type is now 'tikz'
Options are 'latex nopreamble color nostandalone nogparrows notikzarrows nogppoints picenvironment nooriginreset bitmap rgbimage noclip notightboundingbox noexternalimages '
gnuplot> q
$ ls
gnuplot-lua-tikz-common.tex  gnuplot-lua-tikz.sty  gnuplot-lua-tikz.tex  t-gnuplot-lua-tikz.tex

こうやって見ると gnuplot も普通に古い。

とにかく、4つのファイルが吐き出されていることが分かる。あとはmktexlsrで ls-R ファイルを更新すればよいのだが……

$ sudo mktexlsr 
sudo: mktexlsr: command not found

そんなもんは知らんと言われてしまう。先述の通り自ユーザ以外ではパスを通していないので、全員が参照する場所でexportしないのであれば一々通す必要がある。

$ sudo su
# source /home/jj1lis/.bashrc
# mktexlsr 
mktexlsr: Updating /usr/local/texlive/2023/texmf-config/ls-R... 
mktexlsr: Updating /usr/local/texlive/2023/texmf-dist/ls-R... 
mktexlsr: Updating /usr/local/texlive/2023/texmf-var/ls-R... 
mktexlsr: Updating /usr/local/texlive/texmf-local/ls-R... 
mktexlsr: Done.

suは精神衛生上よくないので、これはこれで問題があるかもしれない。 あと面倒臭がって~/.bashrcを全部読むと事故る可能性があるので、多分ちゃんとパスだけ通したほうがよい。

その他、jlistingとか必要なものを移しているうちに動くようになった。

何かいい感じになった

そういえば、元はといえば mahjong を使いたいんだった。できるかな?

\documentclass[uplatex,a4paper,dvipdfmx]{jsarticle}
\usepackage{mahjong}

\title{\texttt{mahjong.sty}テスト}
\author{型推栄}

\begin{document}
    \maketitle

    これは国士無双です:\mahjong{19m19p19s1234567z-1s}
\end{document}