Ubuntu Repositórios e PPAs

Quando você roda sudo apt install htop, o programa vem de um repositório: um servidor na internet que guarda milhares de pacotes prontos. O apt só encontra o que está nos repositórios configurados no seu sistema. Nesta aula você vai ler essa configuração e aprender a adicionar outros repositórios sem colocar o sistema em risco.

Você vai aprender
  • O que são repositórios, componentes (main, universe…) e suites (resolute-updates…).
  • Como ler o arquivo ubuntu.sources, no formato deb822.
  • Como descobrir de qual repositório vem um pacote com apt policy.
  • Como adicionar e remover um PPA e um repositório de empresa.
  • Os riscos de cada repositório extra e como se proteger.

Antes do comando: como o apt sabe o que existe

Pense no repositório como uma loja e no apt como o atendente. O processo tem duas etapas:

  1. sudo apt update baixa o catálogo. O apt visita cada repositório configurado e baixa a lista de pacotes e versões. Nada é instalado.
  2. sudo apt install busca no catálogo. O apt procura o pacote na lista já baixada, escolhe a melhor versão e baixa o arquivo .deb do repositório.

Por isso, depois de adicionar um repositório novo, você sempre precisa rodar sudo apt update: senão o catálogo dele ainda não está no seu computador.

$ sudo apt update
[sudo: authenticate] Senha:
Atingido:1 http://archive.ubuntu.com/ubuntu resolute InRelease          « nada mudou desde a última vez
Obter:2 http://security.ubuntu.com/ubuntu resolute-security InRelease [126 kB]   « baixou novidades
Atingido:3 http://archive.ubuntu.com/ubuntu resolute-updates InRelease
Obtidos 126 kB em 1s (98,4 kB/s)
Todos os pacotes estão atualizados.
Palavra na saídaSignificado
AtingidoO apt consultou o repositório e a lista não mudou (em inglês, Hit).
ObterHavia lista nova e ela foi baixada (em inglês, Get).
Obtidos … em …Total baixado e o tempo gasto.

Onde fica a configuração

Desde o Ubuntu 24.04, cada repositório fica num arquivo .sources dentro da pasta /etc/apt/sources.list.d/. Os repositórios oficiais estão em ubuntu.sources:

$ ls /etc/apt/sources.list.d/
ubuntu.sources
$ cat /etc/apt/sources.list.d/ubuntu.sources
Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: resolute resolute-updates resolute-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/                 « o servidor de segurança
Suites: resolute-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Esse formato se chama deb822. Cada bloco (separado por linha em branco) descreve um repositório, com um campo por linha:

CampoSignificadoNo exemplo
Typesdeb = programas prontos; deb-src = código-fontedeb
URIsEndereço do servidorhttp://archive.ubuntu.com/ubuntu/
SuitesVersão do Ubuntu e linhas de atualizaçãoresolute resolute-updates…
ComponentsQuais partes do repositório usarmain restricted universe multiverse
Signed-ByChave que prova que os pacotes são autênticosubuntu-archive-keyring.gpg
EnabledOpcional. no desliga o bloco sem apagar(ausente = ligado)
ArchitecturesOpcional. Limita a arquiteturas, como amd64(ausente = todas)
E o /etc/apt/sources.list?

Até o Ubuntu 22.04, os repositórios ficavam nesse arquivo, uma linha por repositório: deb http://archive.ubuntu.com/ubuntu jammy main restricted. No 26.04 ele só tem um comentário avisando que a configuração mudou de lugar. Muitos tutoriais ainda usam o formato antigo; o apt aceita os dois.

Componentes: as "seções da loja"

ComponenteLicençaQuem mantémExemplos
mainSoftware livreCanonical, com suporte oficialbash, openssh, nginx
universeSoftware livreComunidadehtop, tree, vlc
restrictedProprietário, com suporteCanonicalDrivers da NVIDIA
multiverseProprietário ou com restrições legaisComunidadeFontes da Microsoft, alguns codecs

Suites: as "linhas de atualização"

SuiteConteúdo
resoluteOs pacotes como saíram no lançamento do 26.04
resolute-updatesCorreções de bugs depois do lançamento
resolute-securityCorreções de segurança
resolute-backportsVersões mais novas trazidas de lançamentos futuros (sem suporte oficial)

resolute é o codinome do Ubuntu 26.04 (Resolute Raccoon). Cada versão tem o seu: noble é o 24.04 e jammy é o 22.04. Para ver o do seu sistema:

$ lsb_release -cs
resolute
Pelo modo gráfico

No desktop, abra Programas e Atualizações (software-properties-gtk) para ligar e desligar componentes e repositórios com caixas de seleção.


De onde vem este pacote? apt policy

Quando há mais de um repositório, o mesmo programa pode existir em várias versões. O apt policy mostra todas e qual o apt vai escolher.

apt
O gerenciador de pacotes.
policy
"Política": mostra versões, origens e prioridades.
nano
O pacote a investigar.
$ apt policy nano

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

nano:
  Instalado: 8.7.1-1ubuntu0.1                « a versão que você tem
  Candidato: 8.7.1-1ubuntu0.1                « a versão que o apt instalaria agora
  Tabela de versão:
 *** 8.7.1-1ubuntu0.1 500                    « *** marca a instalada; 500 é a prioridade
        500 http://archive.ubuntu.com/ubuntu resolute-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu resolute-security/main amd64 Packages
        100 /var/lib/dpkg/status
     8.7.1-1 500                             « a versão original do lançamento
        500 http://archive.ubuntu.com/ubuntu resolute/main amd64 Packages

O aviso em inglês ("WARNING…") só lembra que o formato do apt pode mudar; em scripts, use apt-cache policy, que mostra o mesmo sem o aviso.

LinhaO que dizer ao ler
Instalado: (nenhum)O pacote existe no repositório, mas não está instalado.
Candidato maior que InstaladoHá atualização disponível.
Prioridade 500Repositório normal.
Prioridade 100Só o que já está instalado (/var/lib/dpkg/status) ou backports.

PPAs: repositórios pessoais

Um PPA (de Personal Package Archive, "arquivo pessoal de pacotes") é um repositório criado por um desenvolvedor ou equipe no site Launchpad. Serve para oferecer versões mais novas do que as do Ubuntu oficial.

Adicionar um PPA

sudo
Mexe na configuração do sistema.
add-apt-repository
Ferramenta que cria o arquivo .sources e baixa a chave do PPA.
ppa:git-core/ppa
O PPA: ppa: + dono + nome.

Exemplo: o PPA oficial do Git, que traz a versão estável mais recente.

$ sudo add-apt-repository ppa:git-core/ppa
[sudo: authenticate] Senha:
Repository: 'Types: deb
URIs: https://ppa.launchpadcontent.net/git-core/ppa/ubuntu/
Suites: resolute
Components: main
'
Description:
The most current stable version of Git for Ubuntu.
…
Press [ENTER] to continue or Ctrl-c to cancel.        « confira antes de aceitar
$ sudo apt install git

Nas versões atuais, o add-apt-repository já roda o apt update sozinho depois de adicionar. O texto acima é ilustrativo: cada PPA tem a sua descrição.

Remover um PPA

$ sudo add-apt-repository --remove ppa:git-core/ppa

Remover o PPA não volta os programas para a versão oficial: o Git do PPA continua instalado. Para voltar à versão do Ubuntu, use o ppa-purge:

$ sudo apt install ppa-purge
$ sudo ppa-purge ppa:git-core/ppa

Repositórios de empresas

Empresas como Microsoft, Google e Docker mantêm repositórios próprios. Veja como fica o do VS Code, quando instalado pelo site da Microsoft:

Types: deb
URIs: https://packages.microsoft.com/repos/code
Suites: stable
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/microsoft.gpg

O campo Signed-By aponta para a chave da Microsoft. Assim, essa chave só vale para esse repositório. Mesmo que alguém roubasse a chave da Microsoft, ela não conseguiria se passar pelos repositórios oficiais do Ubuntu.

Passo a passo genérico

Siga sempre as instruções do site oficial do programa. A estrutura costuma ser esta:

  1. Criar a pasta das chaves (se ainda não existir).
    $ sudo install -d -m 0755 /etc/apt/keyrings
  2. Baixar a chave do fornecedor e convertê-la para o formato do apt.
    curl -fsSL URL
    Baixa a chave em silêncio, seguindo redirecionamentos, e falha se der erro.
    |
    Passa o que foi baixado para o próximo comando.
    sudo gpg --dearmor
    Converte a chave de texto para binário.
    -o /etc/apt/keyrings/exemplo.gpg
    Onde salvar.
    $ curl -fsSL https://exemplo.com/chave.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/exemplo.gpg
  3. Criar o arquivo do repositório, apontando para a chave:
    Types: deb
    URIs: https://repo.exemplo.com/apt
    Suites: stable
    Components: main
    Signed-By: /etc/apt/keyrings/exemplo.gpg
  4. Atualizar o catálogo e instalar.
    $ sudo apt update
    $ sudo apt install exemplo
E o apt-key?

Tutoriais antigos mandam usar apt-key add. Esse comando foi removido das versões recentes do Ubuntu, porque a chave valia para todos os repositórios. Use o método com /etc/apt/keyrings e Signed-By.

Desligar um repositório sem apagar

Acrescente Enabled: no no bloco e rode sudo apt update. É útil para testar se um repositório está causando problema.

Formas de adicionar um repositório

FormaMelhor quando…
sudo add-apt-repository ppa:dono/nomeÉ um PPA do Launchpad.
Chave em /etc/apt/keyrings + arquivo .sourcesÉ o repositório de uma empresa (Docker, Microsoft…).
Instalar o .deb do siteAlguns .deb (Chrome, VS Code) criam o repositório sozinhos, para receber atualizações.
Programas e AtualizaçõesVocê prefere a interface gráfica.

Riscos de cada repositório extra

Atenção: quem controla o repositório controla o seu computador

Pacotes são instalados como administrador. Um repositório malicioso, ou invadido, pode instalar qualquer coisa numa atualização futura, sem você perceber.

Antes de adicionar um PPA ou repositório de terceiros:

  • Confira se é recomendado no site oficial do programa.
  • Veja se o pacote não existe como snap oficial ou no Flathub verificado, que rodam isolados.
  • Prefira poucos repositórios extras. Cada um é uma porta a mais.
  • Remova os que você não usa mais.

Quando não funciona

"Não é possível encontrar o pacote"
$ sudo apt install programa-novo
Erro: Não é possível encontrar o pacote programa-novo

O que aconteceu: nenhum repositório configurado tem esse pacote, ou o catálogo está desatualizado.

Como resolver:

  1. Rode sudo apt update e tente de novo (principalmente se acabou de adicionar um repositório).
  2. Confira o nome com apt search parte-do-nome.
  3. Se o pacote está em universe, confira se esse componente está no ubuntu.sources.
Erro de assinatura (NO_PUBKEY)
$ sudo apt update
…
Erro: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY 1234ABCD5678EF90

O que aconteceu: o apt não tem a chave daquele repositório, ou o Signed-By aponta para um arquivo errado. O texto exato da mensagem pode variar; o que importa é o NO_PUBKEY.

Como resolver: baixe a chave de novo seguindo o site oficial (passo 2 acima) e confira o caminho em Signed-By. Se não usa mais o repositório, remova o arquivo .sources dele.

O PPA não tem versão para o seu Ubuntu
$ sudo apt update
…
Erro: O repositório 'https://ppa.launchpadcontent.net/dono/ppa/ubuntu resolute Release' não tem um arquivo Release.

O que aconteceu: o PPA ainda não publicou pacotes para o 26.04 (resolute). É comum logo depois de um lançamento.

Como resolver: remova o PPA com sudo add-apt-repository --remove ppa:dono/ppa e procure outra forma de instalar. Não troque resolute por noble à mão: pacotes de outra versão podem quebrar dependências.


Referência

ComandoO que faz
sudo apt updateBaixa o catálogo de todos os repositórios
apt policy pacoteVersões disponíveis, origem e prioridade
lsb_release -csCodinome do seu Ubuntu
sudo add-apt-repository ppa:dono/nomeAdiciona um PPA
sudo add-apt-repository --remove ppa:dono/nomeRemove um PPA
sudo ppa-purge ppa:dono/nomeRemove o PPA e volta os pacotes à versão oficial
sudo add-apt-repository universeLiga um componente oficial
ls /etc/apt/sources.list.d/Lista os arquivos de repositório

Exercícios

1. Atualizar o catálogo

Você acabou de adicionar um repositório. Complete o comando que baixa a lista de pacotes dele:

sudo apt

2. Adicionar um PPA

Complete para adicionar o PPA ppa:git-core/ppa:

sudo ppa:git-core/ppa

3. Qual versão será instalada?

Complete para ver as versões disponíveis do pacote git e de qual repositório cada uma vem:

apt git

4. Em qual componente ficam os drivers proprietários da NVIDIA?

5. Para que serve o campo Signed-By?


Resumo

  • Repositórios são servidores de pacotes; sudo apt update baixa o catálogo deles.
  • Os oficiais estão em /etc/apt/sources.list.d/ubuntu.sources, no formato deb822.
  • Componentes: main, universe, restricted, multiverse. Suites: lançamento, -updates, -security, -backports.
  • apt policy pacote mostra a versão instalada, a candidata e de onde vêm.
  • PPA: add-apt-repository; remover: --remove; voltar à versão oficial: ppa-purge.
  • Repositórios de empresas: chave em /etc/apt/keyrings + Signed-By. Cada repositório extra é um risco.