APT firmado por incompatibilidade de versão do kernel


18

O Apt é aparentemente incapaz de fazer algo útil para mim, dando repetidamente 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 não consigo instalar nenhum pacote (erros de dependências do servidor de imagem linux, do servidor linux) que foi fechado Duplicar para uma resposta que é totalmente inútil para esta situação. Nenhum dos conselhos nessa resposta muito genérica sobre dependências ajuda.

Explicitamente:

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

tudo não tem nenhum 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.

Respostas:


20

Você correu sudo apt-get updatee o problema ainda acontece. Portanto, você provavelmente só tem uma versão mais recente linux-image-servere linux-headers-serverqualquer linux-serverpacote disponível nas fontes de software configuradas .

Isso pode ocorrer por um período muito curto, mesmo se você estiver usando o servidor central (ou por um período maior, se houver algum 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 pacote revela que a versão 3.2.0.37.45 de ambas linux-image-servere linux-serverexiste para o Ubuntu 12.04. Então provavelmente está relacionado ao seu espelho.

Aqui estão algumas alternativas:

Ignore isto

Se você pode usar o gerenciador de pacotes para outros fins, por exemplo, para instalar outros pacotes, basta ignorar isso. Quando seu espelho for atualizado, você provavelmente obterá o pacote.

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

Você já possui as versões mais recentes de linux-headers-servere linux-image-server. Meu palpite é que este é um sistema de 64 bits, motivo pelo qual nenhuma mensagem linux-generic-paefoi exibida. Parece que está tudo bem.

Contudo:

  • Se o problema estiver impedindo que a atualização e a instalação de outros pacotes funcionem (em vez de apenas mostrar essas mensagens sempre que você o fizer, mas não interferir com ele), aplique alguma outra solução.
  • Você também pode querer fazê-lo, se não gostar de ver essas mensagens o tempo todo e quiser se livrar delas.
  • É um pouco estranho que você não esteja recebendo este pacote, mesmo que use um espelho que fica um pouco atrás do servidor de download principal, porque esse pacote também é fornecido por http://security.ubuntu.com. Esse servidor sempre deve estar ativado no /etc/apt/sources.list. Por isso, recomendo verificar para ter certeza de que está ativado. Você pode fazer backup sources.listantes de editá-lo ( sudo cp /etc/apt/sources.list /etc/apt/sources.list.old). O problema também pode ser uma conseqüência de um proxy da Web em cache (se você usar um) com dados obsoletos. (As soluções abaixo também resolverão isso.)

Alterar para um servidor de download diferente

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

Depois de mudar seu espelho, execute:

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

Se desejar, você pode alterar o servidor novamente após a linux-serveratualização.

Baixe e instale manualmente o .debarquivo do pacote

Você pode baixar e instalar manualmente o .debarquivo para a versão mais recente do linux-servermetapacote 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 o seguinte:

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

(Eu obtive os dois links na página Launchpad para o linux-metapacote de origem 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 apenas comece a digitar o nome do pacote e use-o Tabpara completá-lo.)

Remova o pacote

Como é um metapacote que fornece o software que você já possui, 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-serverpara ver se a nova versão está disponível).

Existem duas etapas, se você deseja removê-lo. O primeiro é desinstalar linux-server. o segundo é 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ê executa primeiro.

1. Desinstale linux-server.

Para desinstalar linux-server, basta executar:

sudo apt-get remove linux-server

2. Marque suas dependências como instaladas manualmente

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

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

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

Se for um sistema de 32 bits, execute o seguinte:

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

(Você deve ter, apt-markmas, se não o fizer, e não poderá instalar o software, poderá usar em apt-get installvez de apt-mark manualespecificar um pacote manualmente para a instalação, fazendo com que seja marcado como instalado manualmente, mesmo se já estiver instalado.

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


3
Obrigado pela resposta detalhada. Trocar espelhos não mudou a situação. Mas a instalação manual da versão mais recente do linux-server ( linux-server_3.2.0.37.45) resolveu o problema.
Leopd

2
No meu caso, eu não poderia usar o apt-get para nada. Eu sempre recebi o erro de dependência não atendida no servidor linux. Inspirado por seu conselho, eu tentei o seguinte, que trabalhou e foi muito mais simples:sudo apt-get remove linux-server && sudo apt-get install linux-server
Andrew Ensley

4

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

Não consegui que o apt-get fizesse algo, pois os conselhos tradicionais de inicialização / inicialização não funcionaram. 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 'sudo apt-get remove linux-server' e 'sudo apt-get install linux-server' para corrigir a bagunça do problema de 1/2 do kernel instalado. Depois de tudo isso, eu poderia finalmente 'sudo apt-get upgrade' e colocar as coisas em movimento novamente.

Por uma boa medida, eu 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.


Escrevi um pouco mais sobre esse processo aqui: askubuntu.com/a/430944/47461 Como contratante, encontro esse problema com frequência.
Flickerfly

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.