清除后 DNF 和 YUM 不工作 usr/lib/python3.5/site-packages/

DNF and YUM does not work after Purging usr/lib/python3.5/site-packages/

我正在摆弄 Fedora,试图卸载 python 模块。我找不到我要找的那个,所以半个 linux-灵长类动物的大脑想到了一个想法,来执行这个。

sudo rm -rf /usr/lib/python3.5/site-packages/

它做到了,只有在那之后我才意识到我是多么愚蠢。 DNF 和 YUM 依赖于它,每当我执行 DNF 我得到

Traceback (most recent call last):
  File "/usr/bin/dnf", line 57, in <module>
    from dnf.cli import main
ImportError: No module named 'dnf'

当我执行 YUM

Redirecting to '/usr/bin/dnf ' (see 'man yum2dnf')

Traceback (most recent call last):
  File "/usr/bin/dnf", line 57, in <module>
    from dnf.cli import main
ImportError: No module named 'dnf'

唯一有效的是 yum-deprecated。其他一切都在动荡中。

那么我该如何解决这个问题?

您基本上删除了很多 python 个文件。系统很大一部分依赖于python,包括dnf本身,写在python.

最好的办法是备份所有文件并重新安装系统。如果 yum-deprecated 仍然有效,您可能会幸运地重新安装 dnf:

yum-deprecated reinstall "dnf*"

但您很可能需要更多的包裹来完成相同的程序。

使用'rpm -Va' 来识别缺少文件的包。然后,您必须从 Fedora 镜像下载匹配的 RPM 文件,然后使用 rpm --reinstall 修复这些文件。

higher-level dnf 和 yum 软件包依赖于 Python,因此它们很可能只是被破坏了。幸运的是,lower-level rpm 命令没有,所以如果 python 个包都被删除了,这应该会让你恢复原样。

清除 Python3 的 Site-Packages 目录会删除 Fedora 正常运行所需的大量库。这意味着 dnfyum 等工具不起作用。

这些是我采取的解决此问题的步骤。

第 1 步:安装 yum-deprecated。只需在终端上输入 yum-deprecated,它会询问您是否要安装它。输入 y 它将被安装。

第 2 步:运行 这个 Bash 命令

rpm -qa | egrep "^python3" | sed ':a;N;$!ba;s/\n/ /g' | xargs sudo yum-deprecated reinstall -y

这会找到已安装的 python 3 个软件包的所有名称,并重新安装它们。

我自己的注意事项:永远不要 运行 命令像 sudo rm -rf /usr/lib/python3.5/site-packages/ 一样。

我有个朋友遇到了同样的问题

他试图通过一些惊人的命令 rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps whereis python3 |xargs rm -frv.
在 linux 服务器中卸载 python3.7 这导致 yumdnf 损坏。

因为找不到yum-deprecated,所以有以下尝试。

我把/usr/bin/yum换成了本地的python3.8版本,结果导致ModuleNotFoundError: No module named 'dnf',并没有解决。

网上下载很多rpm包不是个好办法。而且我也不能使用 yum。但是我有另一个相同的 os linux 服务器,所以我尝试复制关于 python3.7.

的相关文件
$ rpm -ql python3-3.7.0-9.h4.eulerosv2r8.aarch64> py.log
$ while read -r line;do dirname $line |xargs -I {} ssh root@$remoteip "mkdir -p {}" ;scp $line root@$remoteip:$line  ;done<py.log

$ rpm -ql python3-libs-3.7.0-9.h4.eulerosv2r8.aarch64 >pylib.log
$ while read -r line;do dirname $line |xargs -I {} ssh root@$remoteip "mkdir -p {}" ;scp $line root@$remoteip:$line  ;done<pylib.log

scp -r /usr/lib/python3.7/site-packages root@$remoteip:/usr/lib/python3.7/

我就这样恢复了yum

这会有所帮助。

yum update python*

yum install dnf-data dnf-plugins-core libdnf-devel libdnf python2-dnf-plugin-migrate dnf-automatic