$ PATHのコマンドは実行されず、Debian 12で "ln"リンクが機能しません。

$ PATHのコマンドは実行されず、Debian 12で

コンピュータシステムはDebian 12です。 LaTeXを更新する必要があるため、コマンドを試しsudo tlmgr update --allましたsudo: tlmgr: command not found。しかし、which tlmgr帰って/usr/local/texlive/2023/bin/x86_64-linux/tlmgr本当にsudo /usr/local/texlive/2023/bin/x86_64-linux/tlmgr update --all働いています。しかしsudo echo $PATH返された

/home/usr1/.local/bin:/usr/local/texlive/2023/bin/x86_64-linux:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

含まれているのになぜ返されるのか/usr/local/texlive/2023/bin/x86_64-linux:理解できません。sudo tlmgr update --allsudo: tlmgr: command not found

sudo ln -s /usr/local/texlive/2023/bin/x86_64-linux/tlmgr /usr/bin/tlmgr次のようにシンボリックリンクを作成しましたが、sudo tlmgr update --all返されます。

"wndws" is not exported by the TeXLive::TLUtils module
Can't continue after import errors at /usr/bin/tlmgr line 100.

確認してみるとls -l /usr/bin/tlmgr1結果が出ましたlrwxrwxrwx 1 root root 46 Nov 2 11:30 /usr/bin/tlmgr -> /usr/local/texlive/2023/bin/x86_64-linux/tlmgr。そうだね。

なぜ追加する必要があり、tlmgrなぜ/usr/bin/動作しないのですか sudo tlmgr update --all

ベストアンサー1

明らかに/usr/local/texlive/2023/bin/x86_64-linux/tlmgr$ 0を(シェル用語で)見て、LaTeXのインストール場所を決定します。フルパスで実行すると、インストールの残りの部分を特定し、必要な/usr/local/texlive/2023/すべてのコンポーネントの正しいバージョンを見つけるのは簡単です。

しかし、シンボリックリンクを使用すると、これは崩れます。必要なものが見つからない場合、またはDebian 12の標準パッケージバージョンのLaTeXがインストールされている場合は、明らかに多くのものを探すのではなく、検索して見つけて使用しようと/usrする/usr/share/texliveことができます。 Debianの標準バージョンよりも機能が改善されました。/usr/share/texlive/tlpkg/TeXLive/TLUtils.pm/usr/local/texlive/2023/[...something...]/TLUtils.pm

あなたが見たように:

grep wndws /usr/share/texlive/tlpkg/TeXLive/TLUtils.pm

結果は生成されなかったため、明らかに何もインポートしようとしませんwndwstlmgr

一般的に言って、自分だけのバッグを作るのではなく、必ず必要な場合でなければ*.debバッグに物を入れないでください。/usr/bin/代わりに/usr/local/bin

この特別な場合は、tlmgrシンボリックリンクの代わりに単純なラッパースクリプトを使用する必要があります。なぜなら、シンボリックリンクが始まるパスに敏感であるからです。したがって、/usr/local/bin/tlmgr次のように作成します。

#!/bin/sh
exec /usr/local/texlive/2023/bin/x86_64-linux/tlmgr "$@"

その後、実行可能にするために使用しますchmod a+x /usr/local/bin/tlmgr

execこれは最初にプロセスリストを複雑にする追加のシェルプロセスを防ぎ、スクリプトに与えられた"$@"すべての引数がtlmgr変更なしで実際の引数に渡されるのを防ぎます。)

おすすめ記事