首頁 > 軟體

Linux中rpm命令誤解除安裝了的恢復

2020-06-16 17:11:21

今天在搭建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

 2. 正常機器檢視rpm命令

[root@xiaolyu76 ~]# whereis rpm
rpm: /bin/rpm /etc/rpm /usr/lib/rpm /usr/share/man/man8/rpm.8.gz
[root@xiaolyu76 ~]#

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/

2. 補全安裝目錄下缺少的檔案

通過whereis命令我們看到/ur/lib/rpm這個檔案或者資料夾,實際上這個就是rpm命令的安裝路徑。現在比較兩台機器下該目錄的檔案是否一致:

正常機器/usr/lib/rpm目錄下的檔案情況:

 

 77機器rpm被解除安裝的機器:

顯然通過對比發現有一些檔案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

驗證一下:

[root@xiaolyu77 rpm]# rpm

2.將rpmrc檔案從76環境複製過來:

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

再次檢驗:發現貌似成功了:

[root@xiaolyu77 rpm]# rpm

[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}

3.出現這個問題:我們可以將macros 複製過去:

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

4. 執行一下updatedb命令

[root@xiaolyu77 ~]# updatedb

 

5. reboot重新啟動一下:ok!來檢驗一下:

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

完美的解決了問題,是為記錄一下!

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-06/145252.htm


IT145.com E-mail:sddin#qq.com