Debian

從 debian lenny 更新為擠壓

  • June 1, 2012

我正在嘗試從 debian lenny 更新以擠壓我的 64 位根伺服器,並且到目前為止執行了以下操作:

  • 修改sources.list
  • apt-get 更新
  • apt-get 升級
  • apt-get 安裝 linux-image-2.6-amd64

最後一步導致以下錯誤輸出:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
  linux-image-2.6-amd64: Depends: linux-image-2.6.32-5-amd64 but it is not going to be installed
E: Broken packages

更新

這是我的sources.list

deb     ftp://mirror.hetzner.de/debian/packages  squeeze          main contrib non-free
deb     ftp://mirror.hetzner.de/debian/security  squeeze/updates  main contrib non-free

deb     http://ftp.de.debian.org/debian  squeeze  main non-free contrib
deb-src http://ftp.de.debian.org/debian  squeeze  main non-free contrib

deb     http://security.debian.org/  squeeze/updates  main contrib non-free
deb-src http://security.debian.org/  squeeze/updates  main contrib non-free

更新 2

我也可以跑

aptitude upgrade

但我不確定這是否是個好主意,它表明

….

74 個軟體包已升級,111 個新安裝,16 個要刪除,0 個未升級。

….

刪除以下軟體包: libept0 linux-image-2.6-amd64 php5-mysql

安裝以下軟體包: libsasl2-modules

$$ 2.1.23.dfsg1-7 (stable, stable) $$ …

更新 3

apt-get -s dist-upgrade 返回:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Failed
The following packages have unmet dependencies:
 udev: Breaks: linux-image-2.6-amd64 (< 2.6.28) but 2.6.26+17+lenny1 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

並且 apt-get upgrade 告訴我它阻礙了很多:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
 apache2-mpm-prefork apache2.2-common apt aptitude bash cron diff djvulibre-desktop exim4 exim4-base exim4-config exim4-daemon-light
 gettext ghostscript gnupg gpgv grub grub-common imagemagick iproute iptables lftp libapache2-mod-php5 libaprutil1 libcups2
 libcupsimage2 libcurl3 libdate-manip-perl libdevmapper1.02.1 libdjvulibre21 libgs8 libgtk2.0-0 libgtk2.0-bin libkrb5-dev libkrb53
 libpam-modules libpam-runtime libpango1.0-0 libpango1.0-dev libphp-pclzip libpq5 librsvg2-2 libsasl2-2 libthai-data libthai0
 libx11-6 libx11-dev libxcb1 libxcb1-dev libxi6 linux-image-2.6-amd64 lvm2 munin-node openssh-client openssh-server php5-common
 php5-gd php5-imagick php5-mysql python python-minimal python2.5 python2.5-minimal rrdtool smartmontools sysv-rc udev
0 upgraded, 0 newly installed, 0 to remove and 67 not upgraded.

然後我想也許有些事情被擱置了,但是

dpkg --get-selections | grep hold

什麼都不返回。

在這之前,我在過去 2 年里安裝了很多東西,那台機器一直在執行。我記得最近 munin 遇到了一些問題,我需要修改 apt-sources 以檢索 1.4.7 版本。我可能在那裡也得到了一些擠壓包?

似乎很奇怪:如果我檢查 /etc/debian_version 它說:6.0.5

另外我讀到現在使用 aptitude 不是一個好主意,或者說:不要混合使用 aptidute 和 apt-get 使用。我過去可能也偶爾使用過 aptitude。

更新 4

我試圖安裝 linux-image-2.6.32-5-amd64 如燉所說,但也失敗了

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 linux-image-2.6.32-5-amd64: Depends: linux-base (>= 2.6.32-45) but it is not going to be installed
E: Broken packages

我是否正確理解了該資訊?如果我想安裝 2.6.32-5 我需要一個 >= 2.6.32-45 的版本應該如何工作?

更新 5

所以我繼續遞歸,意思是:嘗試安裝那些導致:

  • linux基礎
  • libuuid-perl
  • perlap-5.10.1

最後一個,無法安裝,因為它是一個“虛擬包”

Package perlapi-5.10.1 is a virtual package provided by:
You should explicitly select one to install.
E: Package perlapi-5.10.1 has no installation candidate

我又被卡住了。apt-cache search perlapi剛退回了兩個包裹。libperl-apireference-perl 依賴於 perlapi-5.10.1 和 perl-base 聲稱是最新版本

更新 6

看起來我已經安裝了 perl 5.14.2。如果我沒記錯的話,那是不穩定的。據我了解,降級可以解決這個問題,對吧?

所以我從 debian 存檔降級到 perl 5.10。現在執行apt-get upgrade,我很困惑這是否是正確的方式,因為會有很多變化

11 upgraded, 26 newly installed, 76 to remove and 44 not upgraded.

一些要刪除的包看起來對我正在做的事情很重要,例如 php5-mysql munin munin-common munin-node

這是選擇然後嘗試修復所有這些包/服務的好方法嗎?

更新 7

好的!我快到那裡了

aptitude install perl 

還降級了許多其他軟體包。然後跑步 apt-get upgrade不再造成任何麻煩,我繼續

apt-get dist-upgrade

終於順利通過了。

非常感謝,尤其是燉!

看來您從推薦的升級程序開始,這很棒。我建議嘗試堅持這一點,而不是過早地進行 dist 升級。此過程是通過對數千個系統的測試得出的,我們認為這是您順利升級的最佳機會。

在這種情況下,當您這樣做時,apt-get upgrade我們預計會有很多包裹被擱置。這是設計使然。我們只想進行最低限度的升級,以便安裝新核心和 udev,然後重新啟動,然後使用dist-upgrade.

您應該專注於這個錯誤:

linux-image-2.6-amd64: Depends: linux-image-2.6.32-5-amd64 but it is not going to be installed

apt 不想安裝linux-image-2.6.32-5-amd64. 通過嘗試直接安裝它來查找apt-get install linux-image-2.6.32-5-amd64,這將安裝它,或者會具體告訴你這個包有什麼問題。當這導致另一個軟體包出現問題時,請嘗試直接安裝此軟體包,直到找到根本原因。成功安裝核心後,從那裡繼續升級說明。

這樣做可能會產生一個可能不受歡迎的工件,即將該linux-image-2.6.32-5-amd64軟體包標記為自動安裝。升級完成並且您對結果感到滿意後,您可能會執行apt-mark auto linux-image-2.6.32-5-amd64將此軟體包標記為自動安裝。

讀取 6.0.5的原因/etc/debian_version是您已經更新了base_files包。這並不奇怪。

aptitude 和 apt-get 混合使用的問題幾年前在 apt-get 7.0 版中得到了解決,您可以隨意混合使用它們。事實上,Debian 過去曾推薦 aptitude 從一個主要版本升級到另一個主要版本,現在推薦 apt-get,因此顯然 Debian 建議同時使用這兩種版本。對於給定的升級,我們將推薦似乎更適合的任何一個。在 lenny->squeeze 升級中,aptitude 傾向於“過分思考”尋找最佳升級路徑,而 apt-get 中更簡單的依賴關係解析適用於更多人。

引用自:https://serverfault.com/questions/394663