在 VPS、centOS 6 上刪除 glibc x86_64
你能幫我解決這個問題嗎?
我“意外地” rpm -e glibc.x86_64 庫並使我的 VPS 無法使用,因為所有命令都會引發以下錯誤之一:
[root@panel lib64]# yum bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory [root@panel lib64]# ls bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
如果以下任何一項可以提供幫助:
1)我仍然連接到外殼
我無法啟動恢復,因為它是遠端 VPS
仍然安裝了 i686 glibc
我的主目錄中有 x86_64 版本的 .rpm 文件。
有/lib/ld-linux.so.2,我能以某種方式指向系統使用那個嗎?
我有一個 /opt/glibc-2.14/lib/ld-linux-x86-64.so.2 ,我可以執行帶有前綴的命令,但關鍵的命令,如 rpm2cpio 或 wget 會引發共享對象錯誤。
我可以使用靜態命令或將其他一些庫放在路徑中或任何其他方式來解決這個問題嗎?
謝謝大家。
刪除連結器後,無法執行其他程序。您真正擁有的只是正在執行的 bash shell。沒有wget,沒有cp。
這可以有兩種方式。此實例所做的正常備份還原和重建,現在開始此過程。或者在從中提取數據並重新啟用 glibc 方面非常有創意的英雄事蹟。
需要複製至少與 EL6 的 glibc 版本 2.12 一樣新的二進製文件。只使用 bash。理論上,只使用內置函式是可能的。在其他一些主機上,使用 rpm2cpio 解壓,使用 /dev/tcp/ 將它們下載到損壞的主機。在實踐中,這是醜陋的,難以發揮作用。需要使用未加密的協議,並手動輸入請求。
相反,將 VM 磁碟映像附加(快照)到另一個工作的 EL6 VM 並在那裡對其進行操作。將它安裝在某個地方,例如 /mnt。使用 yum 恢復 glibc,但將其安裝在損壞的根目錄中:
yum --installroot=/mnt install glibc
在掛載時備份任何重要數據。再次將其切換到損壞的實例,然後啟動。
現在進行屍檢。
修復損壞的實例可以很好地恢復您的數據,但可能無法實現。備份仍然是必須始終有效的恢復。確保重建和恢復是可能的。
您必須使用
rpm -e --nodeps
才能進入這種情況。永遠不要那樣做。存在依賴關係是因為包需要彼此。glibc 的 rpm 包描述 (rpm -qi glibc
) 提到了它的重要性,儘管說了很多話之後是公平的:這個特定的包包含最重要的共享庫集:標準 C 庫和標準數學庫。沒有這兩個庫,Linux 系統將無法執行。
如果您無法使用 yum 解決 rpm 事務,請停止。質疑包數據庫的完整性。質疑使某人認為
--nodeps
曾經是一個好主意的 yum repos 的理智。