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

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

場合によっては、特定のフォルダに書き込むときにmake installエラーを引き起こす使用上の問題があります。permission deniedだから本能的にsudo make install

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

答え1

システムディレクトリにローカルインストールを行わないでください。たとえば、システムディレクトリは/usrパッケージ管理システムで使用するように予約されています。定義によれば、これはmake installローカルインストールを実行することを意味し、そうしなければsudo make install作成中の場所にアクセスできないという意味です。

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

/usr/localFHSによると、パッケージ管理システムはにインストールされません。バラよりDebian Policy Manual Section 9.1 - ファイルシステム層概要を取得するには。

答え2

前述のように、sudo make installユーザーが読み取り専用のディレクトリにファイルをインストールできます。

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

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

答え3

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

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

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

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

メモ:

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

関連情報