![](/img/trans.png)
[英]“PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.5/site-packages'” installing Django
[英]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 正常运行所需的许多库。 这意味着dnf
和yum
等工具不起作用。
这些是我为解决此问题而采取的步骤。
第 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 --nodeps
和whereis python3 |xargs rm -frv
在 linux 服务器中卸载whereis python3 |xargs rm -frv
。
这导致yum
和dnf
损坏。
因为找不到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.