低级误操作,Linux rpm自杀了!

2024年 6月 8日 65.1k 0

问题现象:

测试环境,Linux 通过rpm -ivh 安装软件时提示如下错误:
-bash: /bin/rpm: No such file or directory

问题分析:

刚才rpm还能用,为什么现在用不了了,之前只是卸载了mariadb-connector-xxx包,为什么rpm命令没了?

问题原因:

仔细看下刚才执行的命令,原来发生了一个低级误操作,rpm把自己卸载了!
打算执行的命令:
root@CJC-DB-01:/soft/mysql#rpm -e mariadb-connector-c-3.0.6-8.p01.ky10.x86_64 --nodeps
实际执行的命令:
当手动执行 rpm -e 后发现包名太长了,还是复制吧,结果不小心又重复复制了一次rpm -e命令,最终执行了如下操作:
root@CJC-DB-01:/soft/mysql#rpm -e rpm -e mariadb-connector-c-3.0.6-8.p01.ky10.x86_64 --nodeps
最终实际执行的是 rpm -e rpm 命令。

解决方案:

找到rpm命令对应的包名,然后重新安装对应的包:

[root@cjc-db-01 soft]# yum provides "*/rpm" > 0608.log

例如:rpm-4.11.3-32.el7.x86_64

结果发现yum命令依赖rpmrc,也被卸载了,无法正常使用yum命令。

root@CJC-DB-01:/soft/mysql#yum list
error: Unable to open /usr/lib/rpm/rpmrc for reading: No such file or directory.
Traceback (most recent call last):
  File "/bin/yum", line 57, in <module>
    from dnf.cli import main
  File "/usr/lib/python3.7/site-packages/dnf/__init__.py", line 30, in <module>

尝试直接把其他目录下rpm文件拷过来:

拷贝其他机器的rpm文件

root@CJC-DB-02:/bin#scp -P 22 rpm* root@192.168.0.101:/soft/tmp
root@CJC-DB-01:/soft/tmp#ls -lrth
total 296K
-rwxr-x--- 1 root root 23K May 31 16:23 rpm
-rwxr-x--- 1 root root 19K May 31 16:23 rpm2archive
-rwxr-x--- 1 root root 15K May 31 16:23 rpm2cpio
-rwxr-x--- 1 root root 33K May 31 16:23 rpmbuild
-rwxr-x--- 1 root root 19K May 31 16:23 rpmdb
-rwxr-x--- 1 root root 19K May 31 16:23 rpmdb2solv
-rwxr-x--- 1 root root 15K May 31 16:23 rpmdumpheader
-rwxr-x--- 1 root root 15K May 31 16:23 rpmmd2solv
-rwxr-x--- 1 root root 19K May 31 16:23 rpmkeys
-rwxr-x--- 1 root root 19K May 31 16:23 rpms2solv
-rwxr-x--- 1 root root 23K May 31 16:23 rpmquery
-rwxr-x--- 1 root root 19K May 31 16:23 rpmsign
-rwxr-x--- 1 root root 23K May 31 16:23 rpmverify
-rwxr-x--- 1 root root 19K May 31 16:23 rpmspec

将文件拷贝到/bin目录下:同名的文件跳过,不覆盖

root@CJC-DB-01:/soft/tmp# cp -r * /bin/

还是不行

root@CJC-DB-01:/soft/tmp#rpm -qa|grep mysql
error: Unable to open /usr/lib/rpm/rpmrc for reading: No such file or directory.

根据报错提示,继续拷贝/usr/lib/rpm/目录下所有文件

root@CJC-DB-02:/root#scp -P 22 /usr/lib/rpm/* root@192.168.0.101:/soft/tmp

将文件拷贝到/usr/lib/rpm/目录下:同名的文件跳过,不覆盖

root@CJC-DB-01:/soft/tmp# cp -r * /usr/lib/rpm/

可以了,rpm和yum命令恢复正常

root@CJC-DB-01:/soft/tmp#rpm -qa|grep mysql
python2-mysqlclient-1.3.12-7.ky10.x86_64
qt5-qtbase-mysql-5.11.1-13.p01.ky10.x86_64

注意:

非常规修复方式,仅供参考,生产环境请勿使用!

###chenjuchao 20240608###

欢迎关注我的公众号《IT小Chen》

低级误操作,Linux rpm自杀了!-1

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论