/usr/bin/python:错误的解释器:没有这样的文件或目录(删除了 python rpm,现在 python 不起作用,yum 不起作用)

/usr/bin/python:错误的解释器:没有这样的文件或目录(删除了 python rpm,现在 python 不起作用,yum 不起作用)

我使用以下命令卸载 OpenSSH:

for i in $(rpm -qa | grep openssh);do sudo rpm -e $i --nodeps;done

然后出于某种原因,我不知道为什么我认为这是一个好主意,我运行了这个命令来删除 python:

for i in $(rpm -qa | grep python);do sudo rpm -e $i --nodeps;done

现在,当我运行 sudo yum update 时,我得到以下信息:

bash: /bin/yum: /usr/bin/python: 错误的解释器: 没有这样的文件或目录

/bin/yum 的第一行内容如下:

#!/usr/bin/python

然后我检查了 /usr/bin 目录中的 python

ls -lha /usr/bin | grep python

但什么也没回来。

答案1

在网络上搜索适当的 Python RPM,手动下载它们,例如。使用wgetcurl并使用 手动安装它们rpm -i

从您的评论中我看到您有另一台具有相同 CentOS 版本的机器,所以您很幸运:)。您可以获得要安装哪些软件包的确切信息。在另一台机器上,输入

rpm -q -R yum

这将列出所有yum依赖项。例如,在我可以访问的旧版 CentOS 上,它列出了以下内容:

/usr/bin/python
config(yum) = 3.2.29-40.el6.centos
pygpgme
python >= 2.4
python(abi) = 2.6
python-iniparse
python-sqlite
python-urlgrabber >= 3.9.0-8
rpm >= 0:4.4.2
rpm-python
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
yum-metadata-parser >= 1.1.0
yum-plugin-fastestmirror
rpmlib(PayloadIsXz) <= 5.2-1

您可以忽略名称中没有的条目,python因为您没有卸载它们。您也可以忽略该python(abi)条目,因为它只是一个特征由包提供python。那么剩下的就是:

python >= 2.4
python-iniparse
python-sqlite
python-urlgrabber >= 3.9.0-8
rpm-python

然后对于每个包运行

rpm -q <packagename>

它将为您提供已安装软件包的确切文件名/版本。例如,在机器上我有rpm -q python输出python-2.6.6-36.el6.x86_64rpm -q python-iniparse输出python-iniparse-0.3.1-2.1.el6.noarch。因此,您必须在 CentOS 存储库中准确查找这些文件名。您可以在目录中的文件中找到存储库的地址/etc/yum.repos.d

下载这些 RPM 文件并安装它们。

如果yum仍然不起作用,则可能是 Python 包相互依赖并且仍然缺少某些内容。在另一台机器上检查以下内容:

rpm -qa | grep python

并在损坏的机器上安装所有指定的软件包。

相关内容