Chinaunix首页 | 论坛 | 博客
  • 博客访问: 224483
  • 博文数量: 60
  • 博客积分: 2440
  • 博客等级: 大尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-12 16:38
文章分类

全部博文(60)

文章存档

2011年(2)

2010年(16)

2009年(42)

我的朋友

分类: LINUX

2010-08-10 10:31:58

在编译一个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) |
给主人留下些什么吧!~~