場合によっては、特定のフォルダに書き込むときに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/local
FHSによると、パッケージ管理システムはにインストールされません。バラよりDebian Policy Manual Section 9.1 - ファイルシステム層概要を取得するには。
答え2
前述のように、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
問題のコマンドの基本的な概要は次のとおりです。
- sudo - rootでコマンドを実行する
- make - スクリプトを実行してソースからビルドする
sudoコマンドはrootとして渡されたコマンドを実行するので、makeコマンドにスーパーユーザー権限があることを意味します。これは、makefileが悪意のあるスクリプトまたは呼び出す可能性のあるスクリプトが悪意のある場合にシステムに害を及ぼす可能性があることを意味します。
つまり、ソフトウェアを信頼しない場合はインストールしないでください。ソフトウェアを信頼する場合は、rootとして実行しても何の害もありません。
メモ:
sudo make install
su; make install
ほとんどの場合と同じです。