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. APT Patterns
6.3. O Comando apt-cache
6.3.1. The apt-cache policy Command
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 is the abbreviation for Advanced Packaging Tool. What makes this program “advanced” is its approach to packages. It doesn't simply evaluate them individually, but it considers them as a whole and produces the best possible combination of packages depending on what is available and compatible according to dependencies.
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
The second field gives the base URL of the source. Combined with the filenames listed in the Packages.xz files, it must give a full and valid URL. This can consist in a Debian mirror or in any other package archive set up by a third party. The URL can start with file:// to indicate a local source installed in the system's file hierarchy, with http:// or https:// to indicate a source accessible from a web server, or with ftp:// or ftps:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are eventually more common. More methods like ssh:// or tor+http(s):// are supported and are either described in sources.list(5) or their respective apt-transport-method package documentation.
The syntax of the last field depends on the structure of the repository. In the simplest case, you can simply indicate a subdirectory (with a required trailing slash) of the desired source. This is often a simple “./” which refers to the absence of a subdirectory. The packages are then directly at the specified URL. But in the most common case, the repositories will be structured like a Debian mirror, with multiple distributions, each having multiple components. In those cases, name the chosen distribution by its “codename” — see the list in sidebar COMUNIDADE Bruce Perens, um líder controverso — or by the corresponding “suite” (oldoldstable, oldstable, stable, testing, unstable) and then the components to enable. A typical Debian mirror provides the components main, contrib, and 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

# Security updates
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

# Base repository
deb https://deb.debian.org/debian bullseye main contrib non-free
deb-src https://deb.debian.org/debian bullseye main contrib non-free

# Stable updates
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

# Stable backports
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
This file lists all sources of packages associated with the Bullseye version of Debian (the current Stable suite as of this writing). In the example above, we opted to name “bullseye” explicitly instead of using the corresponding “stable“ aliases (stable, stable-updates, stable-backports) because we don't want to have the underlying distribution changed outside of our control when the next stable release comes out.
Most packages will come from the “base repository”, which contains all packages but is seldom updated (about once every 2 months for a “point release”). The other repositories are partial (they do not contain all packages) and can host updates (packages with newer version) that APT might install. The following sections will explain the purpose and the rules governing each of those repositories.
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.
The server can also host security updates for Testing but this doesn't happen very often since those updates tend to reach that suite via the regular flow of updates coming from 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.
Anyone can use this repository to test those updates before their official publication. The extract below uses the bullseye-proposed-updates alias which is both more explicit and more consistent since buster-proposed-updates also exists (for the Oldstable updates):
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 package/bullseye-backports
$ sudo apt-get install -t bullseye-backports package

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

# Unstable
deb https://deb.debian.org/debian unstable main contrib non-free
deb-src https://deb.debian.org/debian unstable main contrib non-free

# Testing
deb https://deb.debian.org/debian testing main contrib non-free
deb-src https://deb.debian.org/debian testing main contrib non-free

# 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

# Stable
deb https://deb.debian.org/debian stable main contrib non-free
deb-src https://deb.debian.org/debian stable main contrib non-free

# Stable security updates
deb http://security.debian.org/ stable-security main contrib non-free
deb-src http://security.debian.org/ stable-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).
There are good reasons to include all those repositories, even though a single one should be enough. Testing users will appreciate the possibility to cherry-pick a fixed package from Unstable when the version in Testing is affected by an annoying bug. On the other hand, Unstable users bitten by unexpected regressions have the possibility to downgrade packages to their (supposedly working) Testing version.
A inclusão do 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 a última versão 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

The sources.list examples in this chapter refer to package repositories hosted on deb.debian.org. Those URLs will redirect you to servers which are close to you and which are managed by Content Delivery Networks (CDN) whose main role is to store multiple copies of the files across the world, and to deliver them as fast as possible to users. The CDN companies that Debian is working with are Debian partners who are offering their services freely to Debian. While none of those servers are under direct control of Debian, the fact that the whole archive is sealed by GPG signatures makes it a non-issue.
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:
# Sample sources.list pointing to a local approx server
deb http://localhost:9999/security bullseye-security main contrib non-free
deb http://localhost:9999/debian   bullseye main contrib non-free