Problema ao atualizar o kernel no debian 3.1

3

Eu tenho uma caixa bem antiga em um farm de servidores remoto. Então não tenho acesso direto. Apenas SSH remoto (e via SSH para um console serial). Eu não atualizei esta caixa em anos. Agora, sempre que eu quero instalar um novo pacote, aparece uma dependência ao glibc. Infelizmente, a instalação do glibc depende de um kernel 2.6 e estou executando um kernel 2.4 respeitável (mais uma razão para atualizar).

O problema é que a instalação de um novo kernel tem uma dependência indireta (over locales) para a glibc. Então, para instalar o glibc, eu preciso de um novo kernel. Para um novo kernel, eu preciso atualizar o glibc. Essencialmente, estou bloqueado. Qual é a melhor maneira de proceder, considerando que não tenho acesso ao "hardware"?

Veja uma breve transcrição do processo de atualização:

[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

Agora, se eu seguir as instruções como prometido, recebo o seguinte. Observe que estou usando aptitude em vez de apt-get para se beneficiar do melhor rastreamento de dependência. Eu fiz tentei com apt-get primeiro. Mas isso me deixa com o mesmo problema.

[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.

Alguma idéia?

    
por exhuma 27.03.2010 / 13:38

2 respostas

3

No assunto, você diz que a máquina está rodando Debian 3.1 (Sarge). No entanto, as mensagens de dependência e erro da glibc que você publicou indicam que você está tentando instalar pacotes do Debian 5.0 (Lenny). Isso provavelmente significa que o arquivo /etc/apt/sources.list faz referência a stable em vez de sarge (ou seja, você está pegando os pacotes da última versão estável no momento atual, em vez da versão instalada).

Tente editar /etc/apt/sources.list , substituindo todas as referências a stable por sarge . Por exemplo, uma linha como:

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

deve se tornar:

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

Execute aptitude update e você poderá então atualizar para os pacotes mais recentes do sarge.

No entanto, o Sarge foi de-suportado em 31 de março de 2008, então provavelmente seria melhor atualizar a máquina para Lenny. Como Lenny é a segunda versão principal a ser lançada desde o Sarge, é provável que seja mais fácil atualizar para o lançamento intermediário, Etch, primeiro. Dê uma olhada na seção 4 das notas de lançamento para Etch e Lenny para detalhes de como fazer isso. Também vale a pena garantir que você tenha um backup viável antes de começar, caso algo dê errado.

    
por 27.03.2010 / 18:12
0

Eu tenho uma ideia, mas poderia levar a pacotes quebrados, então faça um backup primeiro, ou tente em outra máquina:

Você pode instalar um pacote via dpkg com a opção --force-depends , que transforma todos os problemas de dependência em avisos.

Eu usei isso para instalar um driver de impressora, e funcionou bem - porque, tecnicamente, tudo foi instalado corretamente. O único problema era que o aptitude informava pacotes quebrados depois. Eu não conseguia descobrir como corrigi-los (e o driver da impressora não era importante o suficiente para investir muito tempo, então eu simplesmente o desinstalei).

    
por 27.03.2010 / 14:50