Home / Destaques / Resolvendo Problemas de Repositórios, Chaves e Pacotes Quebrados no Ubuntu

Resolvendo Problemas de Repositórios, Chaves e Pacotes Quebrados no Ubuntu

Olá pessoal,

Muitas vezes, queremos instalar programas adicionais no Ubuntu por meio da adição de novos repositórios, e isso é muito legal para deixar o seu Ubuntu com a cara e com os programas que você mais gosta. Mas isso as vezes pode causar problemas, por diversas questões.

O Ubuntu vem com os repositórios padrão testados pela Canonical, para que os programas padrão que vem instalado nele não tenham dependências ou bibliotecas que conflitem. Os repositórios padrão da Canonical também são mantidos por eles, e terceiros confiáveis, ou seja, uma empresa grande e com segurança, backup e etc.

Quando adicionamos repositórios de terceiros, os mesmos podem gerar conflitos de dependências, gerar quebra de pacotes, ou pode ser que eles saiam do ar em algum momento ou sejam descontinuados. Quando isso ocorre, você terá problemas com o seu apt.

Então neste artigo, mostrarei como resolver os problemas mais comuns do apt.

Vamos lá!

Tudo começa com a Adição de Repositórios de Terceiros

Você sabe o que é um PPA?

PPA significa Personal Package Archive ou então Arquivo pessoal de pacotes. O PPA é útilizado para disponibilizar programas que não estão no repositórios oficiais do Ubuntu.
O PPA foi criado pela empresa Canonical, a mesma empresa que mantem o Ubuntu.
Anteriormente para adicionar um PPA era necessário editar manualmente o /etc/apt/sources.list que é onde armazena os repositórios no Ubuntu.
Para encontrar uma PPA é só acessar o site https://launchpad.net/ubuntu/+ppas

Quando adicionamos um novo repositório, o comando “add-apt-repository” irá até o site do repositório para baixar e instalar uma chave gpg para validar no seu sistema que este canal é seguro. Depois quando você quiser atualizar o sistema, o apt irá checar a chave pública do canal de software e se combinar com a sua, ele baixará as atualizações.

Por exemplo, irei adicionar o repositório do tema de ícones “Pacífica” para Ubuntu 13.04.

sudo add-apt-repository ppa:fsvh/pacifica-icon-theme

Another Icon Theme for Linux. This pack is a mixture of many flavours like (Faenza/Faience, Moka, Nitrux, Elementary and more).
Mais informações: https://launchpad.net/~fsvh/+archive/ubuntu/pacifica-icon-theme

Pressione [ENTER] para continuar ou ctrl-c para cancelar a adição

gpg: chaveiro `/tmp/tmpphs6hc01/secring.gpg’ criado
gpg: chaveiro `/tmp/tmpphs6hc01/pubring.gpg’ criado
gpg: requisitando chave 87DD42B5 de servidor hkp – keyserver.ubuntu.com
gpg: /tmp/tmpphs6hc01/trustdb.gpg: banco de dados de confiabilidade criado
gpg: chave 87DD42B5: chave pública “Launchpad PPA for Francisco Villarroel” importada
gpg: Número total processado: 1
gpg:               importados: 1  (RSA: 1)
OK

Notou que uma chave para o seu sistema foi importada?
É esta que será usada para combinar com a chave pública do canal/repositório.

Feito isso, o processo normal é fazer um apt-get update para que o cache do apt seja alimentado por este novo canal, e depois você poderá instalar seu novo programa com o sudo apt-get install pacifica-icon-theme.

Agora, já pensou o que acontece se o mantenedor de um canal como este sair  do ar ou mudar suas chaves? É aí que os problemas que citarei abaixo começam, e como resolvê-los.

1 – Problemas de PPAs indisponíveis – durante atualização

 Erro:

W: Falhou ao buscar http://ppa.launchpad.net/…

Causa:

Pela razão e exemplo citados acima. Adicionamos repositórios PPAs no Ubuntu que não são oficiais da Distro para instalar softwares adicionais.
O problema é que os mantenedores destes canais PPAs, muitas vezes saem do ar ou são descontinuados, ou o PPA não serve para sua versão do Ubuntu.

Se isso acontecer, quando você fizer um apt-get update, ou o sistema checar por atualizações, com certeza, irá mostrar que não foi possível encontrar este canal.

Solução:

A primeira coisa a se fazer então é desabilitar este canal ou removê-lo.

Abra Programas e Atualizações, vá até a segunda aba Outros Programas, veja os canais que não são mais encontrados na internet e desmarque-os ou remova-os.

repositorios

 

Ou via linha de comando:

 

sudo ppa-purge ppa:nome_do_ppa

2 – Problemas GPG – Chaves Públicas Não Disponíveis

O sistema GPG – GNU Privacy Guard (GnuPG or GPG) é o sistema que cria e valida chaves criptografadas assimétricas (uma pública e uma secreta).
Ou seja, o mantenedor do canal cria uma chave para seu canal, possui um servidor de chaves, que irá fornecer a quem solicitar uma chave para instalar no sistema operacional do usuário, e que irá se comunicar com o servidor de chaves do mantenedor do canal, e validar se as duas combinam. É assim que se valida um canal seguro. Para saber mais sobre o GPG: http://pt.wikipedia.org/wiki/GNU_Privacy_Guard

Erro:

W: Erro GPG: As assinaturas a seguir não puderam ser verificadas devido à chave pública “ex:123456789” não estar disponível

Ou de forma gráfica do atualizador de Programas:

erro-chave

Causa:

As chaves de segurança no seu sistema podem estar com problemas, corrompidas, ou com problema para se comunicar com o servidor de chaves, ou o mais provável, o mantenedor do canal PPA, alterou a chave de segurança dele, e então a sua chave não será compatível com a dele pois a sua é diferente ou expirada. Pode acontecer também quando você muda o servidor do Ubuntu de Brasil para Principal.

Solução:

2.1 – Limpar:

Vamos remover algumas pastas e conteúdo antes que armazenam informações sobre os pacotes.
Estas pastas armazenam informações sobre a lista de pacotes carregada, em um “header”, então apagando e recriando o “partial” ele gerará outra lista atualizada no lugar ao gerenciar seu apt. Se você rodar o comando sudo apt-get update por exemplo, essa pasta será novamente populada.

sudo rm /var/lib/dpkg/info/*
sudo rm -r /var/lib/apt/lists/*
sudo mkdir -p /var/lib/apt/lists/partial

Se houver qualquer problema em apagar esses arquivos, com alguma mensagem dizendo que “a lista de argumentos é muito longa”, você pode abrir o seu gerenciador de arquivos como administrador e entrando com a sua senha de root que será solicitada, entrar na pasta desejada, selecionar tudo com o Ctrl+A e apagar tudo com o Shift+Del.

1 – Abra o gerenciador de Arquivos como administrador.

No Ubuntu, você pode usar o comando: “sudo nautilus”.
No Elementary OS, você pode abrir clicando com o botão direito do mouse sobre o app Arquivos e escolhendo a opção “Nova janela como administrador”, conforme imagem abaixo.

arquivos-as-root

2 – Selecione tudo com Ctrl+A e apague com Shift+Del, e feche.

arquivos-as-root2

Obs. depois de apagar tudo não se esqueça de recriar a pasta “partial”.

2.2 – Importar chaves:

Execute o comando:

sudo gpg --keyserver subkeys.pgp.net --recv número-da-chave

Vai aparecer a mensagem:

gpg: requisitando chave número-da-chave de servidor hkp – subkeys.pgp.net.

Se demorar muito dê um Ctrl + C e repita o comando até que a chave seja importada com sucesso.

A mensagem quando a importação der certo será:

gpg: chave 12345678: chave pública “Launchpad nome do repositório” importada
gpg: Número total processado: 1
gpg:               importados: 1  (RSA: 1)

OBS. Se você tiver com várias chaves que não foram encontradas e não apenas uma delas, minha sugestão é copiar a mensagem de erro com todos os dados para um editor de texto, e separar apenas as chaves, e então adicionar o comando acima para cada chave que faltou, e então copiar linha por linha no terminal até que todas as chaves sejam recebidas.

Por exemplo: Abaixo copiei os erros que aconteceram depois de um apt-get update, e colei-os no editor de texto, e mais abaixo no próprio editor de texto copiei o comando “sudo gpg –keyserver subkeys.pgp.net –recv” mais o número de cada chave que deu erro, para que eu rode depois os comandos um a um no terminal (conforme o primeiro que selecionei na imagem abaixo).

gedit-keys

Importando todas as chaves com sucesso, rode o comando sudo apt-get update e veja se o problema foi resolvido, na maioria dos casos, isso basta para resolver, mas se ainda não, continue com os passos abaixo.

2.3 – Adicionando as chaves

sudo gpg --export --armor número-da-chave | sudo apt-key add -

Se a exportação der certo a mensagem será:

OK

 

2.4 – Removendo chaves com problemas

Se ao tentar exportar as chaves, aparecer uma mensagem:

gpg: recurso do bloco de chaves: `/etc/apt/trusted.gpg.d/nome_da_chave.gpg’: limite de recurso

Será necessário remover estes arquivos de chaves

Poderá fazer isso navegando com o Nautilus como root com o comando
(certifique-se que tenha o gksu instalado, se não tiver instale-o com o sudo apt-get install gksu).

 

sudo gksu nautilus

Agora navegue até a pasta /etc/apt/trusted.gpg.d/, e remova as chaves com problemas. Eu geralmente recorto elas e colo em uma pasta pessoal minha.

erro-apt

2.5 – Após remover chaves com Defeitos, verificar quais faltam e importá-las novamente

Vamos praticamente repetir os passos 2.2 e 2.3.

Vamos atualizar o apt novamente apenas para identificar as chaves que faltam:

 sudo apt-get update

Certamente agora aparecerá estas mensagens que afirmam que não existem tais chaves (que foram removidas) para estes canais ppa.

W: Erro GPG: http://ppa.launchpad.net utopic Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY número-da-chave

Quando isso acontecer, basta repetir os comandos de importar e exportar as chaves que aparecerem faltando na mensagem de erro, (conforme passo 2.2 e 2.3).

sudo gpg --keyserver subkeys.pgp.net --recv número-da-chave
sudo gpg --export --armor número-da-chave | sudo apt-key add -

Só que desta vez ao exportar, a saída ao invés de aparecer o erro indesejado de “limite de recurso “:
gpg: recurso do bloco de chaves: `/etc/apt/trusted.gpg.d/nome_da_chave.gpg’: limite de recurso”, aparecerá no comando export a saída “OK”, como na mensagem abaixo:

sudo gpg –export –armor número-da-chave | sudo apt-key add –
OK

 

2.6 – Terminado tudo isso, atualize novamente

             sudo apt-get update

 

Este abaixo é o final de um apt-get update sem erros.

terminal

Agora está tudo ok!

Nenhum problema com chaves!

chaves1

 

3 – Problema de Pacotes Quebrados e Dependências Não Resolvidas

Erro:

E: Sub-process /usr/bin/dpkg returned an error code (1)

Ou os erros gráficos do Atualizador de Programas, Central de Programas ou Gerenciador de pacotes Synaptic:

pacotes quebrados1

pacotes quebrados2

Causa:

Pacotes quebrados acontecem por causa de dependências desencontradas. Ou seja, você tem 2 repositórios que fornecem o mesmo software ou programas diferentes que compartilham os mesmos arquivos de bibliotecas. Quando um deles, tem a versão de uma dependência ou biblioteca inadequado para a versão do programa, o pacote pode quebrar durante uma atualização, ou uma instalação, por exemplo.

Solução:

O que se recomenda então, é verificar quais repositórios são conflitantes e desabilitar o repositório que mantêm o programa ou bibliotecas mais antigas, conforme já foi mostrado acima no item “Programas e Atualizações”, e depois solucionar o problema com os pacotes que estão quebrados com os comandos abaixo.

Execute os seguintes comandos para resolver os problemas de pacotes quebrados e depois para resolver a instalação de dependências que faltam.

sudo dpkg --configure -a
sudo apt-get install -f

Ao final de todos os procedimentos é interessante sempre atualizar o seu apt, e depois atualizar todo o sistema e depois limpar os pacotes não mais necessários.

sudo apt-get update && sudo apt-get dist-upgrade 
sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove

Quer Voltar os Repositórios Para o Padrão?

Alguns fatos sobre os repositórios padrão:

  • O repositório pai será sempre http://archive.ubuntu.com/ubuntu – todo o resto é um espelho deste. Os outros espelhos primários, têm um domínio de formulário <ccTLD> .archive.ubuntu.com, onde o código curto de dois caracteres é o Country Code Top Level Domain. Você pode encontrar espelhos adicionais com seu status no Launchpad.
  • O codinome de distribuição faz parte do canal (o terceiro termo). Você pode usar lsb_release -sc para descobrir isso, e é a primeira palavra do codinome da versão em letras minúsculas (Trusty para Trusty Tahr, por exemplo).
  • Há cinco canais: <codename>, <codename>-security, <codename>-updates, <codename>-backports and <codename>-proposed. O primeiro é necessário, pois é a base, o segundo é altamente recomendado, pois contém correções de segurança, o quarto apenas se você precisar de algum pacote portado de uma versão mais recente e o quinto somente se um desenvolvedor pede-lhe para habilitá-lo para testar um possível fix.
  • Há quatro seções do repositório: main , multiverse , universe e restrict.

Assim, você sempre pode criar um sources.list seguro que contenha apenas:

deb http://archive.ubuntu.com/ubuntu <codename> main multiverse universe restricted
deb http://archive.ubuntu.com/ubuntu <codename>-security main multiverse universe restricted

Método 1

Comando

Se você quiser um comando que faça isso para você:

Antes faça um backup do seu sources.list

sudo mv /etc/apt/sources.list /etc/apt/sources.list.old

faça login no terminal como root e digite o seguinte comando:

printf 'deb http://archive.ubuntu.com/ubuntu %s main multiverse universe restricted\n' $(lsb_release -sc){,-security} > /etc/apt/sources.list

Adicionalmente, se desejar, pode desabilitar ou remover os programas adicionais que você adicionou.

repositorios

Depois basta recarregar o seu apt com o sudo apt-get update.

Método 2

Este aqui eu gostei mais do que o primeiro e funcionou melhor para mim.

1 – Rode este comando abaixo para apagar seu arquivo do sources.list e conteúdo do diretório das chaves sources.list.d

sudo rm -vf /etc/apt/sources.list.d/*.list && sudo rm -vf /etc/apt/sources.list

2 – Crie um novo arquivo sources list:

No terminal digite:

sudo gedit /etc/apt/sources.list

E então copie e cole o texto abaixo no arquivo em branco, salve e feche:

Obs. Substitua o nome da distro no texto abaixo pelo primeiro nome do codnome de sua distro, por exemplo, (Trusty para Trusty Tahr, ou Xenial para o Xenial Xerus).

## SOURCES LIST FOR UBUNTU 16.04 LTS XENIAL XERUS
## ALSO FOR XUBUNTU 16.04, LUBUNTU 16.04
## AND KUBUNTU 16.04
## From: http://sites.google.com/site/easylinuxtipsproject
## This list is for the Main server; you might want to select a
## faster mirror server closer to you, with Software & Updates.
## Only fit for 16.04 LTS Xenial Xerus!
#
## SOURCES FOR ORDINARY UPDATES AND SOFTWARE:
deb http://archive.ubuntu.com/ubuntu xenial main
deb http://archive.ubuntu.com/ubuntu xenial-updates main
deb http://archive.ubuntu.com/ubuntu xenial restricted
deb http://archive.ubuntu.com/ubuntu xenial-updates restricted
deb http://archive.ubuntu.com/ubuntu xenial universe
deb http://archive.ubuntu.com/ubuntu xenial-updates universe
deb http://archive.ubuntu.com/ubuntu xenial multiverse
deb http://archive.ubuntu.com/ubuntu xenial-updates multiverse
#
## SOURCES FOR SECURITY UPDATES:
deb http://archive.ubuntu.com/ubuntu xenial-security main
deb http://archive.ubuntu.com/ubuntu xenial-security restricted
deb http://archive.ubuntu.com/ubuntu xenial-security universe
deb http://archive.ubuntu.com/ubuntu xenial-security multiverse
#
## BACKPORTS SOURCES (WITH LOWERED PRIORITY):
deb http://archive.ubuntu.com/ubuntu xenial-backports main
deb http://archive.ubuntu.com/ubuntu xenial-backports restricted
deb http://archive.ubuntu.com/ubuntu xenial-backports universe
deb http://archive.ubuntu.com/ubuntu xenial-backports multiverse
#
## PARTNER SOURCE (FOR SOFTWARE FROM
## PARTNERS OF CANONICAL):
deb http://archive.canonical.com/ubuntu xenial partner
#
## SOURCE FOR WEB BROWSER GOOGLE CHROME
## (DISABLED BY DEFAULT):
## Only enable it when you've installed Google Chrome!
## You can enable it in the application Software & Updates.
# deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

3. Agora recarregue o seu apt novamente com o comando no terminal:

sudo apt-get update

E pronto.

Bom, é isso aí pessoal,

Espero que tenham resolvido todos os seus problemas e seu apt esteja redondinho para trabalhar.

Abraços,

Cleuber

fontes: askubuntu.com

About Cleuber

Cleuber Silva Hashimoto. Administrador

19 comments

  1. Depois de muito procurar, resolveu meus problemas!
    Post sensacional! Parabéns, amigo.

  2. Parceiro !
    estou com um problema nesse bendito PPA !!
    Toda vez que tento executar esse comando => add-apt-repository ppa:x2go/stable
    me aparece a seguinte mensagem de erro =>
    Cannot add PPA: ‘ppa:x2go/stable’.
    Please check that the PPA name or format is correct.

    porém essa mensagem não é exclusiva dessa interface que estou tentando instalar (x2go) qualquer outro programa “ppa” que tento instalar, da a mesma mensagem de erro !
    lembrando que estou por trás de um proxy ! ja criei um usuario para liberar o acesso do ubuntu server no proxy ! mas ainda sim nao resolve
    ja entrei nesse diretorio => sudo gedit /etc/apt/apt.conf e alterei com os dados do meu proxy => Acquire::http::Proxy “http://meu_usuário:minha_senha@proxy:porta”;
    porém, mesmo assim não obtive exito ! tem alguma solução para isso ? pode me ajudar ?

    • Olá Rhuan,
      Bom, pelo que entendi, o problema não é com o repositório, pois vc não consegue adicionar nenhum repositório, certo?
      O proxy é da empresa que trabalha? Se for, creio que será preciso adicionar uma exceção na configuração do servidor de Proxy para o IP desta sua máquina, para que ela não passe por ele. Poderia ser também um problema de repositório, mas caso fosse este o caso, você obteria sucesso adicionando outros repositórios.

  3. Grande Cleuber! Veja se consegue me ajudar, por favor!

    Cara, esse artigo foi tudo o que eu precisava. Porém, tá acontecendo alguns problemas que me impedem de conseguir corrigir esse problema com as chaves (problema na parte 2 chaves GPG). Quando rodo o comando sudo gpg –keyserver subkeys.pgp.net –recv 40976EAF437D05B5, dá essa mensagem abaixo:

    gpg: AVISO: permissões inseguras no arquivo de configuração:
    `/home/rafael/.gnupg/gpg.conf’
    gpg: chamadas de programas externos são desabilitadas devido a opções de permissões de arquivo nocivas
    gpg: erro de comunicação com o keyserver: erro geral
    gpg: Recebimento de informação do keyserver falhou: erro geral

    Já procurei solução em tudo que é lugar e não consegui resolver. Espero que você tenha uma sugestão! Ficaria encarecidamente grato! Abraços!

    • Isso aconteceu comigo ontem também. Não sei se agora existe uma verificação de segurança nas propriedades do arquivo.
      Creio que seja problema de permissão do arquivo. Rodei um comando de alteração de permissões na pasta e seu conteúdo “sudo chmod -R 755 .gnupg”. Depois rodei um “sudo gpg –keyserver subkeys.pgp.net –recv número_da_chave” e o problema sumiu, veja se funciona para você.
      Abraço.

      • Cleuber, amigão, funcionou!

        O que tive que fazer era não usar o sudo. Quando usava o sudo, ele dava aquela mensagem de permissão negada. Segui todo o seu tutorial e finalmente, resolvi esse problema de chaves! Tutorial fantástico como sempre Cleuber! Obrigado por nos ajudar.

        Aproveitando a deixa, antes de encontrar a sua solução, apaguei toda a minha lista de repositórios que eu tinha. Aqueles repositórios do artigo “70 coisas para fazer depois de instalar o Ubuntu” ainda são válidos? Posso usá-los numa boa? Ou você tem aí uma lista de repositórios atualizada para passar, se possível? Grande abraço e mais uma vez obrigado!

        • Que bom Rafael!
          O artigo das “70 coisas…” é válido sim para o Ubuntu 14.04 LTS, usei ele esta semana no Elementary OS Freya que é baseado no Ubuntu 14.04, não adicionando apenas os repositórios com o nomes do Elementary para não dar conflito e rodou numa boa. Também removi e readicionei repositórios no meu Ubuntu 14.04 LTS hoje usando este artigo.
          Valeu, abraço!

          • Cleuber, usei lá e tá tudo certo! Mais uma vez, muito obrigado, por ajudar a todos com seus artigos mais que excelente! Recomendei para um monte de gente q tava com o mesmo problema! Valeu!

          • Valeu Rafael! Obrigado por compartilhar! Eu sei como é sofrer para descobrir as soluções fuçando na internet pois passei por isso muitas vezes e ainda passo…kkk, e fiz o site justamente para registrar e compartilhar meus aprendizados! 😉
            Valeu mesmo! 🙂

  4. Cleuber, fiquei com uma dúvida, se eu remover todos os PPA’s que eu adicionei, os programas instalados através dessas PPA’s continuam sendo atualizados com o sistema, ou não???

    • Não, os repositórios de programas específicos, são os canais pelos quais o sistema recebe atualizações desses programas. Caso os repositórios oficiais do Ubuntu incluam até certa versão estável de determinado programa, pode ser que ele seja instalável sem a adição de um repositório específico, mas se você adicionou um repositório para instalar determinado programa que não está presente pelos repositórios oficiais, então ao remover o repositório e o programa, não será possível reinstalá-lo ou mantê-lo atualizado sem ele. 😉

  5. Olá, Cleuber. Antes de mais nada, muito obrigado pelo tutorial!

    Gostaria de acrescentar uma informação que foi importante para resolver meu problema e que não encontrei no seu tutorial e que talvez seja interessante acrescentar em uma possível nova versão.

    No passo 2.5, algumas chaves apresentavam o seguinte erro:

    gpg: requisitando chave DD7FB8CC de servidor hkp – keyserver.ubuntu.com
    gpg: keyserver timed out
    gpg: Recebimento de informação do keyserver falhou: erro no servidor de chaves

    Então descobri ( aqui: https://www.vivaolinux.com.br/topico/Comandos/Erro-GPG ) que eu para as chaves que não respondiam ao primeiro comando precisavam de outro comando para serem acrescentadas. O comando é:

    sudo gpg –keyserver pgpkeys.mit.edu –recv-key (COLOQUE A CHAVE AQUI)
    sudo gpg -a –export (COLOQUE A CHAVE AQUI) | sudo apt-key add –

    Utilizando esse comando tudo deu certo. Obrigado.

  6. Sandro Santana

    Muito bom artigo meu caro, sua dicas foram muito úteis para mim, parabéns e muito obrigado!

  7. sthefany Silva

    obrigada pelas dicas, foi super útil e eficaz.

  8. Valeu, resolveu meu problema com o Brave KKKKKKKK

Leave a Reply

x

Check Also

Elementary OS 6 Odin Lançado – Confira as Novidades

Desenvolver um sistema operacional não é ...