Centos Stream9下重新安装yum和DNF以及python3
我是如何干掉yum和dnf又给装回来的
以下是参考的技术文档:没用任何引流的方式,请审核审核一下参考来源。以下是原创文章并非,绝无仅有的一篇删了yum和dnf以及python的文章。如果这也被驳回,那我没办法想了。
所属环境:Centos stream 9 docker 版本,卸载掉的工具主要是rpm和rm这两个最基本的工具
所需镜像来源腾讯云:https://mirrors.tencent.com/centos-stream/9-stream/
所需知识库有点多,需客观对待,比如dnf是如何工作的,yum是如何工作的等
参考源码和dnf开源社区:https://dnf.readthedocs.io/en/latest/use_cases.html
GitHub仓库dnf的官方仓库:https://github.com/rpm-software-management/dnf
理解dnf的工作原理以及他是在哪个地方的源码编译的,以及利用python3如何定义源的问题
参考dnf开源社区的一些参考https://docs.fedoraproject.org/en-US/quick-docs/dnf/
1、首先dnf并不是rehat的一个分支
1.理解一些常识错误,(yum 这个命令并不是通过编译来实现,他本身是一个python的一种表达,通过dnf这个来实现rpm的更新和清理cache,具体可以看下yum.conf 。你可以通过命令which yum和whereis yum得到一些你想要的文档和配置,这有点困难呢~)
2.dnf命令这里直接省略,因为dnf只需常用的一些命令就能实现更新。比如microdnf 也是dnf的一个分支。
3.yum命令其实是调用dnf命令的,可以参考bin下的软链接,比如查看bin下的yum
代码语言:txt复制ls -il /bin yum
2、卸载yum和dnf以及python
查看python安装包
代码语言:txt复制rpm -qa |grep python
查看yum安装包
代码语言:txt复制rpm -qa |grep yum
查看dnf安装包
代码语言:txt复制rpm -qa |grep dnf
骚操作来了
强制卸载python及其相关包
代码语言:txt复制rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps
删除残留文件
代码语言:txt复制whereis python|xargs rm -frv
强制卸载yum及其相关包
代码语言:txt复制rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps
删除残留文件
代码语言:txt复制rm -rf /etc/yum.repos.d/*
whereis yum|xargs rm -frv
好了到这部,基本上你的操作就没了,yum和python也不会打理你了。
dnf现在还报错,原因python3被你删了(小知识,cento stream 9 没有python2)
强制卸载dnf及其相关包
代码语言:javascript复制rpm -qa|grep dnf|xargs rpm -ev --allmatches --nodeps
删除残留文件
代码语言:javascript复制whereis dnf|xargs rm -frv
好了整个流程就是这样 ,想装回来咋办????这里很多个问号,无从下手了,凉拌了。整个互联网没有这个文章,有也是2019年关于centos7或者centos8的,没有咋办,向大佬们取经???基本上没用,除了给你看看就没其他方案了。这就是现实。
首先想到的是试试能不能通过编译make 和make install的,答案是否定的。操作了pyenv我想当然的以为装个这个应该就能是python环境了吧,结果答案是否定的,为什么?我想这里可能涉及到Linux核心编程这一书,书中非常详细的讲了这个过程。
关于python的源,国内就华为云有
结果很明显,我安装后dnf和yum后,会报错,比如libimaevm.so.4没找到这个库,咋办?这里不得不说这个网站了
https://rpmfind.net/linux/rpm2html/search.php?query=libimaevm.so.4
向这个网站致敬,没有他,你无法找到依赖无法找到libxxx错误,以及一些常用的库都有提供,貌似只有2020年以后的可以使用。查遍所以AI和chatgpt,没有一个回复正确,咋办,手动呗。就是有这个决心。
代码语言:txt复制rpm -Uvh xxx.rpm
在镜像
https://mirrors.tencent.com/centos-stream/9-stream/BaseOS/x86_64/os/Packages/
包中找到python的包安装一遍,这里的依赖等会一并发出来。
比如python的依赖 dnf的依赖等等。
过程中会遇到(X86_64)这样的直接忽略
代码语言:txt复制rpm -Uvh xxx.rpm --nodeps
这样就大公告成了。但是,你以为这样就可以了??????
哈哈哈,你装了环境,装了包,你的dnf还是失败,提示dnf包没用安装libdnf包。哈哈哈哈
代码语言:txt复制systemctlenable--nowdnf-automatic-notifyonly.timer
启动dnf automatic
原理请看这篇:https://dnf.readthedocs.io/en/latest/automatic.html
这回你觉得大公告成了????没那么容易,你的python环境是在系统里,但是环境还没放你配置文件呢
所以记得编辑一下.bashrc
然后记得设置一些生效
代码语言:txt复制echo $PATH=你的python所在文件夹;你的yum所在文件夹;你的dnf所在文件夹
然后启用 比如你是root用户登录,就在root目录下运行上面和下面的环境配置参考:
代码语言:txt复制source ./.bashrc
真辛苦,终于搞定。
忘了关键的依赖没写,等会写,让我先高兴一下,喝口水。
-rw-r--r-- 1 root root 491908 Aug 7 13:38 dnf-4.14.0-9.el9.noarch.rpm
-rw-r----- 1 root lighthouse 40448 Nov 13 2023 dnf-data-4.14.0-9.el9.noarch.rpm
-rw-r--r-- 1 root root 70992 Aug 7 14:55 ima-evm-utils-1.5-2.el9.x86_64.rpm
-rw-r--r-- 1 root root 676270 Aug 7 14:52 libdnf-0.69.0-9.el9.x86_64.rpm
-rw-r--r-- 1 root root 1047248 Aug 7 13:19 lvm2-libs-2.03.24-1.el9.x86_64.rpm
-rw-r--r-- 1 root root 27114 Aug 7 13:16 python3-3.9.19-4.el9.x86_64.rpm
-rw-r--r-- 1 root root 473473 Aug 7 13:38 python3-dnf-4.14.0-9.el9.noarch.rpm
-rw-r--r-- 1 root root 287423 Aug 7 14:12 python3-gpg-1.15.1-6.el9.x86_64.rpm
-rw-r--r-- 1 root root 104829 Aug 7 14:12 python3-hawkey-0.69.0-12.el9.x86_64.rpm
-rw-r--r-- 1 root root 50106 Aug 7 14:13 python3-libcomps-0.1.18-1.el9.x86_64.rpm
-rw-r--r-- 1 root root 799548 Aug 7 14:13 python3-libdnf-0.69.0-9.el9.x86_64.rpm
-rw-r--r-- 1 root root 8481921 Aug 7 14:18 python3-libs-3.9.19-4.el9.x86_64.rpm
-rw-r--r-- 1 root root 231066 Aug 7 13:16 python3-libxml2-2.9.13-6.el9.x86_64.rpm
-rw-r--r-- 1 root root 1181980 Aug 7 14:43 python3-pip-wheel-21.2.3-8.el9.noarch.rpm
-rw-r--r-- 1 root root 66904 Aug 7 13:17 python3-rpm-4.16.1.3-32.el9.x86_64.rpm
-rw-r--r-- 1 root root 482652 Aug 7 14:44 python3-setuptools-wheel-53.0.0-9.el9.noarch.rpm
-rw-r--r-- 1 root root 92343 Aug 7 13:17 yum-4.14.0-9.el9.noarch.rpm
这是一篇技术文章,文章参考的技术有点多,为了方便阅读,部分友商云的已经去除。