想定している環境

この文書は、以下のような環境を想定しています。

システム

ここで想定しているシステムは Linux です(おそらく macOS のユーザにもある程度有用だろうと思われます)。基本的に TeX Live はそれ自体内部完結していて、特に外部のユーティリティを必要とするわけではありませんが、Perl 等は必要になることがあるかもしれません。

Linux

Linux と一口に言っても、様々なディストリビューションがありますけれど、僕が Debian GNU/Linux を使用している都合上、Debian や Ubuntu のようなシステムを想定しています。勿論、いわゆる RHEL クローンのシステムでも、ここで書いていることは適用できると思います。

TeX Live は外部のユーティリティを基本的には必要としませんが、後述する GUI での(ほとんどのシステムではメッセージも日本語化されています)インストール・セットアップを行えるように、Perl/Tk をインストールしておくと便利です。Debian GNU/Linux では Perl/Tk は "perl-tk" という名前でパッケージ化されていますので、これを apt-get 等でインストールしておくことをお薦めします。

sudo について

TeX / LaTeX のインストール・設定は、いわゆる管理者権限での作業が必要となることが多いです。勿論、たとえば TeX Live をホームディレクトリ以下にインストールするという手もあるわけですが、自分自身で使用するシステムの管理を行っているのだったら、システムの一部としてインストールしたいと思う方が多数派でしょう。

Ubuntu や、最近は Debian でもその傾向が強いのですが、ユーザが root でログインすることを禁止しているシステムが最近は多いようです。Mac OS X もそうですが、これらのようなシステムでは sudo コマンドを使用することになります。

sudo において、ユーザの環境変数 PATH が、管理者権限でのコマンド使用時にも引き継がれると、ユーザは、普段自分がコマンドラインを使用する感覚そのままで sudo を使用することができるわけですが、これは管理者権限で何でもかんでも実行できてしまうということでもあるわけで、セキュリティの観点からは問題のある状態です。そのため、Ubuntu や Debian の最近のシステムでは、sudo コマンドは独自の PATH を持ち、一般ユーザの PATH が引き継がれないような仕様になっています。

ところが、これは TeX Live のインストールや管理の際に、ちょっと面倒なことになってしまいます。せっかく TeX Live のインストールディレクトリに PATH を通しているのに、sudo コマンドにはそれが反映されない……ということになるからです。

この問題に対しては、3つの対応手段があります。まずひとつは、

$ sudo `which <command>`
のようにコマンドを入力する、というものです。バッククォートで囲まれた中の which コマンドが、ユーザの PATH に入っているコマンドまでの full path を展開してくれる、というわけです。

もうひとつは、sudo の設定ファイルである /etc/sudoers 内の:

Defaults        secure_path = ...
の行に、TeX Live のインストールディレクトリ内の実行形式ファイルの入ったサブディレクトリの path:
/usr/local/texlive/2021/bin/x86_64-linux/
(これは 64bit Linux の場合です)を追加するというものです。あまりスマートな解決策とは言えませんが、いちいち which を使う煩雑さからは解放されそうです。

また、sudo コマンドの動作自体を以前のようにする手もあります。~/.bashrc に、

alias sudo='sudo env PATH=$PATH'
と書いておきます。csh 系のシェルを使われている方は ~/.cshrc に、
alias sudo "sudo env PATH=$PATH"

のようにダブルクォートで囲んだ部分の直前に "=" を付けずに書きます。セキュリティ対策を潰してしまっているわけですが、そもそもこんなことで回避されるようなセキュリティ対策って何なのよ? という気もしますねえ。ちなみに僕は、この3番目を用いています。


Go back to the top
Go back to the index

Copyright(C) 2021 Tamotsu Thomas UEDA