Linux mintでtlmgrのアップデートができない

Linux mintでtlmgrのアップデートができない

- sk attack の投稿
返信数: 10
Linux mint(18.3)で tlmgr を実行しますと
次のようなアラームがでてアップデートが実行できません.
どなたか解決のためにアドバイスいただけると助かります.

sk-attack@ASUS-Linux ~ $ sudo tlmgr update --self
(running on Debian, switching to user mode!)
Unknown directive ...containerchecksum 06c8c1fff8b025f6f55f8629af6e41a6dd695e13bbdfe8b78b678e9cb0cfa509826355f4ece20d8a99b49bcee3c5931b8d766f0fc3dae0d6a645303d487600b0... , please fix it! at /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm line 210, <$retfh> line 5752.
sk attack への返信

Re: Linux mintでtlmgrのアップデートができない

- 和田 勇 の投稿
linux mint をインストールする余裕はないので検証はできないのですが、

「running on Debian, switching to user mode!」で調べると

https://tex.stackexchange.com/questions/137428/tlmgr-cannot-setup-tlpdb

また「Unknown directive ...containerchecksum 」で検索すると

1000neta.blogspot.jp/2016/07/tex-live2016.html

https://user.ecc.u-tokyo.ac.jp/users/user-15826/wiki/?TeX/Install/TeXLive2016pretest
が見つけられます。

この辺を検討されて見てはいかがでしょうか?
和田 勇 への返信

Re: Linux mintでtlmgrのアップデートができない

- sk attack の投稿
教えていただいたHP(https://user.ecc.u-tokyo.ac.jp/users/user-15826/wiki/?TeX/Install/TeXLive2016pretest)を参考に次の作業を行いました:

1. https://www.tug.org/texlive/tlmgr.html から update-tlmgr-latest.sh を/Downloads にダウンロード

2. 端末で次のようにupdate-tlmgr-latest.shを実行しましたら,エラーがでました:
sk-attack@ASUS-Linux ~ $ cd Downloads/
sk-attack@ASUS-Linux ~/Downloads $ sudo sh update-tlmgr-latest.sh
[sudo] sk-attack のパスワード:
Verifying archive integrity... All good.
Uncompressing TeX Live Manager Updater 100%
./runme.sh: Cannot find TeX Live root using kpsewhich --var-value=SELFAUTOPARENT.
./runme.sh: Please set your PATH as needed, otherwise it's hopeless.
ここで詰まってしまいました.


sk attack への返信

Re: Linux mintでtlmgrのアップデートができない

- 和田 勇 の投稿
> ...
> ./runme.sh: Cannot find TeX Live root using kpsewhich --var-value=SELFAUTOPARENT.


上記のメッセージを見るとおそらく linux mint の sudo は環境変数を初期化してしまうようになっていると思われます。

今 linux mint をダウンロードしてインストールして確認しようと思っているのですが、WIMAX な環境なのでダウンロードに時間がかかっています。
検証するまでの間、次の方法を試していただけますか


sudo PATH=$PATH sh update-tlmgr-latest.sh

# sudo で初期化された PATH を元のユーザの PATH で実行する と呼んでいただければ良いと思います。


#投稿履歴を拝見すると TeXLive は ISO イメージかネットワークインストールして /usr/local/texlive/2017 以下に入れていると見て良いですよね。
その場合、 /usr/local/texlive/2017 を re-name するなどして再インストールした方が解決が早いかもしれませんん。
和田 勇 への返信

Re: Linux mintでtlmgrのアップデートができない

- sk attack の投稿
アドバイス頂きました方法を試しましたら次のような応答がありました:
sk-attack@ASUS-Linux ~/Downloads $ sudo PATH=$PATH sh update-tlmgr-latest.sh
Verifying archive integrity... All good.
Uncompressing TeX Live Manager Updater 100%
./runme.sh: Cannot find TeX Live root using kpsewhich --var-value=SELFAUTOPARENT.
./runme.sh: Please set your PATH as needed, otherwise it's hopeless.
それからTeXLiveのディレクトリは/usr/local/texlive/2017です.

さらに https://www.mk-mode.com/octopress/2016/01/18/texlive-installation-on-linux-mint/ を参考にしてTeXlivを再インストールしてみましたが事態は変わらず,次のような同じエラーがでました:

sk-attack@ASUS-Linux /usr/local/texlive/2017 $ sudo tlmgr update --self
(running on Debian, switching to user mode!)
Unknown directive ...containerchecksum 06c8c1fff8b025f6f55f8629af6e41a6dd695e13bbdfe8b78b678e9cb0cfa509826355f4ece20d8a99b49bcee3c5931b8d766f0fc3dae0d6a645303d487600b0... , please fix it! at /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm line 210, <$retfh> line 5752.









sk attack への返信

Re: Linux mintでtlmgrのアップデートができない

- 和田 勇 の投稿
一応一般ユーザで kpsewhich とか platex が /usr/local/texlive/2017 以下のものだというのが前提(= PATH に /usr/local/texlive/2017 関連おものが組み込まれている)とさせてください。

linux mint の sudo は /etc/sudoers を見ると secure_path で
汚染された PATH を使わないよう通常の PATH だけにしていますね。

つまり /usr/local/texlive/bin/x86_64 などという通常の sudo 操作では使用されない PATH は消されてしまうということです。

ですので echo $PATH の情報をメモしていただいておいて sudo -s して
export PATH してから やってもらった方が確実だった気がする :-(


それはさておき

/usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm が表示されているのを見るとなんか二つ texlive が入っていそうだな

dpkg -S /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm

とするとこのファイルがどのパッケージのものかわかるはづですが。。。。


とはいえ、/usr/local/texlive/2017 というのであればその下の bin のさらに多分 x86_64 のディレクトリに tlmgr があると思います。(以下はその前提で話を進めますので違っていたら適宜読み替えてください)

で tlmgr をフルパス指定で以下のように実行すればできるのではないかと思います。

sudo /usr/local/texlive/2017/bin/x86_64/tlmgr update --self

# mint はインストールできたけど apt でとりあえず texlive インストール中

#合わせて CTAN から network インストールで /usr/local/texlive2017
# をインストール中

#でもあと四時間くらいかかるのでこちらでの検証は未だできない状況

#お手数ですが上記 tlmgr をフルパスで指定したものを sudo で実行して見てください。
和田 勇 への返信

Re: Linux mintでtlmgrのアップデートができない

- sk attack の投稿
アドバイスありがとうございます.

> 二つ texlive が入っていそう

これは多分,Linux mintの「ソフトウエア管理」を使って「Texlive-full」をインストールして,うまく行かなかったので手動でhttps://www.mk-mode.com/octopress/2016/01/18/texlive-installation-on-linux-mint/ を参考にしてTeXlivを再インストールしたせいかもしれません.

そこでアドバイスに従い調べてみました:
sk-attack@ASUS-Linux ~ $ dpkg -S /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm
texlive-base: /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm
さらにご要望頂いたフルパス指定による実行をしてみますと次のような結果になりました:
sk-attack@ASUS-Linux ~ $ sudo /usr/local/texlive/2017/bin/x86_64-linux/tlmgr update --self
[sudo] sk-attack のパスワード:
tlmgr: package repository http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet (verified)
tlmgr: saving backups to /usr/local/texlive/2017/tlpkg/backups
tlmgr: no self-updates for tlmgr available.
これは「セルフアップデートがない」と応答したわけですから正常に実行できたということでしょうか?





sk attack への返信

Re: Linux mintでtlmgrのアップデートができない

- 和田 勇 の投稿
現状のことを察するとTexlive-full は削除した方が良いと思います。

apt remove texlive-full

で削除できます。


> これは「セルフアップデートがない」と応答したわけですから正常に実行できたということでしょうか?

install-tl で再インストール後は最新状態なはずなので tlmgrで update されても大抵の場合 update 対象なしになる確率が高いと思います。

くどいようですが、 sudo をすると PATH が変化する OS 環境があるということだけでも覚えておいてください。

#install-tl まだ三時間かかると言っているので寝ます。 :-)




和田 勇 への返信

Re: Linux mintでtlmgrのアップデートができない

- 和田 勇 の投稿
補足です
> apt remove texlive-full

これだけでは 3G バイト以上ある本体 (texlive-base) とかが残ってしまうようですね。

apt list --installed | grep texlive

などで texlive 関連パッケージのインストール情報を調べておいて apt remove のパラメータに追加してあげれば不要なものは削除可能です。
こちらでは

 apt remove texlive-base texlive-binaries

で削除しました。
和田 勇 への返信

Re: Linux mintでtlmgrのアップデートができない

- sk attack の投稿
補足してくださりありがとうございました.じつはこの補足を読む前に

apt remove texlive-full

を実行したら, “関連ファイルをsudo apt autoremoveで削除しますか” といった旨の応答があったので,

sudo apt autoremove

を実行しました(これで関連ファイルが削除されたのかわかりませんが・・・・)

さて,本来の疑問であった tlmgr についてです. お陰様で改善し実行できるようになりました. 具体的には現在 tlmgr を実行するのにフルパスを書いて次のように実行しています:

sudo /usr/local/texlive/2017/bin/x86_64-linux/tlmgr update --self

このフルパスを書かずにホームディレクトリなどで“tlmgr update --self”を実行するには, パスを通すのだと思いますが, どのようにしたら良いのでしょうか? 教えていただけると助かります.

# ちなみに現在ではフルパスを記述しないで実行すると次のような応答があり動かないようです:
sk-attack@ASUS-Linux ~ $ tlmgr update --list
(running on Debian, switching to user mode!)
Unknown directive ...containerchecksum 06c8c1fff8b025f6f55f8629af6e41a6dd695e13bbdfe8b78b678e9cb0cfa509826355f4ece20d8a99b49bcee3c5931b8d766f0fc3dae0d6a645303d487600b0... , please fix it! at /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm line 210, <$retfh> line 5752.
sk attack への返信

Re: Linux mintでtlmgrのアップデートができない

- 和田 勇 の投稿
> これで関連ファイルが削除されたのかわかりませんが・・・・)

apt list --installed | grep -i texlive で何も表示されなければ関連パッケージは削除されています。

が引用が前後しますが最後の行に

> /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm

とあるので texlive-base がまだ残っているようです。


さて ..

> このフルパスを書かずにホームディレクトリなどで“tlmgr update --self”を実行するには, パスを通すのだと思いますが, どのようにしたら良いのでしょうか? 教えていただけると助かります.

これは当初の回答で示した sudo PATH= でいけるのかと思ったのですが動きませんね。:-(

試すと sudo env PATH=$PATH tlmgr update --self で確実に環境変数を渡すようにすると通りますね。(教訓 端折らずに env を書き込む)


そのほか類似していますがアドホックな解をいくつか例示して見ますので参考にしてください。
なお 2) と 3) は texlive を sk attack さんが一人で利用されていることを想定。

1) フルパスでの tlmger update を alias か function 化しておく

以下のような記述をお使いの shell のスタートアップファイルに書き込んでおく。いずれも type -P tlmgr で検索できる状態になっていることが前提ですが。

1-1) alias 化
alias TLMGR='sudo '$(type -P tlmgr)' update --self'

1-2) function 化
TLMGR() {
sudo $(type -P tlmgr) update --self
}
 
2) /usr/local/texlive を sk_attack さんの所有にしてしまう
 install-tl でインストール先を sk attackさんが書き込める所にしてしまうてもありますが ...
3) /etc/sudoers の secure_path に texlive2017 のパスを追加
 (2018 をインストールした時書き換えが必要になりますが)