TeX Live 2011 Vanilla をインストールしましたが、ルートのTeX Liveパスの設定に問題があります(Ubuntu 11.10で)。
問題は、Sudo tlmgr
を実行すると次のようになることです。
Sudo: tlmgr: command not found
非ルートのパスを修正するには、追加するだけで十分でした
PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH
/etc/profile
に。
この同じ行を/root/.bashrc
に追加しようとしましたが、Herbertが https://tex.stackexchange.com/questions/26624/tlmgrで提案しているように、/etc/profile.d/zzz-texlive.sh
にも追加しようとしました。 -inaccessible/26626#26626 しかし、それは役に立ちません。
クイックフィックス:($PATH
の変更により)環境に正しい/etc/profile
が既に設定されているため、以下を使用できます。
Sudo env PATH="$PATH" tlmgr
基本的に、 Sudo は$PATH
(実際には環境全体)の値を「既知の良好な」値にリセットし、ローカル環境に加えた変更を無視します。上記の env コマンドは、実行するPATH
の環境にtlmgr
変数を設定するため、コマンドラインで指定した$PATH
の値で実行されます。
TeXliveコマンドごとにすべてを入力しないようにするには、シェルで alias を定義します。ホームの.bashrc
ファイルに次の行を追加します。
alias psudo='Sudo env PATH="$PATH"'
そして、コマンドプロンプトでこれを簡単に発行できます:
psudo tlmgr
さらに、 Sudo はコマンドを実行するためのログインシェルを実行しないため、rootで「profile.d」トリックが機能しませんでした。 Sudo を強制的にシェルでコマンドを実行できます。これは、同じ効果を達成する別の方法です。
Sudo sh -l -c tlmgr
繰り返しますが、 Shellコマンドエイリアス を定義してこれを短縮できます。
alias shsudo='Sudo sh -l -c'
次のように使用できます。
shsudo tlmgr
シンボリックリンクを追加する場合、スクリプトを作成する必要はありません。これには2つの方法があります。
GUIの使用:
Sudo env PATH="$PATH" tlmgr --gui
。コマンドラインを使用して(GUIを使用したため、テストされていません):
Sudo env PATH="$PATH" tlmgr path add
。 (詳細は tlmgr documentation をご覧ください)私のために働いた:私はtlmgr
をGUIモードで開始しました
Sudo env PATH="$PATH" tlmgr --gui
そして、3番目のメニューで最後の項目を選択しました(私のドイツ語メニューでは、それはメニュー "Aktionen"(アクション?)と項目 "Verwaltung der symbolischen Links"(シンボリックリンクの管理?)です。 「Symbolische Links erneuern」ボタンをクリックしました(シンボリックリンクを更新しますか?)。
Sudo tlmgr --OPTIONS
問題なく動作します。これを行うコマンドラインの方法もあると確信しています;)
ユーザーの$PATH
をSudo
に渡すには、visudo
コマンドを使用して/etc/sudoers
ファイルを変更し、次の行を追加します。
Defaults exempt_group=<group that I belong to>
これで実行できます(例)
Sudo tlmgr update all
または
Sudo texhash
すべてが完璧に機能します。
このアプローチに関するコメントをいただければ幸いです。
tlmgr
のディレクトリをパスに追加する必要はありません。簡単な簡単な解決策はwhich
を使用することです。例:
Sudo $(which tlmgr) update --list
「root」特権を使用してTeX Liveをインストールおよび管理することは、良い習慣ではありません。代わりに、たとえばSudoを使用して/usr/local/texlive
ディレクトリを作成し、所有権をTeX Liveを管理するユーザーに変更します。その後、「root」権限を使用せずにTeX Liveをインストールおよび更新できます。