我使用以下命令卸载 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,手动下载它们,例如。使用wget
或curl
并使用 手动安装它们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_64
和rpm -q python-iniparse
输出python-iniparse-0.3.1-2.1.el6.noarch
。因此,您必须在 CentOS 存储库中准确查找这些文件名。您可以在目录中的文件中找到存储库的地址/etc/yum.repos.d
。
下载这些 RPM 文件并安装它们。
如果yum
仍然不起作用,则可能是 Python 包相互依赖并且仍然缺少某些内容。在另一台机器上检查以下内容:
rpm -qa | grep python
并在损坏的机器上安装所有指定的软件包。