「make install」と「sudo make install」の違い


15

時々私は使用して問題が発生したmake install私に与えるpermission deniedいくつかのフォルダへの書き込み時にエラーが発生しました。だから本能的に使用しますsudo make install。これにより、追加の問題が発生しますか?

Debian Etchを使用しています。

回答:


16

システムディレクトリへのローカルインストールは避けてください。システムディレクトリ/usrは、パッケージ管理システムが使用するために予約されています。定義により、それを行ってmake installいる場合はローカルインストールを行っていることを意味し、それを行う必要がsudo make installある場合は、どこに書いても許可がないことを意味します。

そのため、でアクセス許可エラーが発生している場合はmake install、システムディレクトリにインストールしようとしているかどうかを確認し、/usr/local代わりに、またはそれに類似した場所にインストールしてください。/usr/localローカルインストール用に予約されています。書き込みを許可する必要があるかもしれませんが/usr/local、これは通常簡単に行えます。Debianでは、staffグループに自分を追加することでこれを行うことができます。さらに良いことには、バイナリパッケージを検索または作成し、代わりにインストールします。これにより、インストールされたパッケージを簡単に追跡し、パッケージ管理のその他の利点を得ることができます。

逆に、パッケージ管理システム/usr/localはFHSごとににインストールされないことに注意してください。概要については、Debianポリシーマニュアル-ファイルシステム階層のセクション9.1を参照してください。


3

コマンドの基本的な概要は次のとおりです。

  • sudo- rootとしてコマンドを実行します
  • make-ソースからビルドするスクリプトを実行します

sudoコマンドはrootとして渡すコマンドを実行するため、makeコマンドにはスーパーユーザー権限があることを意味します。これは、メイクファイルが悪意のある場合、またはそれが呼び出す可能性のあるスクリプトのいずれかが悪意のある場合、システムを危険にさらす可能性があることを意味します。

要するに、ソフトウェアを信頼していない場合は、インストールしないでください。ソフトウェアを信頼する場合、rootとして実行しても何も害はありません。

注意:

sudo make install と同じです su; make installほとんどの場合です。


3
「ほとんどの場合」で終了するのは正しかった。ここにコーナーケースがあります。
エデラグ

3

上記で回答したように、sudo make installユーザーとしては読み取り専用であるディレクトリにファイルをインストールできます。

私が予見できる問題は、後日、プログラムをアンインストールまたはアップグレードしたい場合があるということです。ソースコードのディレクトリツリーがまだある場合は、make uninstall、プログラムがアンインストールされますが、他の多くの一般的なユーザーと同じようにソースコードのディレクトリツリーを削除した場合は運が悪いです。また、パッケージ管理システムを使用してプログラムをインストールしていないため、その方法でプログラムをアンインストールすることもできない場合があります。

このようなプログラムをインストールする最善の方法は、ホームディレクトリにインストールすることです。オプション--prefix=/home/<user>/<some>/<directory>をに渡します./configure。これmake installによりsudo make install、代わりに使用できるようになり/home/<user>/<some>/<directory>ます。また、アンインストールも簡単です-rm -rf /home/<user>/<some>/<directory>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.