web-dev-qa-db-ja.com

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

一部のフォルダへの書き込み時にmake installエラーが発生するpermission deniedの使用で問題が発生することがあります。だから本能的にSudo make installを使います。これにより追加の問題が発生しますか?

私はDebian Etchを使用しています。

15
lokheart

ローカルインストールをシステムディレクトリに作成しないでください。 /usrなどのシステムディレクトリは、パッケージ管理システムが使用するために予約されています。定義により、make installを実行している場合はローカルインストールを行うことを意味し、Sudo make installを実行する必要がある場合はどこに書き込む権限も持っていないことを意味します。

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

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

16
Faheem Mitha

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

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

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

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

注意:

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

3
beatgammit

上記で答えたように、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>

3
latexnewbie