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 Estáveis
6.1.3. Repositórios para usuários Testing/Unstable Users
6.1.4. Recursos não oficiais: mentors.debian.net
6.1.5. Proxy Cache para os pacotes Debian
6.2. Comandos aptitude, apt-get e apt
6.2.1. Initializaçã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.3. O Comando apt-cache
6.4. Interfaces: aptitude, synaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. Verificando Autenticidade do Pacote
6.6. Atualizando de uma Versão Estável para a Próxima
6.6.1. Procedimento Recomendado
6.6.2. Lidando com Problemas após uma Atualização
6.7. Mantendo um Sistema Atualizado
6.8. Atualizações Automáticas
6.8.1. Configurando dpkg
6.8.2. Configurando APT
6.8.3. Configurando debconf
6.8.4. Lidando com Interações Via Linha de Comando
6.8.5. A Combinação Miraculosa
6.9. 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 Package 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”: o arquivo /etc/apt/sources.list listará os diferentes repositórios (ou "fontes") 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 o arquivo Packages.xz ou uma variante usando arquivos (no caso de uma fonte de pacotes binários) com um método de compressão diferente (tal como Packages.gz ou .bz2) e Sources.xz ou uma variante (no caso de uma fonte de pacotes código-fonte) e analizando seus conteúdos. 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 do arquivo /etc/apt/sources.list contém a descrição da origem, feita de 3 partes separadas por espaços.
O primeiro campo indica o tipo da origem:
  • deb” para pacotes binários,
  • deb-src” para pacotes de código fonte.
O segundo campo dá a URL base da origem (combinado com os nomes de arquivo presentes nos arquivos Packages.gz, deve dar uma URL completa e válida): isto pode consistir no mirror Debian ou em qualquer outro archive 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:// para indicar uma origem acessível via um servidor web, ou com ftp:// para uma origem disponível num servidor FTP. A URL pode começar com cdrom: para instalações baseadas em CD-ROM/DVD-ROM/Blu-ray, embora isto seja menos frequente, já que métodos baseados em rede estão cada vez mas comuns.
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 obrigatória) da fonte desejada (esta é muitas vezes uma “./” que se refere à ausência de um subdirectó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 (por seu "codinome" - veja a lista na barra lateral COMUNIDADE Bruce Perens, um líder controverso — ou pelos “suites” correspondentes — stable, testing, unstable), em seguida, os componentes (ou seções) para ativar (escolhidos entre main, contrib, e non-free em um espelho típico Debian).
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 inseriod um disco se ele precisar de um dos pacotes no disco.

6.1.2. Repositórios para usuários Estáveis

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

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

# Atualizações de Segurança
# Security updates
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

## Espelho Debian

# Base de dados do repositório
# Base repository
deb http://ftp.debian.org/debian jessie main contrib non-free
deb-src http://ftp.debian.org/debian jessie main contrib non-free

# Atualizações estáveis
# Stable updates
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb-src http://ftp.debian.org/debian jessie-updates main contrib non-free

# backports estáveis
# Stable backports
deb http://ftp.debian.org/debian jessie-backports main contrib non-free
deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free
Este arquivo lista todas as fontes de pacotes associados com a versão do Debian Jessie (a Stable no momento em que este texto foi escrito). Optou-se por nomear "jessie" 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

As atualizações de segurança não são hospedadas na rede habitual de espelhos do Debian, mas em security.debian.org (em 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.
O servidor também pode hospedar atualizações de segurança para Testing mas isso não acontece com muita frequência uma vez que as atualizações tendem chegar a Testing através do fluxo regular de atualizações provenientes do Unstable.

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 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 ou as regras de horário de verão de todos os fusos horários do (tzdata).
Na prática, este repositório é um subconjunto do repositório proposed-updates, cuidadosamente selecionado pelos Gerentes de Lançamento Estável .

6.1.2.3. Atualizações Propostas

Depois de publicada, a distribuição Stable é atualizada em aproximadamente de dois em dois meses. O repositório 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 jessie-proposed-updates que é mais explícito e mais consistente, uma vez que o wheezy-proposed-updates também existe (para as atualizações da Antiga Estável "Oldstable"):
deb http://ftp.debian.org/debian jessie-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 começa a envelhecer, 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 segunrança). Como as distribuições Testing e Unstable podem ser mais arriscadas, mantenedores de pacotes oferencem recompilações de software recente para a Stable, que tem a vantagem de limitar instabilidade potencial a um pequeno número de pacotes escolhidos.
O repositório stable-backports está disponível nos espelhos Debian habituais. Mas backports para Squeeze ainda estão hospedados em um servidor dedicado (backports.debian.org), e requer a seguinte entrada sources.list:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
Backports de stable-backports são sempre criados 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 determinado):
$ sudo apt-get install pacote/jessie-backports
$ sudo apt-get install -t jessie-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.2. arquivo /etc/apt/sources.list para usuários do Debian Testing/Unstable

# Unstable - Instável
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

# Testing - Teste
deb http://ftp.debian.org/debian testing main contrib non-free
deb-src http://ftp.debian.org/debian testing main contrib non-free

# Stable - Estável
deb http://ftp.debian.org/debian stable main contrib non-free
deb-src http://ftp.debian.org/debian stable main contrib non-free

# Security updates - Atualizações de segurança
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
Com este arquivo sources.list APT instalará pacotes de 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 outra distribuição (provavelmente Testing neste caso).
Há boas razões para incluir todos os repositórios, mesmo que um só deva ser suficiente. Testing os usuários irão apreciar a possibilidade de cherry-pick um pacote fixo do Unstable quando a versão em Testing é afetado por um erro chato. Em contrapartida, usuários Unstable afetado 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 do Stable é mais discutível, mas que 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 http://ftp.debian.org/debian experimental main contrib non-free

6.1.4. 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 (o Ubuntu fez isso popular com o seu serviço "Personal Package Archive"), 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.5. 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   http://ftp.debian.org/debian
security http://security.debian.org
approx é executado por padrão na porta 9999 via inetd (veja Seção 9.6, “O super servidor inetd) 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://apt.falcot.com:9999/security jessie/updates main contrib non-free
deb http://apt.falcot.com:9999/debian jessie main contrib non-free