Python: 找不到命令错误
有人在红帽服务器上搞错了符号链接,现在我无法使用Python了,我尝试了很多方法。当我尝试运行Python时,系统提示“python: 找不到命令”。
我有以下信息:
alternatives --display python
python - status is auto.
link currently points to /usr/bin/python2.4
/usr/bin/python2.4 - priority 1
Current `best' version is /usr/bin/python2.4.
当我尝试执行 ln -sf /usr/bin/python /usr/bin/python2.4
时,出现了以下问题:
ln: accessing `/usr/bin/python2.4': Too many levels of symbolic links
当我删除 /usr/bin/python
时,也没有帮助。
我还用这些命令检查过:
readlink /usr/bin/python
/etc/alternatives/python
readlink /usr/bin/python2.4
/usr/bin/python
readlink python
/usr/bin/python
看起来一切应该正常。有什么建议吗?
1 个回答
1
我觉得你把 ln
命令搞反了。你出现这个错误的原因是因为你在创建一个指向 python
的链接 python2.4
,但实际上 python
本身也是一个指向 python2.4
的链接。你需要把 ln
命令中的源和目标位置调换一下,这样就可以正常工作了。
我自己从来没用过 alternatives,但你可能不应该手动编辑这些符号链接。
编辑:
正如我在评论中提到的,你可能覆盖了原来的 python 可执行文件。在我能接触到的一个 RHEL5 系统中,/usr/bin
目录的样子是这样的:
$ ls -l /usr/bin/python*
-rwxr-xr-x 2 root root 8304 Oct 23 2012 /usr/bin/python
lrwxrwxrwx 1 root root 6 Jan 11 2013 /usr/bin/python2 -> python
-rwxr-xr-x 2 root root 8304 Oct 23 2012 /usr/bin/python2.4
如果你查看这两个非符号链接文件的 inode,你会发现它们其实是同一个文件:
$ stat -c %i /usr/bin/python
3290164
$ stat -c %i /usr/bin/python2.4
3290164
所以你需要找到原来的 python 可执行文件,然后我们可以想办法按照原来的方式链接它们。再说一次,我从来没用过 alternatives,所以也许它能做一些移动可执行文件的魔法,但我对此表示怀疑。