我将/etc/*
文件从一台 Linux 服务器传输到另一台,现在出现了一个奇怪的错误。两者都是 Debian Squeeze。
当我运行命令时,例如ssh
,出现错误:
bash: /usr/bin/ssh: 没有这样的文件或目录
看起来二进制文件存在:
-rwxr-xr-x 1 root root 358756 九月 21 14:30 /usr/bin/ssh
ss
当我键入并按时,Bash 还会自动完成命令Tab。我尝试过重新安装、清除等,但没有解决任何问题。可能有一些东西缓存在下面/etc/
,但我不知道到底是什么。
答案1
我认为吉姆·帕里斯的评论是正确的。即使指定的文件存在,如果该文件的动态加载器不存在,您也会得到“没有这样的文件或目录”。一种常见的情况是尝试从内核支持但不支持用户态系统的不同体系结构运行二进制文件 - 通常是未安装 32 位库的 64 位系统上的 32 位二进制文件。看在 64 位系统上运行 32 位二进制文件时收到“未找到”消息有关该案例的更详细解释。
在这里,可能会/usr/bin/ssh
使用安装在新系统上不同位置的库。由于您复制了动态链接器的缓存文件/etc/ld.so.cache
,因此动态链接器正在不存在的位置查找该库。运行ldconfig
以更新缓存。
也有可能您已启用预链接。如果是这样,请删除/etc/prelink.cache
.