问题现象:
测试环境,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》