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.
- 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:
sudo apt updatebaixa o catálogo. O apt visita cada repositório configurado e baixa a lista de pacotes e versões. Nada é instalado.sudo apt installbusca no catálogo. O apt procura o pacote na lista já baixada, escolhe a melhor versão e baixa o arquivo.debdo 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ída | Significado |
|---|---|
Atingido | O apt consultou o repositório e a lista não mudou (em inglês, Hit). |
Obter | Havia 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:
| Campo | Significado | No exemplo |
|---|---|---|
Types | deb = programas prontos; deb-src = código-fonte | deb |
URIs | Endereço do servidor | http://archive.ubuntu.com/ubuntu/ |
Suites | Versão do Ubuntu e linhas de atualização | resolute resolute-updates… |
Components | Quais partes do repositório usar | main restricted universe multiverse |
Signed-By | Chave que prova que os pacotes são autênticos | ubuntu-archive-keyring.gpg |
Enabled | Opcional. no desliga o bloco sem apagar | (ausente = ligado) |
Architectures | Opcional. Limita a arquiteturas, como amd64 | (ausente = todas) |
/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"
| Componente | Licença | Quem mantém | Exemplos |
|---|---|---|---|
main | Software livre | Canonical, com suporte oficial | bash, openssh, nginx |
universe | Software livre | Comunidade | htop, tree, vlc |
restricted | Proprietário, com suporte | Canonical | Drivers da NVIDIA |
multiverse | Proprietário ou com restrições legais | Comunidade | Fontes da Microsoft, alguns codecs |
Suites: as "linhas de atualização"
| Suite | Conteúdo |
|---|---|
resolute | Os pacotes como saíram no lançamento do 26.04 |
resolute-updates | Correções de bugs depois do lançamento |
resolute-security | Correções de segurança |
resolute-backports | Versõ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
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.
| Linha | O que dizer ao ler |
|---|---|
Instalado: (nenhum) | O pacote existe no repositório, mas não está instalado. |
Candidato maior que Instalado | Há atualização disponível. |
Prioridade 500 | Repositório normal. |
Prioridade 100 | Só 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
.sourcese 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:
- Criar a pasta das chaves (se ainda não existir).
$ sudo install -d -m 0755 /etc/apt/keyrings
- 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
- 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
- Atualizar o catálogo e instalar.
$ sudo apt update $ sudo apt install exemplo
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
| Forma | Melhor 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 site | Alguns .deb (Chrome, VS Code) criam o repositório sozinhos, para receber atualizações. |
| Programas e Atualizações | Você prefere a interface gráfica. |
Riscos de cada repositório extra
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
$ 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:
- Rode
sudo apt updatee tente de novo (principalmente se acabou de adicionar um repositório). - Confira o nome com
apt search parte-do-nome. - Se o pacote está em
universe, confira se esse componente está noubuntu.sources.
$ 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.
$ 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
| Comando | O que faz |
|---|---|
sudo apt update | Baixa o catálogo de todos os repositórios |
apt policy pacote | Versões disponíveis, origem e prioridade |
lsb_release -cs | Codinome do seu Ubuntu |
sudo add-apt-repository ppa:dono/nome | Adiciona um PPA |
sudo add-apt-repository --remove ppa:dono/nome | Remove um PPA |
sudo ppa-purge ppa:dono/nome | Remove o PPA e volta os pacotes à versão oficial |
sudo add-apt-repository universe | Liga 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:
2. Adicionar um PPA
Complete para adicionar o PPA 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:
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 updatebaixa 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 pacotemostra 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.