繼前陣子發生 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 = 奇蹟的活下來了!
參考
- 修復 locale 指令異常問題
https://itsfoss.com/fix-exec-locale-file-directory/
- gblic 2.27 套件版本資訊
https://ubuntu.pkgs.org/18.04/ubuntu-main-amd64/libc6_2.27-3ubuntu1_amd64.deb.html
- [經驗分享]開源知識管理平台 - BookStackApp
https://jasontools.blogspot.com/2018/03/bookstackapp-useful.html