A saída de apt-get upgrade
é:
The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl
O que isto significa? Devo agir? Se sim, o que?
A saída de apt-get upgrade
é:
The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl
O que isto significa? Devo agir? Se sim, o que?
Respostas:
Eu tive o mesmo problema várias vezes. NÃO faça
sudo apt-get dist-upgrade
primeiro. Muito importante. **** NOTA: Esta solução é para máquinas baseadas no Debian, mas não funcionará no KDE Neon . Para atualizar o KDE Neon, você deve usarsudo pkcon update
. ****
Isso pode tornar seu sistema muito instável, os programas podem falhar e você pode perder muitas funcionalidades no seu sistema operacional.
Você DEVE instalar cada pacote individualmente, NO ENTANTO , durante esse processo, outras dependências também serão instaladas automaticamente e seu problema será resolvido em apenas alguns minutos.
Não tive problemas com a seguinte solução. É bastante rápido e fácil.
apt list --upgradable
sudo apt-get install package-name-here
apt list --upgradable
apt list --upgradable
após cada instalação do pacote. Isso deve levar apenas alguns minutos para ser concluído.
sudo apt-get autoclean
sudo apt-get update && sudo apt-get dist-upgrade
Se essa solução funcionou para você, não se esqueça de fazer um voto positivo para que a solução correta esteja disponível para outras pessoas e fique no topo da lista de respostas.
Se, por algum motivo, esta solução não funcionar, consulte a resposta do usuário GAD3R abaixo. Também é uma boa solução.
Obrigado.
O que isto significa?
The following packages have been kept back:
A resposta está aqui
Isso significa que existem novas versões desses pacotes que não serão instaladas por algum motivo. Os possíveis motivos são dependências quebradas (um pacote do qual depende não tem uma versão disponível para download) ou novas dependências (o pacote passou a depender de novos pacotes desde a última versão).
Devo agir?
Você precisa usar dist-upgrade
para instalar as novas dependências e atualizar os pacotes:
sudo apt-get dist-upgrade
O problema pode ser resolvido executando, dist-upgrade
se não for necessário:
Corrigir dependências quebradas
sudo apt-get -f install
Remova alguns pacotes que não estão mais instalados no seu sistema:
sudo apt-get autoclean
Coloque o pacote desejado em espera:
echo "<package_name> hold" | dpkg --set-selections
Reconfigure o pacote nomeado:
dpkg-reconfigure <package_name>
A partir desta resposta do Unix SE :
Em primeiro lugar, como mencionado acima, NÃO atualize distintamente nenhum sistema de produção! Embora a atualização dist "resolva" os pacotes atrasados, definitivamente não é a solução para esse problema e provavelmente causará mais sofrimento do que benefícios se você executá-lo sem conhecer as implicações em seu sistema.
Se a atualização de um pacote exigir a instalação de pacotes adicionais, ela será "retida" ao executar sudo apt-get upgrade
.
Como mencionado acima, você pode instalar manualmente sudo apt-get install [paste kept back packages here]
esses pacotes "retidos" executando explicitamente, mas isso marcará esses pacotes como "instalados manualmente", o que geralmente não é o que queremos.
Para instalar automaticamente quaisquer pacotes adicionais necessários para atualizar os pacotes "retidos", sem marcar os pacotes "retidos" como instalados manualmente, basta executar sudo apt-get --with-new-pkgs upgrade
.
Eu incluí esta resposta no meu blog. Se você quiser ver que você pode ir lá a partir deste link .
O erro acima é muito comum no terminal Ubuntu quando você tenta atualizar ( apt-get upgrade
). Isso geralmente acontece porque as dependências de um pacote que você instalou foram alteradas. Para atualizar, você precisa atualizá-los também primeiro. Portanto, é muito simples resolver isso. Você poderá ver os pacotes que ficaram abaixo dessa mensagem de erro. Como exemplo, posso ver os seguintes pacotes na lista:
gnome-software gnome-software-common linux-generic linux-headers-generic
linux-image-generic snapd ubuntu-core-launcher ubuntu-software
Não basta digitar sudo apt-get dist-upgrade
É muito perigoso, pois instala todas as atualizações pendentes. Isso pode levar seu ambiente de trabalho a um estado altamente instável.
Portanto, minha opinião é usar famosos
sudo apt-get install [package]
Você pode substituir [package]
por qualquer pacote que esteja na mensagem de erro. Além disso, você pode colocá-los como estão em uma lista (basta copiar e colar). Como um exemplo no meu caso, posso inserir
sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic
linux-image-generic snapd ubuntu-core-launcher ubuntu-software
Se você quer fazer
sudo apt-get dist-upgrade
por algum motivo, apenas verifique a lista de pacotes usando a opção simular -s
( sudo apt-get -s dist-upgrade
), ou sem a -s
opção de terminar a execução antes de aceitar. (você sempre pode escolher a opção não)
Recentemente, uma atualização de segurança do Debian introduziu algumas novas dependências. Nesse caso, o linux-image
pacote começou a exigir linux-firmware
, entre alguns outros. Então eles foram retidos e não foram instalados por unattended-upgrade
. Após alguns testes e confirmações, consegui instalar seletivamente apenas esses pacotes, sem tocar em outras atualizações pendentes:
apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')
Este artigo resume bem por que isso acontece:
Se as dependências foram alteradas em um dos pacotes que você instalou para que um novo pacote seja instalado para executar a atualização, isso será listado como "retido".
A solução para isso é instalá-los explicitamente com o
sudo apt install [packages]
Você provavelmente deseja marcar esses pacotes como instalados automaticamente, a menos que você se preocupe com eles e não apenas para satisfazer dependências.
sudo apt-mark auto [packages]
Para evitar que isso aconteça em primeiro lugar, recomendo usar
sudo apt --with-new-pkgs upgrade
para atualizar pacotes no futuro, o que permite a instalação de novos pacotes para satisfazer mudanças nas dependências.
--with-new-pkgs
! E deixe-me enfatizar novamente que " NÃO atualize distintamente nenhum sistema de produção! Embora a atualização dist" resolva "os pacotes retidos, definitivamente não é a solução para esse problema e provavelmente causará mais sofrimento do que benefícios se você execute-o sem conhecer as implicações no seu sistema ".