2018年11月26日 星期一

[經驗分享]基礎程式locale、ldconfig等消失事件



繼前陣子發生 MariaDB 會自己消失的離奇事件後,今天又發生另一起消失事件。





狀況

為了搞定 BookStack 套件的 PDF 中文匯出問題需要安裝 gblic 2.27 版本,但 Ubuntu 16.04 能提供到的版本是 2.23,後來搞了半天是真的把 2.23 給移除了,但結果是連許多基礎套件都幹掉了。




移除 libc-bin 時同時也移除好幾個套件




追查


本來只是為了移除 gblic 2.23,結果不僅 2.27 裝不上去,連其它基礎程式都掛了,例如 locale、apt 等很多東西都異常,類似以下的訊息

Can’t exec “locale”: No such file or directory at /usr/share/perl5/Debconf/Encoding.pm line 16. Use of uninitialized value $Debconf::Encoding::charmap in scalar chomp at /usr/share/perl5/Debconf/Encoding.pm line 17.

這下麻煩了。

翻查資料研究後,需要手動把 ldconfig 給弄回來。

apt-get download libc-bin
dpkg -x libc-bin*.deb unpackdir/
sudo cp unpackdir/sbin/ldconfig /sbin/

接著再重新安裝一次 gblic 套件。

sudo apt-get install --reinstall libc-bin 
sudo apt-get install -f

    好了,現在修復完成。

    等等,你可能會想到一件事:開頭提到的 BookStack 匯出 PDF 中文版問題需要 2.27,可是你裝回的是 2.23 還是沒解決啊?

    是的,經過爬文,需要 Ubuntu 18.04 才能使用 2.27,所以...... 我做了 do-release-upgrade 把 Ubuntu 16.04 更新到 18.04 了,結案!

    補充一下大版本更新經驗:

    • 10.04 to 12.04 = 死
    • 12.04 to 14.04 = 死
    • 14.04 to 16.04 = 系統活著,但死掉一堆套件 (那還是不能用啊)
    • 16.04 to 18.04 = 奇蹟的活下來了!



    參考