将我的 /home 移至新分区,然后重新安装 Ubuntu 10.10 后,我无法运行 /home 中存在的任何 x-executable 类型的文件。我只收到“没有这样的文件或目录”错误。其他类型的可执行文件(如 shell 脚本和 java 可执行文件)则正常。
下面是 strace 在一个可执行文件上的输出:
execve("/home/evan/android-sdk/platform-tools/adb", ["/home/evan/android-sdk/platform-"...], [/* 41 vars */]) = -1 ENOENT (No such file or directory)
dup(2) = 3
fcntl(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7c4c7b3000
lseek(3, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
close(3) = 0
munmap(0x7f7c4c7b3000, 4096) = 0
exit_group(1) = ?
我发布了我原来的问题在 Stack Overflow 上,然后有人建议我将其提交给 serverfault。
答案1
该分区可能已挂载noexec
,在这种情况下,即使脚本或程序被标记为可执行,也无法直接执行它们。重新挂载该分区exec
。
答案2
问题是可执行文件是为 32 位架构制作的,而我运行的是 amd64。很容易解决,只需安装 ia32-libs 包即可。