プログラムがrootとしてコンパイルされない場合は、/usr/localにどのようにインストールできますか?

プログラムがrootとしてコンパイルされない場合は、/usr/localにどのようにインストールできますか?

私の脳の中のどこかでmakerootにコンパイル(つまり実行)しないように警告するインターネット音声警告を読んだ覚えがあります。おそらくこれです。この物語cprogramming.com.

同時に、root ユーザーが/usr/localそのサブディレクトリを所有することが一般的に推奨されます。

これにより、ソースからソフトウェアをインストールするのが面倒になります。

# as root
mkdir program
chown user.user program

# as user
wget/curl/mv program.tar.gz program/.
cd program/
./configure --prefix=/usr/local
make

# as root
make install

これがソースからシステム全体にソフトウェアをインストールする最も簡単で正確な方法ですか?makeルートになるのは本当に危険ですが、make installそうではありませんか?

ベストアンサー1

リスクを減らすことが重要です。make破壊的な操作が実行されると、それを実行しているユーザーが変更(または削除)できるデータのみが失われます。したがって、makeそのユーザーのファイル範囲を制限するために通常のユーザーとして実行し、通常のインストールにはこれを行う必要があるため、通常のユーザーmake installとして実行します。root/usr/local

提供された例では、タールボールをホームディレクトリまたは書き込むことができる他のディレクトリにダウンロードして解凍し、一般ユーザーとして構成してビルドするprogram必要はありません。root

$ wget ...
$ tar xf program...tar.gz
$ cd program...
$ ./configure --prefix=/usr/local
$ make

通常はデフォルトの/usr/localプレフィックスなので省略できます。

セキュリティを最大化するには、ソフトウェアを構築するための専用ユーザーを使用し(何が間違ってもファイルを失うことを避けるため)、少なくともビルドシステムをお読みください。make -n役に立つかもしれません:実際に何もせずに何ができるかを見せてください。書き込み権限を持つ特別なユーザーまたはグループを作成し、/usr/localそれを実行時に使用することもできますmake install

おすすめ記事