web-dev-qa-db-ja.com

「make」を使用して何かをインストールしようとすると、許可が拒否されるのはなぜですか?

何かをインストールしようとしていますが、エラーがスローされます:Permission deniedmakeを実行しようとすると。

私は、unix/linuxの普遍的なルールもユーザーの権利も好きではありません。私が最も推測しているのは、ログインしているユーザーはmakeコマンドを実行する権限を持っていないことです。

なぜPermission deniedそして、許可が与えられるようにするには、何をチェックまたは構成する必要がありますか?

編集

エラーメッセージ:

gcc -I. -O3 -o pp-inspector  pp-inspector.c
make: execvp: gcc: Permission denied
make: [pp-inspector] Error 127 (ignored)
gcc -I. -O3 -c tis-vnc.c -DLIBOPENSSL -DLIBOPENSSLNEW -DLIBIDN -DHAVE_PR29_H -DLIBMYSQLCLIENT -DLIBPOSTGRES -DHAVE_MATH_H -I/usr/include/mysql
make: execvp: gcc: Permission denied
make: *** [tis-vnc.o] Error 127
20
CheeseConQueso

多くのソースパッケージ(たとえば、ほとんどのGNUソフトウェア)の場合、ビルドシステムはDESTDIRmake変数を知っている可能性があります。

 make install DESTDIR=/tmp/myinst/
 Sudo cp -va /tmp/myinst/ /

このアプローチの利点は、make installはルートとして実行する必要がないため、ルートとしてコンパイルされたファイル(またはビルドツリーのルート所有ファイル)で終わることはありません。

14

エラーメッセージ全体を提供する方がはるかに便利です。 make installの場合は、おそらくシステムディレクトリに何かをインストールしようとしていて、rootではありません。ルートアクセスがある場合は、実行できます

Sudo make install

または、ルートとしてログインし、プロセス全体をルートとして実行します。

8
Jarryd

実行chmod 777 -R scripts/、それは私のためにうまくいった;)

7
D3473R

問題は、/ tmpなどのマウントポイントの「安全な」セットアップによくあります。

noexeccat /etc/mtabおよびSudo mountで確認)がマウントされている場合、(一時)フォルダー内からバイナリを実行したり、スクリプトをビルドしたりする権限はありません。

例えば。一時的に再マウントするには:

 Sudo mount -o remount,exec /tmp

または、永続的に変更するには、/etc/fstabnoexecを削除します

5
sehe

特定のファイルをリストしていますが、私はあなたと非常に似たエラーメッセージがありました:

$ make
make: execvp: ../HoughLineExtractor/houghlineextractor.hh: Permission denied
make: *** [../HoughLineAccumulator/houghlineaccumulator.o] Error 127

$ Sudo make
make: execvp: ../HoughLineExtractor/houghlineextractor.hh: Permission denied
make: *** [../HoughLineAccumulator/houghlineaccumulator.o] Error 127

私の場合、次のように行の継続を示すために末尾のスラッシュを追加するのを忘れていました。

${LINEDETECTOR_OBJECTS}:\
    ../HoughLineAccumulator/houghlineaccumulator.hh  # <-- missing slash!!
    ../HoughLineExtractor/houghlineextractor.hh

検索エンジンからここに着く誰かを助けることを願っています。

3
Drew Noakes