当我尝试使用“make”来安装某些东西时,为什么我会被拒绝?

时间:2012-02-02 02:53:46

标签: linux command-line permissions makefile

我正在尝试安装某些内容,当我尝试在其上运行Permission denied时,它会给我一个错误:make

我不太喜欢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

5 个答案:

答案 0 :(得分:14)

在许多源包(例如大多数GNU软件)上,构建系统可能知道DESTDIR make 变量,因此您经常可以这样做:

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

这种方法的优点是make install不需要以root身份运行,因此您不能最终得到以root身份编译的文件(或构建树中的root拥有文件)。

答案 1 :(得分:8)

给我们整个错误信息会更有用。如果它是make install那么你可能正在尝试将某些东西安装到系统目录而你不是root。如果您具有root访问权限,则可以运行

sudo make install

或以root身份登录并以root身份执行整个过程。

答案 2 :(得分:6)

执行chmod 777 -R scripts/,它对我来说很好用;)

答案 3 :(得分:5)

问题通常在于“安全”设置挂载点,例如/ tmp

如果它们已挂载noexec(请与cat /etc/mtab和/或sudo mount一起检查),则无权从(临时)文件夹中执行任何二进制文件或构建脚本。

E.g。暂时重新安装:

 sudo mount -o remount,exec /tmp

要永久更改,请移除noexec

中的/etc/fstab

答案 4 :(得分:3)

我有一个非常类似的错误消息,虽然列出了一个特定的文件:

$ 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

希望通过搜索引擎帮助其他人。