Debian Linux 升級遇到 libc6 問題

Debian 升級都很習慣直接打: apt-get update; apt-get upgrade; apt-get dist-upgrade, 通常都可以正常升級完成, 但是今天升級時遇到不少阻礙... 🙁

錯誤訊息

下列的額外套件將被安裝:
  libc6
建議套件:
  glibc-doc libc6-i686
下列套件將會被升級:
  libc6
升級 1 個,新安裝 0 個,移除 0 個,有 10 個未被升級。
2 個沒有完整得安裝或移除。
需要下載 0B/4548kB 的套件檔。
此操作完成之後,會多佔用 340kB 的磁碟空間。
是否繼續進行 [Y/n]?
正在預先設定套件 ...
(正在讀取資料庫 ... 系統目前共安裝了 57784 個檔案和目錄。)
正準備替換 libc6 2.7-18(使用 .../archives/libc6_2.9-4_i386.deb)...
Checking for services that may need to be restarted...
Checking init scripts...
WARNING: this version of the GNU libc requires kernel version
2.6.18 or later. Please upgrade your kernel before installing
glibc.

The installation of a 2.6 kernel _could_ ask you to install a new libc
first, this is NOT a bug, and should *NOT* be reported. In that case,
please add lenny sources to your /etc/apt/sources.list and run:
  apt-get install -t lenny linux-image-2.6
Then reboot into this new kernel, and proceed with your upgrade
dpkg:在處理 /var/cache/apt/archives/libc6_2.9-4_i386.deb (--unpack) 時發生錯誤:
 子程序 pre-installation script 傳回了錯誤退出狀態 1
在處理時有錯誤發生:
 /var/cache/apt/archives/libc6_2.9-4_i386.deb

問題

上面寫說要我先把版本降回 lenny, 先升級 kernel 後, 才可以安裝 libc6(不安裝新版的 libc6, 就會有數不清的版本衝突), 試了各種方法, 不降 lenny 就是不行. XD

發生原因 libc6 需要 kernel 2.6.18 以上的版本, 所以造成一堆的版本衝突(主要原因就是: Kernel 太舊), 我 kernel 是 2.6.11-1-686, 差太遠了.... 原來這麼久沒升級了.

解法

  1. vim /etc/apt/sources.list # 加入下述兩行, 其它的都移掉

    deb http://ftp.tw.debian.org/debian/ lenny main
    deb-src http://ftp.tw.debian.org/debian/ lenny main

  2. apt-get update
  3. apt-get autoremove
  4. apt-get upgrade; apt-get dist-upgrade # upgrade 還是隨手跑一跑
  5. # 下述這些是我出現被移掉的東西, 順便清清系統也好.
    default-jdk g++ g++-3.3 g++-4.0 g++-4.1 g++-4.3 gcj-4.3 java-gcj-compat-dev language-env libc6-dev libgcj9-dev libgcj9-src libmudflap0-dev libssl-dev libstdc++5-3.3-dev libstdc++6-4.0-dev libstdc++6-4.1-dev libstdc++6-4.3-dev libtool locales localization-config php5-dev zlib1g-dev
  6. apt-get -f install linux-image-2.6.26-1-686 # 安裝 2.6.26 的 kernel
  7. reboot # 重新開機

換回 squeeze / testing 版

  1. vim /etc/apt/sources.list

    # 把之前加的那兩行拿掉
    deb http://ftp.tw.debian.org/debian/ squeeze main
    deb-src http://ftp.tw.debian.org/debian/ squeeze main
    deb http://security.debian.org/ squeeze/updates main

  2. apt-get update
  3. apt-get upgrade # libc6 就可以正常安裝, 所以就一帆風順了~
  4. apt-get dist-upgrade
  5. apt-get install locales # 因為剛剛被移除掉, 所以再重新裝回來.

這樣子就完成升級囉~


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix。將永久鏈結加入書籤。

發表迴響