一部のフォルダへの書き込み時にmake install
エラーが発生するpermission denied
の使用で問題が発生することがあります。だから本能的にSudo make install
を使います。これにより追加の問題が発生しますか?
私はDebian Etchを使用しています。
ローカルインストールをシステムディレクトリに作成しないでください。 /usr
などのシステムディレクトリは、パッケージ管理システムが使用するために予約されています。定義により、make install
を実行している場合はローカルインストールを行うことを意味し、Sudo make install
を実行する必要がある場合はどこに書き込む権限も持っていないことを意味します。
したがって、make install
で権限エラーが発生する場合は、システムディレクトリにインストールしようとしているかどうかを確認して、代わりに/usr/local
または同様のものにインストールしようとしていることを確認してください。 /usr/local
はローカルインストール用に予約されています。 /usr/local
への書き込み権限を自分に与える必要があるかもしれませんが、これは通常簡単に行えます。 Debianでは、これをstaff
グループに追加することで実行できます。それでもなお、バイナリパッケージを見つけて作成し、代わりにインストールしてください。これにより、インストールされたパッケージを簡単に追跡し、パッケージ管理のその他の利点を得ることができます。
FHSにより、パッケージ管理システムは逆に/usr/local
にインストールされないことに注意してください。概要については Debianポリシーマニュアルのセクション9.1-ファイルシステム階層 を参照してください。
コマンドの基本的な概要は次のとおりです。
Sudoコマンドはrootとして渡したコマンドを実行するため、makeコマンドにはスーパーユーザー権限があることを意味します。これは、makefileが悪意のある場合、またはmakefileが呼び出す可能性のあるスクリプトが悪意のある場合、システムを危険にさらす可能性があることを意味します。
つまり、ソフトウェアを信頼できない場合は、インストールしないでください。ソフトウェアを信頼している場合は、rootとして実行しても問題はありません。
注意:
Sudo make install
は、ほとんどの場合su; make install
と同じです。
上記で答えたように、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>