linux卸载exe文件怎么恢复,linux中不小心将rpm命令卸载了,怎么恢复?

今天在搭建mysql的集群服务时,安装mysql集群服务前,先卸载原来mysql的软件包,不小心将rpm的命令也给卸载掉了,这下惨了,什么也做不了了。在google了翻了好多个页面,甚至官网也看了,没能解决我的问题,根据本人多年linux的经验以及linux系统的rpm软件包安装特点的敏感,本人想出了以下的方法,请注意:独创!为做集群,这里用到了两台机器,下面是拓扑图:

xiaolyu77(192.168.31.77rpm命令被卸载的机器)   -----------> 参照   xiaolyu76(192.168.31.76 正常机器) 。

1. 问题出现:

[root@xiaolyu77 ~]# rpm -e --nodeps rpm -e mysql-libs-5.1.73-7.el6.x86_64

[root@xiaolyu77 ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm

-bash: /bin/rpm: No such file or directory

就是一不小心将rpm的命令用rpm强制给卸载了。可以看到已经不存在rpm命令了。

2. 检查rpm命令安装在哪里:

1.故障机器查看rpm命令

[root@xiaolyu77 ~]# whereis rpm

rpm: /etc/rpm /usr/lib/rpm

7d024b18256e23b7955c146660bb9de4.png

2. 正常机器查看rpm命令

[root@xiaolyu76 ~]# whereis rpm

rpm: /bin/rpm /etc/rpm /usr/lib/rpm /usr/share/man/man8/rpm.8.gz

[root@xiaolyu76 ~]#

8c020bb9fac38a6fe8aa8cac834c9de7.png

3. 解决方案

从2.中可以看到77机器上rpm命令被卸载的,连man手册也没有了,bin下面更是没有。

思路:想到编译安装的软件的卸载方法是直接将安装路径下的文件直接删掉即可,那么我们可不可以缺什么补什么呢?显然可以啊。反过来不是一样么。

1. 补全whereis缺少的文件

[root@xiaolyu76 ~]# scp /bin/rpm  root@xiaolyu77:/bin/

[root@xiaolyu76 ~]# scp /usr/share/man/man8/rpm.8.gz  root@xiaolyu77:/usr/share/man/man8/

2fded255a1d0be40bce7a1248034040e.png

2. 补全安装目录下缺少的文件

通过whereis命令我们看到/ur/lib/rpm这个文件或者文件夹,实际上这个就是rpm命令的安装路径。现在比较两台机器下该目录的文件是否一致:

正常机器/usr/lib/rpm目录下的文件情况:

f40e51e3468c082600373997e8fe4e10.png

150879f6e4f961e9c5f0663c03afae5a.png

77机器rpm被卸载的机器:

a7c4377959ff40315ec1eb0feeed7add.png

2c0be4c31d1ced042b99345ee757a244.png

显然通过对比发现有一些文件77机器上是没有的,尤其是9个软连接文件:

1.首先在77机器上创建这些软连接文件

[root@xiaolyu77 rpm]# ln -s ../../bin/db_deadlock rpmdb_deadlock

[root@xiaolyu77 rpm]# ln -s ../../bin/db_archive rpmdb_archive

[root@xiaolyu77 rpm]# ln -s ../../bin/db_load rpmdb_load

[root@xiaolyu77 rpm]# ln -s ../../bin/db_dump rpmdb_dump

[root@xiaolyu77 rpm]# ln -s ../../bin/db_upgrade rpmdb_upgrade

[root@xiaolyu77 rpm]# ln -s ../../bin/db_stat rpmdb_stat

[root@xiaolyu77 rpm]# ln -s ../../bin/db_recover rpmdb_recover

[root@xiaolyu77 rpm]# ln -s ../../bin/db_printlog rpmdb_printlog

[root@xiaolyu77 rpm]# ln -s ../../bin/db_verify rpmdb_verify

a4f4f70b541198c8043e015fcfbdf2be.png

73dd538bee5b1d90f3f457466959bea7.png

验证一下:

[root@xiaolyu77 rpm]# rpm

0fc86677318a4bbd9d8fd72c6e810a9c.png

2.将rpmrc文件从76环境复制过来:

[root@xiaolyu76 rpm]# scp rpmrc  root@xiaolyu77:/usr/lib/rpm/

33d1bd8c8e109270d5f9d09716936b75.png

be6ce4278f9c01d23ca68e6e5102d0b8.png

再次检验:发现貌似成功了:

[root@xiaolyu77 rpm]# rpm

c92bb109118be5e29dbd3fbaf1ab50cf.png

[root@xiaolyu77 ~]# rpm -qa

error: no dbpath has been set

error: cannot open Packages database in /%{_dbpath}

error: no dbpath has been set

error: cannot open Packages database in /%{_dbpath}

a0716018fae9e0cdcc45eb84209a5329.png

3.出现这个问题:我们可以将macros 复制过去:

[root@xiaolyu76 rpm]# scp  macros  root@xiaolyu77:/usr/lib/rpm/

85805a8f49bfe8247b79ac0e8784314d.png

4. 执行一下updatedb命令

[root@xiaolyu77 ~]# updatedb

d21f1c1a9638d81e6d3fdf5df6d67a10.png

5. reboot重启一下:ok!来检验一下:

[root@xiaolyu77 rpm]# rpm -qa | grep rpm

baebe90880adf21ba61ec725542209e7.png

完美的解决了问题,是为记录一下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值