APT encaixado por incompatibilidade de versão do kernel

17

O Apt aparentemente não consegue fazer nada de útil para mim, repetidamente dando mensagens desta forma:

dpkg: dependency problems prevent configuration of linux-server:
 linux-server depends on linux-image-server (= 3.2.0.37.44); however:
  Version of linux-image-server on system is 3.2.0.37.45.
 linux-server depends on linux-headers-server (= 3.2.0.37.44); however:
  Version of linux-headers-server on system is 3.2.0.37.45.
dpkg: error processing linux-server (--configure):
 dependency problems - leaving unconfigured

Este é basicamente o mesmo problema que Eu não consigo instalar nenhum pacote (linux-image-server, erros de dependências do servidor linux) que ficou fechado Duplicar para uma resposta que é totalmente inútil para esta situação. Nenhum dos conselhos em essa resposta muito genérica sobre dependências ajuda.

Explicitamente:

sudo apt-get clean
sudo apt-get autoclean
sudo apt-get update

todos não têm efeito. Enquanto

sudo apt-get -f install
sudo dpkg --configure -a
sudo apt-get -u dist-upgrade
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

todos fornecem alguma forma da mensagem de erro acima.

    
por Leopd 09.02.2013 / 23:55

3 respostas

19

Você executou sudo apt-get update e o problema ainda acontece. Então você provavelmente só tem uma versão mais recente de linux-image-server e linux-headers-server do que qualquer pacote linux-server disponível de suas fontes de software configuradas .

Isso pode ocorrer por um muito curto período de tempo, mesmo se você estiver usando o servidor central (ou por um longo tempo se houver um problema ao atualizá-lo). Meu entendimento é que isso pode ocorrer por períodos mais longos se você usar um espelho. Isso não significa que você não deve usar um espelho - o servidor central ( http://archive.ubuntu.com ) é geralmente muito lento, e os espelhos nacionais, regionais ou outros são muito mais rápidos.

Uma pesquisa de pacotes revela que a versão 3.2.0.37.45 de ambos linux-image-server e linux-server existem para o Ubuntu 12.04. Então, provavelmente está relacionado ao seu espelho.

Aqui estão algumas alternativas:

Ignore-o

Se você puder usar o gerenciador de pacotes para outras finalidades, por exemplo, para instalar outros pacotes, você pode simplesmente ignorar isso. Quando seu espelho é atualizado, você provavelmente só vai pegar o pacote.

Não é um problema não ter o pacote linux-server mais recente, pois é um meta-pacote que não fornece qualquer software real. Existe apenas para que ele possa listar três pacotes como dependências , garantindo que eles permaneçam instalados:

Você já tem as versões mais recentes de linux-headers-server e linux-image-server . Meu palpite é que esse é um sistema de 64 bits, e é por isso que nenhuma mensagem sobre linux-generic-pae foi mostrada. Parece que está tudo bem.

No entanto:

  • Se o problema for impedir que atualize e instale outros pacotes de trabalho (em vez de apenas mostrar essas mensagens sempre que você fizer isso, mas não interferir com isso), deve aplicar alguma outra solução.
  • Você também pode querer fazê-lo, se simplesmente não gostar de ver essas mensagens o tempo todo e quiser se livrar delas.
  • É um pouco estranho você não estar recebendo este pacote, mesmo se você usar um espelho que fica um pouco atrás do servidor de download principal, porque este pacote também é fornecido por http://security.ubuntu.com . Esse servidor deve estar sempre ativado em /etc/apt/sources.list . Por isso, recomendo verificar se está ativado. Você pode querer fazer o backup de sources.list antes de editá-lo ( sudo cp /etc/apt/sources.list /etc/apt/sources.list.old ). O problema também pode ser uma consequência de um proxy da Web de armazenamento em cache (se você usar um) com dados obsoletos. (As soluções abaixo também funcionarão.)

Alterar para um servidor de download diferente

Eu acho que você está rodando um sistema Ubuntu Server e provavelmente não tem uma GUI instalada. Então, veja:

Depois de alterar seu espelho, execute:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Se desejar, você pode alterar seu servidor de volta depois que linux-server for atualizado.

Baixe e instale manualmente o arquivo do pacote .deb

Você pode baixar e instalar manualmente o arquivo .deb para a versão mais recente do linux-server metapackage no Ubuntu 12.04.

cd para onde você deseja baixar o pacote.

Se este for um sistema de 64 bits, execute:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_amd64.deb

Se este for um sistema de 32 bits, execute isto:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_i386.deb

(Eu obtive ambos os links na página do Launchpad para o pacote linux-meta source no Ubuntu . )

Agora (para 64 bits e 32 bits), execute este comando para instalar o pacote:

sudo dpkg -i linux-server_3.2.0.23.25_*.deb

(Ou simplesmente comece a digitar o nome do pacote e use a aba para completá-lo.)

Remover o pacote

Como é um metapacote que fornece software que você já tem, você pode remover o pacote. Então você não receberá mais o erro. Você pode instalá-lo novamente mais tarde, se quiser (você pode executar periodicamente apt-get update && apt-cache policy linux-server para ver se a nova versão está disponível).

Existem dois passos, se você quiser removê-lo. O primeiro é desinstalar o linux-server . a segunda é garantir que os pacotes não sejam removidos automaticamente mais tarde.

As dependências não serão removidas imediatamente . Portanto, não importa qual dessas etapas você faz primeiro.

1.Desinstalar linux-server .

Para desinstalar linux-server , basta executar:

sudo apt-get remove linux-server

2. Marcar as suas dependências como instaladas manualmente

Para informar ao APT (o gerenciador de pacotes) sobre os pacotes que você pretende instalar, mesmo que não restem nada que os declarem uma dependência, marque-os como instalados manualmente.

Para fazer isso, execute este comando, se este for um sistema de 64 bits:

sudo apt-mark manual linux-image-server linux-headers-server

Se for um sistema de 32 bits, execute isso:

sudo apt-mark manual linux-image-server linux-headers-server linux-generic-pae

(Você deve ter apt-mark , mas se não o fizer e não conseguir instalar o software, poderá usar apt-get install em vez de apt-mark manual - especificar manualmente um pacote para instalação faz com que ele seja marcado como instalado manualmente mesmo se se já estiver instalado.)

Fonte: Marcar um pacote deb como usado, por isso não é recomendado para autoremoval
(Em particular, a resposta de Lekensteyn .)

    
por Eliah Kagan 10.02.2013 / 21:11
4

Se você teve uma instalação de atualização de segurança completa / automática e automática, você pode estar no mesmo barco que eu.

Eu não consegui fazer o apt-get para fazer nada, então o conselho completo / boot tradicional não funcionou. Eu removi manualmente os dados antigos do kernel. Não remova o kernel atual, verifique com 'uname -a'. Eu removi com 'sudo rm /boot/-3.2.0-{23,24,25,26} - .

Então eu tive que executar o 'sudo apt-get remove o linux-server' e o 'sudo apt-get install linux-server' para corrigir a bagunça do problema do kernel instalado 1/2. Depois de tudo isso, eu poderia finalmente 'sudo apt-get upgrade' e colocar as coisas em movimento novamente.

Por uma boa medida, lancei um 'sudo update-grub' e 'sudo apt-get autoremove' para garantir que o menu de inicialização fosse preciso e que outros pacotes fossem limpos.

    
por flickerfly 17.12.2013 / 22:03
0

Na situação com o Ubuntu 12.04, foi necessário instalar manualmente o linux-headers-server e o linux-server (como sugerido acima - eu teria comentado lá mas ainda não tenho esse privilégio), e então apt -get remove linux-headers-virtual, que parece não existir mais como um pacote de 64 bits para 12.04.

sudo wget link

    
por user291949 09.06.2014 / 16:56