O que significa “Os seguintes pacotes foram retidos” significa?

72

Ao fazer um apt-get upgrade, às vezes recebo uma mensagem dizendo "Os seguintes pacotes foram mantidos em sigilo". Por exemplo:

$ sudo apt-get upgrade                                                                                                
Reading package lists... Done                                                                                                          
Building dependency tree                                                                                                               
Reading state information... Done                                                                                                      
The following packages have been kept back:                                                                                            
  linux-headers-server linux-image-server linux-server                                                                                 
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

o que isso significa, exatamente? Obviamente, os pacotes foram retidos e não foram instalados, mas por quê?

A pergunta seguinte seria: como atualizar esses pacotes mantidos em sigilo?

Charles Roper
fonte
2
Uma explicação muito clara pode ser encontrada aqui: debian-administration.org/article/69/…
jplandrain
Resumi os comentários e a documentação técnica sobre: ​​Os seguintes pacotes foram mantidos. Convido você a ler no meu artigo e a deixar comentários para que isso possa ser melhorado. Obrigado pelo seu tempo para responder a esta petição. Além disso, desejo que você ache útil o post. Este é o link: guillermo.lopez.co.cr/… Cite este artigo como um recurso quando alguém precisar de ajuda sobre este tópico.
ithan

Respostas:

63

Se a atualização exigir a exclusão de outro pacote ou a instalação de um novo, o pacote será "retido". Como a página de manual do apt-get upgrade explica:

Pacotes atualmente instalados com novas versões disponíveis são recuperados e atualizados; sob nenhuma circunstância os pacotes atualmente instalados são removidos ou os pacotes ainda não instalados são recuperados e instalados.

Para superar isso, você pode fazer

sudo apt-get --with-new-pkgs upgrade

Isso permite que novos pacotes sejam instalados. Isso permitirá que você saiba quais pacotes serão instalados e avise você antes de realmente fazer a instalação.

Chade
fonte
6
Bom, essa é a explicação mais clara ainda. A página de manual que você vinculou no die.net não inclui a opção --with-new-pkgs. Este é o seguinte: manpages.debian.org/cgi-bin/man.cgi?query=apt-get
Charles Roper
11
Mas eu atualizei e atualizei todos os pacotes. Então, por que esses pacotes não são atualizados?
Nullpointer
2
O @Nullpointer "apt-get upgrade" não instalará novos pacotes (a menos que você forneça o sinalizador). Sem o sinalizador, se a atualização de um pacote existente exigir a instalação de um novo pacote, essa atualização não ocorrerá.
Chad
Isso não funciona para mim (Ubuntu 19.04) e resulta exatamente na mesma mensagem que o `apt upgrade`, ou seja," retido ".
Marc
18

O relatório básico é que apt-get upgradenão atualizará pacotes para os quais o gerenciador de pacotes gostaria de excluir e reinstalar o pacote. Isso acontece muito nos patches de segurança porque, muitas vezes, era na verdade o precursor das bibliotecas da compilação distribuível final que foi corrigida. A funcionalidade "vá em frente e exclua as coisas" está presente, apt-get dist-upgrademas lembre-se de executar apt-get updateprimeiro apenas no caso de o pessoal do upstream descobrir alguma coisa desde a última vez que tentou. Às vezes eles perdem as coisas e as consertam rapidamente.

rhoyerboat
fonte
3

Tente apt-get dist-upgrade. Na página do manual:

dist-upgrade

dist-upgradealém de desempenhar a função de upgrade, também manipula inteligentemente as dependências variáveis ​​com novas versões de pacotes; apt-get possui um sistema de resolução de conflitos "inteligente" e tentará atualizar os pacotes mais importantes às custas dos menos importantes, se necessário. Portanto, o dist-upgradecomando pode remover alguns pacotes. O /etc/apt/sources.listarquivo contém uma lista de locais para recuperar os arquivos de pacote desejados. Consulte também apt_preferences(5)um mecanismo para substituir as configurações gerais de pacotes individuais.

Embora esse comando seja usado para atualizar para uma nova versão principal do sistema operacional, ele não faz isso por padrão. O arquivo /etc/apt/sources.listdeve ser alterado para a nova versão e , em seguida, um dist-upgradeé usado.

Darin Luckie
fonte
1

Apenas faça

sudo apt-get install linux-headers-server linux-image-server linux-server

para atualizar os pacotes retidos.

Então corra apt-get upgradee você ficará bem.

Robert
fonte
5
Isto está incorreto. apt-get dist-upgradevai NÃO atualizar seu sistema operacional para uma nova versão. man apt-getpara ver as diferenças.
BT643
@ BT643 (e aqueles que votaram positivamente no comentário) votaram positivamente nas respostas erradas, em vez de apenas deixar um comentário. Respostas especialmente flagrantemente erradas como essa que perpetuam um equívoco comum. Dependemos dos votos para trazer um bom conteúdo para a frente, mas também para empurrar o conteúdo errado.
terdon
11
@terdon Eu tentei, mas não tenho representante suficiente :) (precisa de 125 para votar).
BT643
A primeira parte (instalação / atualização apenas dos pacotes retidos) não é uma boa resposta? Em seguida, prossiga com a atualização. Removendo o conselho ofensiva sobre dist-upgrade soa como uma idéia melhor do que apenas downvoting uma resposta parcialmente correta ...
Xen2050
Primeiro, considere usando: sudo apt-get --with-new-pkgs upgradeque não teria lado afetar de causar pacotes para ser marcado como instalado manualmente
l --marc l