在编译一个deb包的时候,运行dpkg-buildpackage之后,出现下面的错误:
fakeroot debian/rules clean
/usr/bin/fakeroot: debian/rules: /usr/bin/make: bad interpreter: 权限不够
dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 126
|
于是先后尝试了以下解决方法:
1. 检查包内文件权限,检查/bin/bash /bin/sh可执行权限,检查当前用户权限,结果显示一切正常;
2. 切换到root用户再次尝试编译,结果出现同样错误;
3. 创建新用户再次尝试,同样出错;
最后终于找到了问题所在:
原来是因为编译的包所在的分区在挂载的时候默认是以"noexec"方式挂载的,所以才造成在此分区上的可执行文件或脚本无法正常执行。下面是"man mount" 中关于"exec"的片段:
exec Permit execution of binaries.
noexec Do not allow direct execution of any binaries on the mounted filesystem. (Untilrecently it was possible to run binaries anyway using a command like /lib/ld*.so /mnt/binary. This trick fails since Linux 2.4.25 /2.6.0.)
|
那么解决办法就是:在/etc/fstab中的条目中加入exec选项:
1 # UNCONFIGURED FSTAB FOR BASE SYSTEM 2 # to mount userdata volume. 3 /dev/hda8 /home/username/userdata ext3 rw,users,exec 0 0
|
然后重新挂载此分区即可,再进入源码包试一下,发现编译正常了。
参考:
阅读(8706) | 评论(0) | 转发(0) |