プログラムが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

答え2

それは信頼と利便性につながります。もちろん、make不安を感じることも可能ですが、そうかもしれませんmake install。ただ表面攻撃領域が(希望的に)より小さくなければならず、一目で奇妙なことが明らかになるmake install可能性が高いです。Makefileしかし、$PATHソフトウェアをインストールすることは誰がコンパイルしても危険なので、質問全体は議論の余地があります。

個人的には、私はしばしば自分と他の管理者をstaffそのグループに入れ、そのグループに権限を与えます/usr/local。これにより、ルートがまったく必要なくゲームをプレイし、tarバイナリのconfigureインストールを支援できます。makesudo

いいえ、完璧ではありません。はい、とても便利です。

関連情報