繁体   English   中英

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

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

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

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 其他一切都处于混乱之中。

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

清除 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/这样的sudo rm -rf /usr/lib/python3.5/site-packages/

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

更高级别的 dnf 和 yum 包依赖于 Python,因此它们很可能会被破坏。 幸运的是,较低级别的 rpm 命令没有,所以如果你已经删除了所有 python 包,这应该会让你恢复状态。

你基本上删除了很多 python 文件。 系统很大一部分依赖于python,包括dnf本身,它是用python编写的。

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

yum-deprecated reinstall "dnf*"

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

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

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

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

我把/usr/bin/yum改成本地python3.8版本,但是导致ModuleNotFoundError: No module named 'dnf' at last,没有解决。

在互联网上下载许多 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM