我是如何崩掉我的ArchLinux的
上一篇文章提到我把我Arch搞崩了,這裡寫一下過程,方便大家借鑒(不是
包管理器
裝過Arch的人都知道它的包管理器是pacman。不管怎麼樣,Debian的包管理器apt也是能跑起來的。不過wiki上已寫明,這兩個東西軟體列表不互通,也就是說互相不知道對方乾了什麼。
為什麼我要突然要用apt
這個鍋我十分不情願的甩給icalingua++(icalingua++:這鍋我不背)
icalingua++是多平台的QQ第三方客戶端。那段時間tx剛剛停止了QQLinux登錄(原因是準備大更新,沒過幾週新版就上線了),我又急著用QQ,然後裝了這個玩意。我是從Discover應用商店下載的軟體,但是Discover更新版本慢,於是我實際上安裝了舊版本。
為什麼我不用wineQQ呢,因為不知道為什麼yay補不全依賴。裝了deepinwine也不行。
登錄登不上,提示版本過低。我看了看是最新版啊(當時不知道是舊版),然後pacman -Syu
了一下也沒有更新。
然後我上了GitHub,看了看,哦,是舊版。
我找到Release,往下拉,發現沒有適用於Arch的版本,唯一一個認識的就是deb
格式的安裝包。找了找,Arch可以裝dpkg,於是我費了半天事裝上了dpkg,嘗試安裝這個包,但是它報錯缺少依賴庫(基本是libxxx.so
這些)。
然後我看了看,在Arch裡邊dpkg沒法解決依賴,得上apt,於是我又搞上了apt,還是不行。
我嘗試搜索包,但是沒有相關的包。我繼續查資料,發現沒有這方面的資料。按理說我應該已經發現不對勁了,但是我急著用QQ,就沒多想,繼續鍥而不捨的整。
然後我發現根本沒辦法補全依賴,氣得我直接apt upgrade
,你猜怎麼著,它終於開始補依賴了,我突然挺開心,就放著它upgrade,我在旁邊寫作業。
過了一會我抬起頭,看到列表裡面有libc++
,我覺得不大對勁:LinuxKernel是C編譯的,為什麼會缺這東西
但是已經晚了。
過了不久,apt突然停止運作,plasma提示各種軟體停止運行。我嘗試打開Konsole,打不開。還好之前已經打開的終端沒關閉,我隨便輸了個指令,它報錯 bash:內存轉儲錯誤
。
一番折騰之後我選擇了強制關機(為什麼要強制呢?因為shutdown
都報錯了hhhh),重啟。
但是沒啟動起來。
grub引導之後直接報RIP Code.
完了。
記下RIP code查了一下,發現最近似的案例是系統關鍵庫缺失(他就是缺了libc),很明顯這是我apt整的。
都這個樣了,沒什麼動力去修了(況且也修不好)第二天我就把系統重新安裝了。還好沒什麼重要信息在裡面。
這個故事告訴我們:不要混用包管理器1111111
前面提到了,apt和pacman數據不互通。系統安裝時pacman安裝了這些庫,但是apt不知道,於是拿自己的一套替換了原有的庫,導致了系統崩潰。
後來怎麼樣
重裝完系統之後,我一看,Discover更新了,於是我終於用最新版的icalingua++登錄了QQ。icalingua++很好用,我沒有抹黑他的意思。又過了不久,QQLinux更新了,於是我換上了這個東西用著。但是平常一直用icalingua++。
好消息是,我的系統再沒崩潰過(