tlmgr経由でTeX Live 2013の構成のまま、TeX Live 2013からTeX Live 2014 frozen, 2015 pretestへ更新されちゃった件


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

前回のテフライブ!、「過去にリリースされたTeX Live YYYYをインストールしてみよう!」で紹介したTeX Live histonicを踏まえて、本件を喚起します。

なお、現時点2015年5月16日現在、TeX Live各種状況は以下のとおりです。

  • 最新版:TeX Live 2014 frozen(TeX Live 2014の最終更新状態)
  • CTAN mirrors に同梱されている systems/texlive:TeX Live 2014 frozen
  • 次期TeX Liveの状態:TeX Live 2015 pretest

例1:TeX Live 2013がTeX Live 2014 frozen, TeX Live 2015 pretestへ更新される

TeX Live 2014 frozenへ更新

TeX Live 2013を以下のような状態でインストールしているとします。

この状態において、$ sudo tlmgr update --self --all を実行すると、まず、--self により texlive.infra が更新されて、そこから /some/where/texlive/2013 のまま、現時点のCTAN mirrorsに同梱されているtlnetの状態TeX Live 2014 frozenへ追従されてしまいます。

$ sudo tlmgr update --self --all
TeX Live 2013 is frozen forever and will no
longer be updated.  This happens in preparation for a new release.

If you're interested in helping to pretest the new release (when
pretests are available), please read http://tug.org/texlive/pretest.html.
Otherwise, just wait, and the new release will be ready in due time.
tlmgr: package repository http://mirror.ctan.org/systems/texlive/tlnet
[1/2, ??:??/??:??] update: texlive.infra [203k] (32920 -> 35898) ... done
[2/2, 00:01/00:02] update: texlive.infra.x86_64-darwin [230k] (29809 -> 33484) ... done
Restarting tlmgr to complete update ...
TeX Live 2014 is frozen forever and will no
longer be updated.  This happens in preparation for a new release.

If you're interested in helping to pretest the new release (when
pretests are available), please read http://tug.org/texlive/pretest.html.
Otherwise, just wait, and the new release will be ready in due time.
tlmgr: package repository http://mirror.ctan.org/systems/texlive/tlnet
[ 1/39, ??:??/??:??] update: bibtex.x86_64-darwin [68k] (29879 -> 34201) ... done
(snip)
[39/39, 00:33/00:33] update: xdvi [7k] (30339 -> 33736) ... done
tlmgr: package log updated: /some/where/texlive/2013/texmf-var/web2c/tlmgr.log
running mktexlsr ...
done running mktexlsr.
running updmap-sys ...
done running updmap-sys.
regenerating fmtutil.cnf in /some/where/texlive/2013/texmf-var
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luajittex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luajittex.
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luatex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luatex.
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine tex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine tex.
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine pdftex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine pdftex.
running fmtutil-sys --no-error-if-no-engine=luajittex --byfmt mf ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --byfmt mf.
$ 

TeXのバージョンとパスを確認すると、確かにTeX Live 2014になっています。

$ tex --version 
TeX 3.14159265 (TeX Live 2014)
kpathsea version 6.2.0
Copyright 2014 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

TeX Live 2015 pretestへ更新

さらに、TeX Live 2015 pretest へリポジトリを変更し、$ sudo tlmgr update --self --all を実行すると、TeX Live 2015 pretestへ追従されてしまいます。

$ sudo tlmgr update --self --all
tlmgr: package repository http://example.com/tlpretest/tlnet
[1/2, ??:??/??:??] update: texlive.infra [207k] (35898 -> 37344) ... done
[2/2, 00:00/00:00] update: texlive.infra.x86_64-darwin [249k] (33484 -> 36831) ... done
Restarting tlmgr to complete update ...
tlmgr: package repository http://example.com/tlpretest/tlnet
[ 1/35, ??:??/??:??] update: bibtex.x86_64-darwin [68k] (34201 -> 36892) ... done
(snip)
[35/35, 00:08/00:08] update: xdvi [7k] (33736 -> 37078) ... done
tlmgr: package log updated: /some/where/texlive/2013/texmf-var/web2c/tlmgr.log
running mktexlsr ...
done running mktexlsr.
running updmap-sys ...
done running updmap-sys.
regenerating fmtutil.cnf in /some/where/texlive/2013/texmf-dist
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine tex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine tex.
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine pdftex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine pdftex.
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luatex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luatex.
running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luajittex ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --no-error-if-no-format --byengine luajittex.
running fmtutil-sys --no-error-if-no-engine=luajittex --byfmt mf ...
done running fmtutil-sys --no-error-if-no-engine=luajittex --byfmt mf.
$ 

TeXのバージョンとパスを確認すると、確かにTeX Live 2015になっています。

$ tex --version 
TeX 3.14159265 (TeX Live 2015)
kpathsea version 6.2.1
Copyright 2015 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

例2:TeX Live 2012は、tlmgrによりTeX Live 2013以降に更新されない。

tlnetのリポジトリを http://mirror.ctan.org/systems/texlive/tlnet (TeX Live 2014 frozen)に向けると、TeX Live 2013以降に更新されません。

$ sudo tlmgr update --self --all
tlmgr: The TeX Live versions supported by the repository
  (2013--2014)
do not include the version of the local installation
  (2012).

tlmgrの遷移と検証

tlnetリポジトリ先のtexlive.tlpdbに記述されている depend minrelease/YYYY, depend release/YYYY を確認し、depend release/YYYY >= 手元のバージョン >= depend minrelease/YYYY であれば、depend release/YYYY へ更新されます。

実際に、tlmgrに以下のようなコメントがあります。

  # we allow a range of years to be specified by the remote tlpdb
  # for which it might work.
  # the lower limit is TLPDB->config_minrelease
  # the upper limit is TLPDB->config_release
  # if the later is not present only the year in config_release is accepted
  # checks are done on the first 4 digits only
  # Why only the first four places: some optional network distributions
  # might use
  #   release/2009-foobar
  # If it should work for 2009 and 2010, please use
  #   minrelease/2009-foobar
  #   release/2010-foobar

以下に必要な情報をまとめてみました。

TeX Live depend minrelease/YYYY depend release/YYYY texlive.tlpdb
2009 frozen --- 2009 ftp://tug.org/texlive/historic/2009/tlnet/tlpkg/texlive.tlpdb
2010 frozen --- 2010 ftp://tug.org/texlive/historic/2010/tlnet-final/tlpkg/texlive.tlpdb
2011 frozen 2010 2011 ftp://tug.org/texlive/historic/2011/tlnet-final/tlpkg/texlive.tlpdb
2012 frozen 2012 2012 ftp://tug.org/texlive/historic/2012/tlnet-final/tlpkg/texlive.tlpdb
2013 frozen 2013 2013 ftp://tug.org/texlive/historic/2013/tlnet-final/tlpkg/texlive.tlpdb
2014 frozen 2013 2014 ftp://tug.org/texlive/historic/2014/tlnet-final/tlpkg/texlive.tlpdb
2015 frozen 2013 2015 ftp://tug.org/texlive/historic/2015/tlnet-final/tlpkg/texlive.tlpdb
2016 frozen 2016 2016 ftp://tug.org/texlive/historic/2016/tlnet-final/tlpkg/texlive.tlpdb
2017 frozen 2016 2017 ftp://tug.org/texlive/historic/2017/tlnet-final/tlpkg/texlive.tlpdb
2018 frozen 2016 2018 ftp://tug.org/texlive/historic/2018/tlnet-final/tlpkg/texlive.tlpdb
2019 frozen 2016 2019 ftp://tug.org/texlive/historic/2019/tlnet-final/tlpkg/texlive.tlpdb
2020 pretest 2016 2020 NA

tlmgrの遷移とともに、texlive.tlpdbの仕様変更、TDSの変更があり、上記のようになっているように推察できます。

問題!? 喚起!?

ユーザが「TeX Live 2013を標準でインストール(つまり、tlnetリポジトリ先がCTAN mirror(または、直ミラー))していたら、$ sudo tlmgr update --self --all を実行することで、TeX Live 2014 frozen、さらにもうすぐすると、TeX Live 2015 release に更新される」ことを期待している、もしくは、把握しているのでしょうか?

TeX Liveが純然たる fixed release を前提としているんだったら、やっぱりYYYY frozenになったら、そこで止めておくべきじゃないかな。つまり、TeX Live YYYYがfrozenになったとき、もしtlmgrが参照するtlnetリポジトリ先が http://mirror.ctan.org/systems/texlive/tlnet である場合にかぎり、 ftp://tug.org/texlive/historic/YYYY/tlnet-final に書き換えてしまうのがよいように思います。

もっともTeX Liveの構造がそんなに難しくないので、どんどんrolling upgradeにしていく手もあります。その場合は、tlmgrにupgradeアクションなんかを明示的に作るべきですね。

日本で本件が影響ありそうなTeX Live 2013ユーザ

「[改訂第6版]LaTeX2e 美文書作成入門」のインストーラーを使ってインストールしたTeX Live 2013ユーザ!

まとめ

TeX Live 2013を標準でインストールしていたら、$ sudo tlmgr update --self --all を実行することで、TeX Live 2014 frozen、さらにもうすぐすると、TeX Live 2015 release に更新されてしまいます。とくに、「[改訂第6版]LaTeX2e 美文書作成入門」のTeX Live 2013をご利用の方は、tlmgrによる更新をせずに、そのままご利用なさる方が、書籍との記述に違いが生じにくく、良いかもしれません。