linux中不當心將rpm命令卸載了,怎麼恢復?

  今天在搭建mysql的集羣服務時,安裝mysql集羣服務前,先卸載原來mysql的軟件包,不當心將rpm的命令也給卸載掉了,這下慘了,什麼也作不了了。在google了翻了好多個頁面,甚至官網也看了,沒能解決個人問題,根據本人多年linux的經驗以及linux系統的rpm軟件包安裝特色的敏感,本人想出瞭如下的方法,請注意:首創!爲作集羣,這裏用到了兩臺機器,下面是拓撲圖:html

       xiaolyu77(192.168.31.77rpm命令被卸載的機器)   -----------> 參照   xiaolyu76(192.168.31.76 正常機器) 。node

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命令了。mysql

2. 檢查rpm命令安裝在哪裏:

 1.故障機器查看rpm命令

[root@xiaolyu77 ~]# whereis rpm
rpm: /etc/rpm /usr/lib/rpmlinux

 2. 正常機器查看rpm命令

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

3. 解決方案

從2.中能夠看到77機器上rpm命令被卸載的,連man手冊也沒有了,bin下面更是沒有。bash

思路:想到編譯安裝的軟件的卸載方法是直接將安裝路徑下的文件直接刪掉便可,那麼咱們可不能夠缺什麼補什麼呢?顯然能夠啊。反過來不是同樣麼。google

1. 補全whereis缺乏的文件

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

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

2. 補全安裝目錄下缺乏的文件

經過whereis命令咱們看到/ur/lib/rpm這個文件或者文件夾,實際上這個就是rpm命令的安裝路徑。如今比較兩臺機器下該目錄的文件是否一致:htm

正常機器/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

相關文章
相關標籤/搜索