![カスタム プログラムが常に /opt、/srv、/usr/local などにインストールされ、~/ (home) フォルダーにはインストールされないのはなぜですか?](https://rvso.com/image/38709/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%8C%E5%B8%B8%E3%81%AB%20%2Fopt%E3%80%81%2Fsrv%E3%80%81%2Fusr%2Flocal%20%E3%81%AA%E3%81%A9%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%95%E3%82%8C%E3%80%81~%2F%20(home)%20%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AB%E3%81%AF%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
LTS リポジトリはかなり優れていますが、何らかの理由で、一部のプログラムでは「ソースからビルド」する方法を好みます。理由の 1 つは、優先バージョンを入手できることです (LTS の PHP は 5.3 ですが、ソースから 5.4 をコンパイルできます)。、、などの場合も同様nginx
ですnode.js
。
/opt
ここで、すべてのチュートリアルで、、/srv
またはなどの「ルート所有」フォルダーにプログラムをインストールするように要求されている理由を知りたいと思います/usr/local
。次のようなホーム フォルダーにインストールする方がはるかに簡単だと思います。
/home/prahlad/プログラム/PHP-5.4
1つの利点は、これらのプログラムをインストールする必要がないことですsudo
。2つ目と関連する利点は安全懸念事項。これらのソースのいずれかにマルウェアが含まれていたらどうなるでしょうか (Linux では可能性は低いですが)? ルート権限を拒否するのは良いことではないでしょうか?
プログラムをルート所有のフォルダーにインストールする必要がある例を 1 つ知りたいのですが。
答え1
ガイドでは、他の人が使用できるように/usr/local/
またはなどにインストールするように指示されています。/opt
ホームディレクトリにインストールすると、自分だけがアクセスできるようになります。自分用にコンパイルするだけなら、これで問題ありません。
答え2
これは厳格なルールではありませんが、 がデフォルトになっているものは/opt
通常自己完結型であり、実行可能ファイルを実行可能パスにコピーまたはシンボリックリンクするか、 に内部フォルダーを追加する必要がある場合があります$PATH
。 を別の場所に置いて を使用する方がよいかどうかは簡単に判断できます$HOME/bin
。
ただし、デフォルトで になるソースビルドされたものは/usr/local
、共有ライブラリとマニュアルページもインストールする可能性があります。別の場所に配置したい場合は、通常、最初に変数をエクスポートしますPREFIX
(または、コマンドラインで を使用しますmake
)。./configure --help
これを確認して説明してください。
その場合、使用したいパスに少しディレクトリ階層が必要になります。次のようになります。
bin/
lib/
include/
share/
man/
man1/
インストーラーは、さらにディレクトリを作成することができます(モデルをmanX
参照してください)。/usr/share/man
5月存在しない場合は作成します。次に、たとえば次のようにします~/.profile
。
export PATH=~/bin:$PATH
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
export MANPATH=~/share/man:$MANPATH
パッケージが共有ライブラリを使用する場合、 はLD_LIBRARY_PATH
重要です。 がないと、実行可能ファイルはそれらのライブラリにリンクできません。 は MANPATH
すべてのシステムで機能するとは限りませんし、いずれにしても厳密に必要というわけではありません。 が失敗した場合man foobar
、どこで探せばよいかがわかるでしょう。