Embora existam várias maneiras de instalar aplicativos no Ubuntu, eu prefiro usar o comando apt no terminal para instalar o software.
Se você fizer o mesmo, poderá encontrar um erro de dependência como este:
Some packages could not be installed. 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 information may help to resolve the situation:
The following packages have unmet dependencies:
green-recorder : Depends: python-urllib3 but it is not installable
E: Unable to correct problems, you have held broken packages.
Normalmente aqui, você encontrará soluções simples e fáceis de seguir para problemas complicados. Infelizmente, este não é tão simples.
Neste artigo de solução de problemas, direi por que esse erro ocorre e darei algumas dicas sobre como resolver esse problema.
Por que você vê o erro “você guardou pacotes quebrados”?
Você estava tentando instalar um pacote de aplicativo, muito provavelmente de um PPA ou repositório de terceiros.
Os aplicativos geralmente precisam de versões específicas de bibliotecas e componentes de software (chamadas dependências). Essas dependências podem não fazer parte do pacote do aplicativo em si, mas espera-se que já estejam instaladas em seu sistema ou durante a instalação do aplicativo.
Seu sistema Linux tenta instalar essas dependências por conta própria. Mas se a versão do pacote de dependência não estiver disponível em seu sistema, ele fica confuso, pois não há como resolver este problema de dependência.
É por isso que ele informa que o software que você estava tentando instalar depende do XYZ, mas este XYZ não pode ser instalado.
Outro caso de uso é quando o seu pacote pode ser retido é quando você tenta instalar duas versões do mesmo software. Digamos que você esteja instalando uma versão específica do Wine quando já tiver outra instalada.
Como proceder para corrigir o erro “Incapaz de corrigir os problemas, você reteve pacotes quebrados”
Você pode tentar algumas coisas para fazer as coisas funcionarem. Você precisa ter algumas idéias sobre como instalar/remover pacotes na linha de comando do Linux para resolver as coisas aqui.
Certifique-se de que o cache do pacote do seu sistema está atualizado
Primeiro, certifique-se de que o cache do pacote local esteja atualizado. Seu sistema verifica neste cache os pacotes disponíveis. É possível (mas não é certeza) que o pacote de dependência seja visto pelo sistema após a atualização do cache.
sudo apt update
Tente instalar o pacote problemático novamente e veja se ele corrige o problema.
Instale a dependência
Se você tentar instalar o pacote problemático novamente e ele ainda reclamar do mesmo erro de dependência, talvez essa dependência não esteja disponível para a versão de distribuição.
Você pode usar o comando apt search e ver se você poderia conseguir esta biblioteca de algum outro pacote ou nome:
sudo apt search nome_do_pacote
Se o pacote estiver disponível, é a mesma versão solicitada pelo pacote que você estava tentando instalar?
Tente instalar o pacote de dependência e veja o que acontece:
sudo apt install pacote_da_dependencia
Você pode encontrar uma cadeia de dependências. Você tenta instalar a dependência A, mas ela reclama de B. Então você tenta instalar B e ela reclama de C.
Também pode acontecer que, ao tentar instalar o pacote C, ele já esteja instalado. Verifique a versão do pacote C. É a mesma versão exigida pelo pacote B? Em caso afirmativo, remover C e instalá-lo novamente pode ajudar.
Você pode obter o pacote de dependência ausente de alguma outra fonte?
Se o pacote de dependência ausente não puder ser encontrado em seu sistema (sem resultados na pesquisa do apt), você pode tentar obter o pacote de dependência de algum outro lugar. Eu sei que não é uma coisa muito conveniente de fazer, mas você não tem muitas opções aqui.
Por exemplo, no caso de instalação do shutter, reclamou da libgoo-canvas-perl
e esta biblioteca não está mais disponível no sistema Ubuntu.
sudo apt install shutter
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. 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 information may help to resolve the situation:
The following packages have unmet dependencies:
shutter : Depends: libgoo-canvas-perl but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
No entanto, como estava disponível nas versões anteriores do Ubuntu, procurei esse pacote no arquivo de pacotes do Ubuntu e o encontrei na lista do Ubuntu 14.04 aqui. Baixei o arquivo .DEB e instalei.
Agora que este pacote de dependência está instalado, tentar instalar o aplicativo original (obturador, neste caso) não deve reclamar mais pelo menos deste pacote.
Se você não conseguir encontrar o pacote de dependência em qualquer lugar, instale o pacote problemático de alguma outra fonte
Portanto, no exemplo acima, tentei instalar o aplicativo Green Recorder usando seu PPA. Este aplicativo precisa da biblioteca python-urllib3
, mas, infelizmente, esta biblioteca não está disponível no meu sistema Ubuntu 20.04.
abhishek@itsfoss:~$ apt search python-urllib3
Sorting... Done
Full Text Search... Done
Claramente, este é um aplicativo mal empacotado. O desenvolvedor o disponibilizou para o Ubuntu 20.04 sem perceber que o Ubuntu 20.04 não suporta mais o Python 2 e todas as bibliotecas do Python agora começam com o prefixo python3. Portanto, o python-urllib3 deve ser python3-urllib3.
Se você estiver em tal situação, talvez verifique a página inicial do projeto ou pesquise na internet por uma fonte alternativa para instalá-lo. Talvez haja uma versão Snap/Flatpak ou algum usuário criou um PPA para ela? Se não, você pode ir com a opção de código-fonte também.
Se você ver o erro de pacote quebrado retido durante a atualização, tente isto
A maior parte da discussão até agora assumiu que você vê esse erro ao instalar um novo aplicativo. Isso pode não ser sempre o caso.
Se você vir esse erro ao tentar atualizar seu sistema com o comando sudo apt update
, será necessário adotar uma abordagem um pouco diferente.
Primeiro, verifique qual pacote está sendo mantido com este comando:
dpkg --get-selections | grep hold
Se você vir alguns pacotes em espera, remova-os e continue atualizando seu sistema ou instalando o software.
Você também pode usar o gerenciador de pacotes Synaptic para consertar os pacotes quebrados.
Você conseguiu consertar o problema?
Como mencionei anteriormente, não existe uma solução direta para esse problema. Você terá que investigar por conta própria e ver se pode ser consertado ou não.
Por favor, compartilhe nos comentários se o seu problema for corrigido. Se não, posso tentar ajudá-lo.