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, 差太遠了.... 原來這麼久沒升級了.
解法
- vim /etc/apt/sources.list # 加入下述兩行, 其它的都移掉
deb http://ftp.tw.debian.org/debian/ lenny main
deb-src http://ftp.tw.debian.org/debian/ lenny main - apt-get update
- apt-get autoremove
- apt-get upgrade; apt-get dist-upgrade # upgrade 還是隨手跑一跑
- # 下述這些是我出現被移掉的東西, 順便清清系統也好.
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 - apt-get -f install linux-image-2.6.26-1-686 # 安裝 2.6.26 的 kernel
- reboot # 重新開機
換回 squeeze / testing 版
- 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 - apt-get update
- apt-get upgrade # libc6 就可以正常安裝, 所以就一帆風順了~
- apt-get dist-upgrade
- apt-get install locales # 因為剛剛被移除掉, 所以再重新裝回來.
這樣子就完成升級囉~