カスタム プログラムが常に /opt、/srv、/usr/local などにインストールされ、~/ (home) フォルダーにはインストールされないのはなぜですか?

カスタム プログラムが常に /opt、/srv、/usr/local などにインストールされ、~/ (home) フォルダーにはインストールされないのはなぜですか?

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/man5月存在しない場合は作成します。次に、たとえば次のようにします~/.profile

export PATH=~/bin:$PATH
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
export MANPATH=~/share/man:$MANPATH

パッケージが共有ライブラリを使用する場合、 はLD_LIBRARY_PATH重要です。 がないと、実行可能ファイルはそれらのライブラリにリンクできません。 は MANPATHすべてのシステムで機能するとは限りませんし、いずれにしても厳密に必要というわけではありません。 が失敗した場合man foobar、どこで探せばよいかがわかるでしょう。

関連情報