Проблема обновления ядра в Debian 3.1

У меня довольно старая коробка в удаленной ферме серверов. Так что у меня нет прямого доступа. Только удаленный SSH (и через SSH к последовательной консоли). Я не обновлял эту коробку в возрасте. Теперь, когда я хочу установить новый пакет, появляется зависимость от glibc. К сожалению, установка glibc зависит от ядра 2.6, и я использую почтенное ядро ​​2.4 (еще одна причина для обновления).

Проблема в том, что установка нового ядра имеет косвенную (по локали) зависимость от glibc. Итак, чтобы установить glibc, мне нужно новое ядро. Для нового ядра мне нужно обновить glibc. По сути, я заблокирован. Какой лучший способ продолжить, учитывая, что у меня нет "аппаратного" доступа?

Вот краткая стенограмма процесса обновления:

[green:~]% sudo aptitude install linux-image-686
Reading Package Lists... Done
Building Dependency Tree
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following packages are unused and will be REMOVED:
  gcc-4.3-base
The following NEW packages will be automatically installed:
  dash libc6-i686 libparse-recdescent-perl linux-image-2.6-686
  linux-image-2.6.18-6-686 module-init-tools yaird
The following packages have been kept back:
  adduser apache2 apache2-mpm-prefork apache2-utils apache2.2-common apt
  apt-utils aptitude autoconf autotools-dev awstats base-files base-passwd
  [...snip...]
  util-linux vacation vim vim-common wamerican wbritish wget whiptail whois
  wwwconfig-common zlib1g
The following NEW packages will be installed:
  dash libc6-i686 libparse-recdescent-perl linux-image-2.6-686
  linux-image-2.6.18-6-686 linux-image-686 module-init-tools yaird
The following packages will be upgraded:
  hotplug libc6
2 packages upgraded, 8 newly installed, 1 to remove and 277 not upgraded.
Need to get 0B/22.7MB of archives. After unpacking 52.1MB will be used.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
Preconfiguring packages ...
(Reading database ... 34065 files and directories currently installed.)
Preparing to replace libc6 2.3.6.ds1-13 (using .../libc6_2.7-18lenny2_i386.deb) ...
Checking for services that may need to be restarted...
Checking init scripts...
WARNING: init script for postgresql not found.

  [ --- libc6 config screen appears here --- ]

WARNING: POSIX threads library NPTL requires kernel version
2.6.8 or later. If you use a kernel 2.4, please upgrade it
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 etch sources to your /etc/apt/sources.list and run:
  apt-get install -t etch linux-image-2.6
Then reboot into this new kernel, and proceed with your upgrade
dpkg: error processing /var/cache/apt/archives/libc6_2.7-18lenny2_i386.deb (--unpack):
subprocess pre-installation script returned error exit status 1
Errors were encountered while processing:
/var/cache/apt/archives/libc6_2.7-18lenny2_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ack!  Something bad happened while installing packages.  Trying to recover:
dpkg: dependency problems prevent configuration of locales:
locales depends on glibc-2.7-1; however:
  Package glibc-2.7-1 is not installed.
dpkg: error processing locales (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
locales
Reading Package Lists... Done
Building Dependency Tree
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done

Теперь, если я следую инструкциям в соответствии с указаниями, я получаю следующее. Обратите внимание, что я использую aptitude вместо apt-get извлечь выгоду из лучшего отслеживания зависимостей. Я попробовал с apt-get первый. Но это подводит меня к той же проблеме.

[green:~]% sudo aptitude install -t etch linux-image-2.6.26-2-686
Reading Package Lists... Done
Building Dependency Tree
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
E: Unable to correct problems, you have held broken packages.
E: Unable to correct dependencies, some packages cannot be installed
E: Unable to resolve some dependencies!
Some packages had unmet dependencies.  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 packages have unmet dependencies:
  linux-image-2.6.26-2-686: Depends: initramfs-tools (>= 0.55) but it is not installable or
                yaird (>= 0.0.13) but it is not installable or
                linux-initramfs-tool which is a virtual package.

Есть идеи?

2 ответа

Решение

В теме вы говорите, что на машине установлен Debian 3.1 (Sarge). Однако опубликованные вами сообщения о зависимостях и ошибках glibc указывают на то, что вы пытаетесь установить пакеты из Debian 5.0 (Lenny). Это, вероятно, означает, что ваш /etc/apt/sources.list ссылки на файлы stable скорее, чем sarge (т.е. вы принимаете пакеты из последней стабильной версии на данный момент, а не с той версии, которую вы установили).

Попробуйте редактировать /etc/apt/sources.list, заменяя все ссылки на stable с sarge, Например, такая строка:

deb http://ftp.uk.debian.org/debian/ stable main non-free contrib

должен стать:

deb http://ftp.uk.debian.org/debian/ sarge main non-free contrib

Бежать aptitude update и вы сможете обновиться до последних пакетов с sarge.

Тем не менее, Sarge был отменен из -за поддержки 31 марта 2008 года, так что, вероятно, было бы лучше обновить машину до Lenny. Поскольку Lenny является второй основной версией, выпущенной после Sarge, вероятно, будет проще перейти на промежуточный выпуск, Etch, в первую очередь. Посмотрите раздел 4 примечаний к выпуску Etch и Lenny, чтобы узнать, как это сделать. Также стоит убедиться, что у вас есть надежная резервная копия перед запуском, на случай, если что-то пойдет не так.

У меня есть идея, но это может привести к повреждению пакетов, поэтому сначала сделайте резервную копию, либо попробуйте на другой машине:

Вы можете установить пакет через dpkg с возможностью --force-depends, который превращает все проблемы с зависимостями в предупреждения.

Я использовал это для установки драйвера принтера, и он работал нормально - потому что технически все было установлено правильно. Единственная проблема была в том, что aptitude сообщала о сломанных пакетах впоследствии. Я не мог понять, как их исправить (а драйвер принтера был недостаточно важен, чтобы тратить много времени, поэтому я просто удалил его).

Другие вопросы по тегам