texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

- Murakami Keitaro の投稿
返信数: 6
初歩的な質問でしたら申し訳ありません.

Rocky Linux 8.5 (CentOS 後継) にて texlive 2021 を利用していますが, sty パッケージ更新 (mktexlsr) の問題を解決する際に texlive が2つあることに気づきました:
/usr/local/texlive/2021/~
/usr/share/texlive/~

普段は /usr/local/texlive/2021/~ で実行されているようですが, /usr/share/texlive/~ の texlive は何者なのでしょうか.

もしかすると,
- 正常
- パッケージ管理システム(DNF)でインストールしたつもりだったが, よく分からずインストールメディアもいじってしまっていた
- よく分からず Docker やらなんやらをいじったときにできちゃった

Linux については, ほとんどよく分かっておりません.

御教示頂けますと助かります. どうぞよろしくお願いします.

===========

mktexlsr を sudo で実行すると別の ls-R を更新してしまう
https://qiita.com/KeppyNaushika/items/f0b5e428dade5545c487
Murakami Keitaro への返信

Re: texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

- 奥村 晴彦 の投稿
/usr/local の下が公式サイトの TeX Live,/usr/share の下がおそらく dnf でインストールしたものでしょうね。両方あっても PATH を(root と一般ユーザで)同じ順にしておけば,先にあるほうが実行されるのでまったく問題ないと思います。私は公式サイトの TeX Live を使っています。
奥村 晴彦 への返信

Re: texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

- 和田 勇 の投稿

追加です。 ちょっと専門的なので、気がひけますが Fedora 34 で試しつつ 先日削除した Rocky を再インストールして sudo 関連を再確認しておきました。

  • /usr/local/texlive/2021 vs /usr/share/texlive

    (最近 docker はやっていないので定かではないですが)おそらく texlive を net-install か iso-image でインストールしたものと、dnf(あるいは yum rpm) などで入れたものでしょう。

    redhat 系の場合ですとあるディレクトリ・ファイルがどのパッケージで インストールされたものかチェックすることができます。

        % rpm -qf /usr/share/texlive /usr/local/texlive/2021
          ↓↓↓↓
        texlive-base-20200327-28.fc34.x86_64
        ファイル /usr/local/texlive/2021 はどのパッケージにも属していません。
   

パッケージで導入したものが不要であれば「 dnf list --installed 'texlive' 」 などで調べ 「 sudo dnf remove 'texlive'」などで削除しも良いと思います。

  • sudo mktexlsr すると ...

    これは macOS とは違うところなんですが ...

    redhat系 debian 系の sudo は、汚染された環境変数 PATH (だけではない ですが)を使わないようにするため、PATH を強制的に安全なものに置き換 えて sudo 以降のコマンドを実行します。

    「echo $PATH」を書き込んだファイル test として 「sudo bash test」 と 実行すれば「/sbin:/bin:/usr/sbin:/usr/bin」となります。

    要は、/usr/local/texlive 以下などパッケージマネージャが管理していな いところに設置されたものは標準では使用しません。

    どうしてもというときは、bash/zsh なら

    sudo $(which mktexlsr)
    

    あるいは、実行したものがさらに別のものをという考慮して

    sudo PATH=$PATH $(which mktexlsr)
    

    sudo の配慮を無効にしてしまう方法もあります。

和田 勇 への返信

Re: texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

- 奥村 晴彦 の投稿
あぁなるほどrootで/usr/local/texlive/binの下のものを実行するのは怖いという意味ですね。さきほどの書き方が悪かったです。私は/usr/local/texlive以下はrootじゃなく私の所有物にしているのでmktexlsrもtlmgr updateもsudoを付けてはいません。
奥村 晴彦 への返信

Re: texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

- 和田 勇 の投稿
昨今のコンピュータ利用が個人ベースになってきているのを考慮すると /usr/local/texlive だけじゃないけど、ユーザー所有のようにした方が良いですね。
奥村 晴彦 への返信

Re: texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

- 和田 勇 の投稿
昨今のコンピュータ利用が個人ベースになってきているのを考慮すると /usr/local/texlive だけじゃないけど、ユーザー所有のようにした方が良いですね。
和田 勇 への返信

Re: texlive が /usr/local/ と /usr/share/ にある【Linux / CentOS】

- Murakami Keitaro の投稿
ウホホ... 奥村先生に和田様, ありがとうございます. 大変勉強になりました.

御指摘の通り,
[user@localhost ~]$ rpm -qf /usr/share/texlive /usr/local/texlive/2021
texlive-base-20180414-25.el8.noarch
file /usr/local/texlive/2021 is not owned by any package
でした.

package の方はいずれ dnf remove しておこうと思います.

local 下の texlive の所有者も一般ユーザに変えておこうか...同ディレクトリ下の他のソフトの中には一般ユーザに変えたものもあるので, それも検討していこうと思います。

path についてはなるほど...あまりよく理解していないので, いずれ勉強していこうと思います.

すっきりしました. 助かりました.