今天在搭建mysql的集羣服務時,安裝mysql集羣服務前,先卸載原來mysql的軟件包,不當心將rpm的命令也給卸載掉了,這下慘了,什麼也作不了了。在google了翻了好多個頁面,甚至官網也看了,沒能解決個人問題,根據本人多年linux的經驗以及linux系統的rpm軟件包安裝特色的敏感,本人想出瞭如下的方法,請注意:首創!爲作集羣,這裏用到了兩臺機器,下面是拓撲圖:html
xiaolyu77(192.168.31.77rpm命令被卸載的機器) -----------> 參照 xiaolyu76(192.168.31.76 正常機器) 。node
就是一不當心將rpm的命令用rpm強制給卸載了。能夠看到已經不存在rpm命令了。mysql
[root@xiaolyu77 ~]# whereis rpm
rpm: /etc/rpm /usr/lib/rpmlinux
[root@xiaolyu76 ~]# whereis rpm
rpm: /bin/rpm /etc/rpm /usr/lib/rpm /usr/share/man/man8/rpm.8.gz
[root@xiaolyu76 ~]# sql
從2.中能夠看到77機器上rpm命令被卸載的,連man手冊也沒有了,bin下面更是沒有。bash
思路:想到編譯安裝的軟件的卸載方法是直接將安裝路徑下的文件直接刪掉便可,那麼咱們可不能夠缺什麼補什麼呢?顯然能夠啊。反過來不是同樣麼。google
[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
經過whereis命令咱們看到/ur/lib/rpm這個文件或者文件夾,實際上這個就是rpm命令的安裝路徑。如今比較兩臺機器下該目錄的文件是否一致:htm
正常機器/usr/lib/rpm目錄下的文件狀況:
77機器rpm被卸載的機器:
顯然經過對比發現有一些文件77機器上是沒有的,尤爲是9個軟鏈接文件:
[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
[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}
[root@xiaolyu76 rpm]# scp macros root@xiaolyu77:/usr/lib/rpm/
[root@xiaolyu77 ~]# updatedb
[root@xiaolyu77 rpm]# rpm -qa | grep rpm
完美的解決了問題,是爲記錄一下!
本文爲做者原創博客,轉載請務必註明本博客地址:http://www.cnblogs.com/jasmine-Jobs/p/5986600.html