我正在尝试安装某些内容,当我尝试在其上运行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
答案 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
希望通过搜索引擎帮助其他人。