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

 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.cnblogs.com/jasmine-Jobs/p/5986600.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM