Я пытаюсь выполнить обновление с debian lenny, чтобы сжать свой 64-битный корневой сервер, и до сих пор делал следующее:
Последний шаг приводит к следующему выводу ошибки:
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
Я также мог бежать
aptitude upgrade
но я не уверен, что это хорошая идея, это предполагает
....
74 пакета обновлены, 111 вновь установлены, 16 удалены и 0 не обновлены.
....
Удалите следующие пакеты: libept0 linux-image-2.6-amd64 php5-mysql
Установите следующие пакеты: libsasl2-modules [2.1.23.dfsg1-7 (стабильный, стабильный)]
...
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 в прошлом.
Я попытался установить 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, как это должно работать?
поэтому я продолжал повторять, то есть: пытался установить те зависимости, которые привели к:
последний, не может быть установлен, потому что это «виртуальный пакет»
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 утверждает, что это самая новая версия
похоже, у меня установлен perl 5.14.2. Это нестабильно, если я не ошибаюсь. Насколько я понимаю, переход на более раннюю версию решит эту проблему, верно?
Поэтому я перешел на perl 5.10 из архива debian. Бег apt-get upgrade
Теперь я не понимаю, правильно ли это, поскольку будет много изменений
11 upgraded, 26 newly installed, 76 to remove and 44 not upgraded.
Некоторые из пакетов, которые нужно удалить, выглядят важными для того, что я делаю, например php5-mysql munin munin-common munin-node
Это хороший способ выбрать и потом попытаться исправить все эти пакеты / услуги?
отлично! Я добираюсь туда
aptitude install perl
также понизил версию многих других пакетов. затем бег apt-get upgrade
больше не доставляло проблем, и я перешел к
apt-get dist-upgrade
который наконец-то прошел нормально.
Большое спасибо, особенно тушенке!
Для перехода от основной версии к другой требуется следующее:
apt-get update
apt-get dist-upgrade
Ничего более. Да, заменив имя дистрибутива с /etc/apt/sources.list
, например sed -i -e 's/lenny/squeeze/g' /etc/apt/sources.list
.
Но ваша ошибка, похоже, использует upgrade
вместо того dist-upgrade
.
Кроме того, на случай, если что-то пойдет не так, у вас есть резервные копии, верно?
Кажется, вы начали с рекомендуемая процедура обновления что здорово. Я рекомендую попытаться придерживаться этого вместо того, чтобы преждевременно выполнять dist-upgrade. Эта процедура разработана путем тестирования на тысячах систем, и мы считаем, что это лучший шанс на плавное обновление.
В этом случае, когда вы делаете 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
чтобы отметить этот пакет как автоматически установленный.
Причина, по которой /etc/debian_version
читает 6.0.5, это то, что вы уже обновили base_files
пакет. Это не сюрприз.
Проблемы со смешиванием aptitude и apt-get были решены с помощью apt-get версии 7.0 несколько лет назад, вы можете свободно комбинировать их использование по своему желанию. Фактически, Debian в прошлом рекомендовал aptitude для обновления с одного основного выпуска на другой, а теперь рекомендует apt-get, поэтому очевидно, что Debian рекомендует использовать оба. Мы порекомендуем тот, который лучше подходит для данного обновления. При обновлении lenny-> squeeze aptitude имеет тенденцию «слишком усердно думать» о поиске оптимального пути обновления, а более простое разрешение зависимостей в apt-get работает для большего числа людей.