Product SiteDocumentation Site

Capítulo 6. Manutenções e atualizações: As ferramentas APT

6.1. Preenchendo no arquivo sources.list Arquivo
6.1.1. Sintaxe
6.1.2. Repositórios para usuários da Stable
6.1.3. Repositórios para usuários Testing/Unstable Users
6.1.4. Usando mirrors ("espelhos") alternativos
6.1.5. Recursos não oficiais: mentors.debian.net
6.1.6. Proxy Cache para os pacotes Debian
6.2. Comandos aptitude, apt-get e apt
6.2.1. Inicialização
6.2.2. Instalação e remoção
6.2.3. Atualização do sistema
6.2.4. Opções de configuração
6.2.5. Gerenciar prioridades de pacote
6.2.6. Trabalhando com Distribuições Diversas
6.2.7. Rastreando Pacotes Instalados Automaticamente
6.2.8. padrões do APT
6.3. O Comando apt-cache
6.3.1. O Comando apt-cache policy
6.4. O Comando apt-file
6.5. Interfaces: aptitude, synaptic
6.5.1. aptitude
6.5.2. synaptic
6.6. Verificando Autenticidade do Pacote
6.7. Atualizando de uma Versão Estável para a Próxima
6.7.1. Procedimento Recomendado
6.7.2. Lidando com Problemas após uma Atualização
6.7.3. Fazendo uma limpeza após uma atualização
6.8. Mantendo um Sistema Atualizado
6.9. Atualizações Automáticas
6.9.1. Configurando dpkg
6.9.2. Configurando APT
6.9.3. Configurando debconf
6.9.4. Lidando com Interações Via Linha de Comando
6.9.5. A Combinação Miraculosa
6.10. Buscando por Pacotes
O que faz o Debian tão popular entre os administradores é a facilidade para instalar um programa e atualizar o sistema inteiro. Esta vantagem rara é em grande parte devida ao programa APT, que os administradores da Falcot Corp estudaram com entusiasmo.
APT é a sigla de Advanced Packaging Tool (ferramenta de pacotes avançada). O que faz dele "avançado" é sua abordagem quanto a pacotes. Ele não os avalia individualmente, mas considera-os como um todo e produz as melhores combinações de pacotes possível dependendo do que está disponível e compatível de acordo com as dependências.
O APT precisa que lhe seja dada uma “lista de fontes de pacotes (repositórios)”: o arquivo /etc/apt/sources.list listará os diferentes repositórios que publicam pacotes Debian. O APT irá então importar a lista de pacotes publicados por cada uma destas fontes. Esta operação é feita baixando arquivos Packages.xz ou uma variante tal como Packages.gz ou .bz2 (usando um método de compressão diferente) no caso de uma fonte de pacotes binários e analisando seus conteúdos. No caso de uma fonte de pacotes fontes, o APT baixa os arquivos Sources.xz ou uma variante usando um método de compressão diferente. Quando uma cópia antiga destes arquivos já estiver presente, o APT poderá atualizar ela baixando apenas as diferenças (veja a barra lateral DICA Atualização incremental).

6.1. Preenchendo no arquivo sources.list Arquivo

6.1.1. Sintaxe

Cada linha ativa no arquivo /etc/apt/sources.list representa uma fonte de pacotes (repositório) e é feita de pelo menos três partes separadas por espaços. Para uma descrição completa do formato do arquivo e as composições aceitas, veja em sources.list(5).

Exemplo 6.1. Exemplo de formato de entrada em /etc/apt/sources.list

deb url distribuição componente1 componente2 componente3 [..] componenteX
deb-src url distribuição componente1 componente2 componente3 [..] componenteX
O primeiro campo indica o tipo da origem:
deb
fonte de pacotes (repositório) binários
deb-src
fonte de pacotes (repositório) de pacotes fonte
O segundo campo dá a URL base da origem. Combinado com os nomes de arquivo listados nos arquivos Packages.xz, deve dar uma URL completa e válida. Isto pode consistir no mirror Debian ou em qualquer outro arquivamento de pacote configurado por terceiros. A URL pode começar com file:// para indicar uma origem local instalada na hierarquia de arquivos do sistema, com http:// ou https:// para indicar uma origem acessível via um servidor web, ou com ftp:// ou ftps:// para uma origem disponível num servidor FTP. A URL pode começar com cdrom: para instalações baseadas em discos CD-ROM/DVD/Blu-ray, embora isto seja menos frequente, já que métodos baseados em rede se tornaram mais comuns. Mais métodos como ssh:// ou tor+http(s):// são suportados e tanto descritos em sources.list(5) ou em suas respectivas documentações do pacote apt-transport-método.
A sintaxe do último campo depende da estrutura do repositório. Nos casos mais simples, você pode simplesmente indicar um subdiretório (com uma barra no final obrigatória) da fonte desejada. Este é muitas vezes um simples “./” que se refere à ausência de um subdiretório. Os pacotes estão então diretamente na URL especificada. Mas, no caso mais comum, os repositórios serão estruturados como um espelho Debian, com múltiplas distribuições, cada uma com múltiplos componentes. Nesses casos, o nome da distribuição escolhida é dado por seu "codinome" - veja a lista na barra lateral COMUNIDADE Bruce Perens, um líder controverso — ou pelos “suites” correspondentes (oldoldstable, oldstable, stable, testing, unstable) e em seguida, os componentes (ou seções) para ativar. Um espelho Debian típico fornece os componentes main, contrib, e non-free.
As entradas cdrom descrevem os CD/DVD-ROMs que você tem. Ao contrário de outras entradas, um CD-ROM não está sempre disponível, uma vez que tem de ser inserido na unidade e apenas um disco pode ser lido de cada vez. Por essas razões, essas fontes são geridas de uma forma ligeiramente diferente, e precisam ser adicionados com o programa apt-cdrom, geralmente executado com o parâmetro add. Este último, então, solicitará o disco a ser inserido na unidade e vai varrer o seu conteúdo à procura de arquivos de Packages. Ele usará esses arquivos para atualizar seu banco de dados de pacotes disponíveis (esta operação é geralmente feita pelo comando apt update). A partir daí, o APT pode pedir que seja inserido um disco se ele precisar de um dos pacotes no disco.

6.1.2. Repositórios para usuários da Stable

Aqui está um sources.list padrão para um sistema rodando a versão Stable do Debian:

Exemplo 6.2. arquivo /etc/apt/sources.list para usuários do Debian Estável

# Atualizações de segurança
deb http://security.debian.org/ bullseye-security main contrib non-free
deb-src http://security.debian.org/ bullseye-security main contrib non-free

## Debian mirror

# Repositório base
deb https://deb.debian.org/debian bullseye main contrib non-free
deb-src https://deb.debian.org/debian bullseye main contrib non-free

# Atualizações de estabilidade
deb https://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src https://deb.debian.org/debian bullseye-updates main contrib non-free

# Backports de estabilidade
deb https://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src https://deb.debian.org/debian bullseye-backports main contrib non-free
Este arquivo lista todas as fontes de pacotes associados com a versão do Debian Bullseye (a Stable no momento em que este texto foi escrito). No exemplo acima, optou-se por nomear "bullseye" explicitamente em vez de utilizar o correspondente pseudônimo “stable“ (stable, stable-updates, stable-backports) porque não queremos ter a distribuição básica alterada fora de nosso controle, quando a próxima versão estável sair.
A maioria dos pacotes serão provenientes do “repositório de base”, que contém todos os pacotes, mas raramente é atualizado (uma vez a cada 2 meses para um “ponto de lançamento”). Os outros repositórios são parciais (não contêm todos os pacotes) e podem receber atualizações (pacotes numa versão mais recente) que o APT pode instalar. As seções a seguir irão explicar o propósito e as regras que regem cada um desses repositórios.
Observe que quando a versão desejada de um pacote está disponível em vários repositórios, o primeiro listado no arquivo sources.list será usado. Por esta razão, as fontes não oficiais são geralmente adicionadas no final do arquivo.
Como uma observação, a maioria do que esta seção diz sobre Stable aplica-se igualmente bem a Oldstable uma vez que esta é apenas uma velha Stable que é mantida em paralelo.

6.1.2.1. Atualizações de Segurança

O Debian leva segurança muito a sério. Vulnerabilidades de software conhecidas no Debian são rastreadas no Rastreador de bugs de Segurança e usualmente são consertadas em um espaço de tempo razoável. As atualizações de segurança não são hospedadas na rede habitual de espelhos do Debian, mas no security.debian.org, um pequeno conjunto de máquinas mantidas pelos Administradores de Sistema Debian). Estes arquivos contém as atualizações de segurança elaboradas pela Equipe de Segurança do Debian e/ou mantenedores de pacotes para a distribuição Stable e Oldstable.
O servidor também pode hospedar atualizações de segurança para a Testing mas isso não acontece com muita frequência já que essas atualizações tendem a chegar a essa suíte através do fluxo regular de atualizações provenientes do Unstable.
Para assuntos sérios, o time de segurança lança um Debian Security Advisory (DSA) e anuncia ele junto com a atualização de segurança na lista de discussão (archive).

6.1.2.2. Atualizações Estáveis

Atualizações estáveis não são sensíveis de segurança, mas são consideradas importantes o suficiente para ser empurradas para os usuários antes do próximo ponto de lançamento estável.
Este repositório normalmente contêm correções para bugs críticos e sérios que não puderam ser corrigidos antes do lançamento ou que tenham sido introduzidos pelas atualizações subsequentes. Dependendo da urgência, ele também pode conter atualizações para os pacotes que têm de evoluir ao longo do tempo, como as regras de detecção de spam do spamassassin, o banco de dados de vírus do clamav, as regras de horário de verão de todos os fusos horários do (tzdata), a versão com ESR do Firefox (firefox-esr) ou chaveiros criptográficos como debian-archive-keyring.
Na prática, este repositório é um subconjunto do repositório proposed-updates, cuidadosamente selecionado pelos Stable Release Managers. Todas as atualizações são anunciadas na lista de email (archive) e vão ser incluídas no próximo ponto de lançamento da Stable de qualquer forma.

6.1.2.3. Atualizações Propostas

Depois de publicada, a distribuição Stable somente é atualizada em aproximadamente de dois em dois meses. O repositório proposed-updates (em português, atualizações-propostas) é onde as atualizações esperadas são preparadas (sob a supervisão dos Gerentes de versão Estável).
As atualizações de segurança e estáveis documentadas nas seções anteriores são sempre incluídas neste repositório, mas não há mais também, porque os mantenedores de pacotes também têm a oportunidade de corrigir erros importantes que não merecem uma libertação imediata.
Qualquer um pode usar este repositório para testar estas atualizações antes de sua publicação oficial. O trecho abaixo usa o pseudônimo bullseye-proposed-updates que é mais explícito e mais consistente, uma vez que o buster-proposed-updates também existe (para as atualizações da Oldstable (Antiga Estável)):
deb https://deb.debian.org/debian bullseye-proposed-updates main contrib non-free

6.1.2.4. Backports estáveis

O servidor do repositório stable-backports oferece “pacotes backports”. O termo refere-se a um pacote de algum software recente, que foi recompilado para uma distribuição mais velha, geralmente para Stable.
Quando a distribuição vai ficando desatualizada, vários projetos de software lançam novas versões que não são integradas na Stable atual (que é modificada apenas para resolver os problemas mais críticos, como problemas de segurança). Como as distribuições Testing e Unstable podem ser mais arriscadas, mantenedores de pacotes às vezes oferecem voluntariamente recompilações de software recente para a Stable, que tem a vantagem para usuários e administradores de sistemas de limitar instabilidade potencial a um pequeno número de pacotes escolhidos. A página https://backports.debian.org fornece mais informações.
Backports de stable-backports são criados apenas a partir de pacotes disponíveis no Testing. Isso garante que todos os backports instalados serão atualizáveis para a versão estável correspondente uma vez que a próxima versão estável do Debian está disponível.
Mesmo que este repositório forneça versões mais recentes dos pacotes, o APT não os instala a menos que você dê instruções explícitas para fazê-lo (ou a menos que você já o fez com uma versão anterior do backport em questão):
$ sudo apt-get install pacote/bullseye-backports
$ sudo apt-get install -t bullseye-backports pacote

6.1.3. Repositórios para usuários Testing/Unstable Users

Aqui está um sources.list padrão para um sistema executando uma versão Testing ou Unstable do Debian:

Exemplo 6.3. arquivo /etc/apt/sources.list para usuários do Debian Testing/Unstable

# Instável (unstable)
deb https://deb.debian.org/debian unstable main contrib non-free
deb-src https://deb.debian.org/debian unstable main contrib non-free

# Teste (testing)
deb https://deb.debian.org/debian testing main contrib non-free
deb-src https://deb.debian.org/debian testing main contrib non-free

# Atualizações de segurança da teste (Testing security updates)
deb http://security.debian.org/ testing-security main contrib non-free
deb-src http://security.debian.org/ testing-security main contrib non-free

# Estável (stable)
deb https://deb.debian.org/debian stable main contrib non-free
deb-src https://deb.debian.org/debian stable main contrib non-free

# Atualizações de segurança da estável (stable security updates)
deb http://security.debian.org/ stable-security main contrib non-free
deb-src http://security.debian.org/ stable/updates-security main contrib non-free
Com este arquivo sources.list o APT instalará pacotes da Unstable. Se isso não for desejado, use a configuração APT::Default-Release (veja Seção 6.2.3, “Atualização do sistema”) para instruir o APT a escolher pacotes a partir de uma outro conjunto (provavelmente Testing neste caso).
Há boas razões para incluir todos os repositórios, mesmo que um só deva ser suficiente. Os usuários da Testing irão apreciar a possibilidade de fazer um cherry-pick num pacote fixo da Unstable quando a versão na Testing é afetada por um erro chato. Por outro lado, usuários da Unstable afetados por regressões inesperadas têm a possibilidade de fazer o downgrade dos pacotes para sua versão (supostamente de trabalho) Testing.
A inclusão da Stable é mais discutível, mas muitas vezes dá acesso a alguns pacotes, que foram retirados das versões de desenvolvimento. Ele também garante que você obtenha as últimas atualizações para os pacotes que não tenham sido modificados desde o último lançamento estável.

6.1.3.1. O repositório experimental

O arquivamento dos pacotes da Experimental está presente em todos os espelhos Debian, e contém pacotes que não estão na versão Unstable ainda devido sua qualidade inferior — eles são, geralmente, versões em desenvolvimento ou pré-versões (alfa, beta, candidatos a lançamento…). Um pacote pode também ser enviado para lá devido a mudanças que possam gerar problemas. O mantenedor então tenta desvendar esses problemas com a ajuda de usuários avançados que possam lidar com questões importantes. Depois deste primeiro estágio, o pacote é movido para a Unstable, onde ele alcança uma audiência muito maior e onde ele será testado mais minuciosamente.
A Experimental é geralmente usada por usuário que não se importam em quebrar o seu sistema e ter que consertá-lo. Esta distribuição dá a possibilidade de importar um pacote que o usuário queira testar ou usar quando surge uma necessidade. Esta é exatamente a abordagem do Debian, já que adicionar a Experimental ao arquivo sources.list do APT não leva ao uso sistemático destes pacotes. A linha a ser adicionada é:
deb https://deb.debian.org/debian experimental main contrib non-free

6.1.4. Usando mirrors ("espelhos") alternativos

Os exemplos de sources.list neste capítulo apontam para repositórios de pacotes hospedados em deb.debian.org. Estas URLs vão redirecionar você para servidores que estão perto de você e que são gerenciados por Content Delivery Networks (CDN) cuja principal função é armazenar múltiplas cópias de arquivos pelo planeta, e entregá-los o mais rápido possível aos usuários. as empresas de CDN com as quais o Debian trabalha são parceiros Debian que estão oferecendo seus serviços gratuitamente ao Debian. Se por um lado nenhum destes servidores estão sob controle direto do Debian, por outro, o fato do arquivamento como um todo estar assinado com assinaturas GPG faz com que isto não seja um problema.
Usuários exigentes que não estejam satisfeitos com o desempenho do deb.debian.org podem tentar achar um espelho melhor na lista oficial de espelhos:
Mas quando você não sabe qual espelho é o melhor para você, esta lista não é de muita ajuda. Felizmente para você, o mantém entradas de DNS na forma ftp.código-de-país.debian.org (e.g. ftp.us.debian.org para os Estados Unidos, ftp.fr.debian.org para a França, etc.) que cobrem muitos países e que apontam para um (ou mais) dos melhores espelhos disponíveis naquele país.
Como uma alternativa para o deb.debian.org, existia o httpredir.debian.org. Este serviço identificava um espelho perto de você (de uma lista de espelhos, usando principalmente GeoIP) e redirecionava requisições APT para aquele espelho. Este serviço foi descontinuado devido a questões de confiabilidade e agora o httpredir.debian.org fornece o mesmo serviço baseado em CDN que o deb.debian.org.

6.1.5. Recursos não oficiais: mentors.debian.net

Existem inúmeras fontes não-oficiais de pacotes Debian feitas por usuários avançados que recompilaram algum software — Ubuntu fez isso popular com o seu serviço "Personal Package Archive" (PPA) — por programadores que disponibilizam sua criação para todos, e mesmo por desenvolvedores Debian que oferecem pré-versões de seu pacote online.
O sítio mentors.debian.net é interessante (embora ele apenas forneça pacotes fontes), já que reúne pacotes criados por candidatos ao status de desenvolvedor Debian oficial ou por voluntários que desejam criar pacotes Debian sem passar pelo processo de integração. Estes pacotes são disponibilizados sem qualquer garantia de qualidade; certifique-se de verificar a origem e a integridade e fazer testes antes de usar em produção.
Instalar um pacote significa dar permissões de root para seu criador, por que o criador decide o que fica nos scripts de inicialização que rodam com a identidade do root. Pacotes Debian oficiais são criados por voluntários que cooperam e revisam e que marcam seus pacotes de forma que a origem e integridade deles possam ser verificada.
Em geral, fique alerta com pacotes cuja origem você não conhece e que não são hospedados em um dos servidores Debian oficiais: avalie o grau em que você confia no criador, e verifique a integridade do pacote.

6.1.6. Proxy Cache para os pacotes Debian

Quando toda uma rede de máquinas está configurada para usar o mesmo servidor remoto para baixar os mesmos pacotes atualizados, qualquer administrador sabe que seria benéfico ter uma atuação proxy intermediária como um cache local da rede (veja o quadro VOCABULÁRIO Cache).
Você pode configurar o APT para usar um proxy "padrão" (veja Seção 6.2.4, “Opções de configuração” para o lado APT, e Seção 11.6, “Proxy HTTP/FTP” para o lado proxy), mas o ecossistema Debian oferece melhores opções para resolver este problema. O software dedicado apresentado nesta seção são mais espertos do que um simples proxy cache, porque eles podem contar com a estrutura específica de repositórios APT (por exemplo, eles sabem quando arquivos individuais são obsoletos ou não, e, assim, ajustar o tempo durante o qual eles são mantidos).
apt-cacher e apt-cacher-ng funcionam como servidores de cache de proxy habituais. sources.list da APT é deixado inalterado, mas APT está configurado para usá-los como proxy para solicitações de saída.
approx, por outro lado, funciona como um servidor HTTP que "espelha" qualquer número de repositórios remotos em suas URLs de nível superior. O mapeamento entre os diretórios de nível superior e as URLs remotas dos repositórios é armazenado em /etc/approx/approx.conf:
# <name>   <repository-base-url>
debian     https://deb.debian.org/debian
security   http://security.debian.org/debian-security
approx é executado por padrão na porta 9999 via um soquete systemd e requer que os usuários ajustem o seu arquivo sources.list para apontar para o servidor aprox:
# Exemplo do sources.list apontando para um servidor local approx
deb http://localhost:9999/security bullseye-security main contrib non-free
deb http://localhost:9999/debian bullseye main contrib non-free