-bash: /usr/bin/yum: /usr/bin/python: 坏的解释器: 权限被拒绝

6
我是一个新手在Centos操作系统中,我正在尝试创建一个应用程序。但是,由于默认版本只有Python 2.6,而我的应用程序需要Python 2.7,因此我尝试升级版本。结果,我不小心删除了文件夹/usr/bin/python,并通过make install安装了Python 2.7。之后,我重新创建了文件夹/usr/bin/python并运行了命令sudo ln -s /usr/bin/python2.7 /usr/bin/python。但是,当我尝试运行YUM命令时,出现错误:

-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: Permission denied

这是目录/usr/bin/python的权限信息:

drwxrwxrwx 2 root root 4096 Mar 8 00:19 python


类似的问题:https://dev59.com/J4jca4cB1Zd3GeqPx4n9 - rutsky
3
/usr/bin/python 应该是一个可执行文件或二进制文件,而不是一个目录。 - MattDMo
我已将其更改为可执行文件,但现在出现错误-bash:/usr/bin/yum:/usr/bin/python:解释器错误:没有这样的文件或目录。 - aneesh
6个回答

11

在CentOS中,需要将/usr/bin/python指向Python 2.6,而不是其他版本。运行以下命令:

sudo rm -rf /usr/bin/python
sudo ln -s /usr/bin/python2.6 /usr/bin/python

至少要修复它的这一部分。下次构建Python时,请使用默认设置并将其安装到/usr/local/bin,而不是/usr/bin。这就是/usr/local层次结构的用途 - 用户安装的程序。/usr/usr/bin应该仅用于系统安装的程序(例如由yum或其图形等效项安装的程序),除非您知道自己在做什么,否则请勿使用。为了在/usr/local/bin中使用与/usr/bin中相同命名的程序而不是其对应程序,打开您的~/.bashrc~/.bash_profile(取决于您的系统)并将以下内容添加为最后一行:

export PATH=/usr/local/bin:$PATH

重新启动你的命令行会话,这样你就可以继续了。


1
感谢您的回答。但是我还有一个问题,文件路径/usr/bin/python2.6也不存在。我想我之前删除过它。那我该怎么办呢?我想因为这个原因,按照您的步骤后我遇到了错误。-bash:/usr/bin/yum:/usr/bin/python:错误的解释器:没有那个文件或目录。 - aneesh
2
@aneesh 在未来,请不要随意删除您不理解的内容。Linux默认情况下没有任何命令行“垃圾箱”可供使用以进行恢复,除非您在开始操作之前备份了系统。您可以尝试从源代码构建2.6.9,但不能保证它会起作用。您可能需要重新安装系统。 - MattDMo
lrwxrwxrwx 1 root root 37 Mar 8 01:19 python -> /home/odoouser/Python-2.6.9 这是显示权限的内容。 - aneesh
@aneesh 在编译2.6.9后,你是否运行了make install并预先配置好安装到/usr/bin中?你刚才发布的内容看起来像是一个符号链接,指向你解压2.6.9源代码的目录。就像我之前说的那样,/usr/bin/python必须是一个二进制文件的链接或实际二进制文件本身,而不是一个目录的链接。你不能“运行”一个目录... - MattDMo
现在我尝试运行 whereis python,结果如下:python:/usr/bin/python2.6-config /usr/lib/python2.6 /usr/lib64/python2.6 /usr/local/bin/python2.6-config /usr/local/bin/python2.6 /usr/local/bin/python2.7-config /usr/local/bin/python /usr/local/bin/python2.7 /usr/local/lib/python2.6 /usr/local/lib/python2.7 /usr/include/python2.6 /usr/share/man/man1/python.1.gz。 - aneesh
显示剩余6条评论

4
yum无法与Python2.7兼容。 您可以按照以下步骤操作: vim /usr/bin/yum#!/usr/bin/python 更改为 #!/usr/bin/python2.6 如果您的python2.6被删除,则需要重新安装它们,并将目录指向/usr/bin/yum中的python2.6目录。

3

很简单,因为 Python 包已被删除, yum 命令将不起作用。

请使用以下链接安装软件包:

转到链接并下载Python软件包

wget http://mirror.centos.org/centos/7/sclo/x86_64/rh/python27/python27-1.1-26.1.el7.x86_64.rpm
rpm -ivh python27-1.1-26.1.el7.x86_64.rpm

然后 yum 就可以工作了。


1
如果/usr/bin/python是一个目录,这个操作可能会失败。 - tripleee
Python与yum没有关系。yum是适用于CentOS/Fedora/Redhat的软件包管理器。您可以使用yum安装Python软件包。还可以运行命令whereis python并更新该命令的输出作为解释器。 - error404
你可以检查yum实用程序的运行位置,它位于/bin/yum: 当你执行cat命令时,它会显示在第一个Python解释器中,在\bin\yum PF之下的几行代码:[root@osboxes ~]# cat /bin/yum #!/usr/bin/python import sys try: import yum except ImportError: print >> sys.stderr, """\ - Wajid Shaikh

0

这个问题是由于yum文件的开头写了#!/usr/local/bin/python2.6,写成了二进制文件,不是目录,而是Python二进制文件。


0

CentOs 7 的解决方案:

dnf reinstall python-2.7.5-92.el7_9.x86_64
dnf reinstall yum 

如果已经安装了Python3,请使用dnf先将其卸载。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

-1

-bash: /usr/bin/yum: /usr/bin/python: 解释器错误: 权限被拒绝

  1. 首先,使用以下命令行删除Python:

    -- sudo rpm -e python

  2. 其次,检查安装此命令行的软件包:

    -- sudo rpm -q python

  3. 然后,安装软件包:

    -- sudo yum install python*

    我认为这个问题会得到解决。


错误:sudo yum install python* sudo: 无法执行 /bin/yum:没有那个文件或目录 - sirmagid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接