apt

O apt é sistema de gerenciamento de pacotes de programas que possui resolução automática de dependências entre pacotes, método fácil de instalação de pacotes, facilidade de operação, permite atualizar facilmente sua distribuição, etc. Ele funciona através de linha de comando sendo bastante fácil de usar. Mesmo assim, existem interfaces gráficas para o apt como o synaptic (modo gráfico) e o aptitude (modo texto) que permitem poderosas manipulações de pacotes sugeridos, etc.

O apt pode utilizar tanto com arquivos locais como remotos na instalação ou atualização, desta maneira é possível atualizar toda a sua distribuição Debian via ftp ou http com apenas 2 simples comandos!

É recomendável o uso do método apt no programa dselect pois ele permite a ordem correta de instalação de pacotes e checagem e resolução de dependências, etc. Devido a sua facilidade de operação, o apt é o método preferido para os usuários manipularem pacotes da Debian.

O apt é exclusivo da distribuição Debian e distribuições baseadas nela e tem por objetivo tornar a manipulação de pacotes poderosa por qualquer pessoa e tem dezenas de opções que podem ser usadas em sua execução ou configuradas no arquivo /etc/apt/apt.conf. Explicarei aqui como fazer as ações básicas com o apt, portanto se desejar maiores detalhes sobre suas opções, veja a página de manual apt-get.

O arquivo /etc/apt/sources.list

Este arquivo contém os locais onde o apt encontrará os pacotes, a distribuição que será verificada (stable, testing, unstable, Woody, Sarge) e a seção que será copiada (main, non-free, contrib, non-US).

Woody(Debian 3.0) e Sarge(Debian 3.1) são os nomes das versões enquanto stable e unstable são links para as versões estável e testing respectivamente. Se desejar usar sempre uma distribuição estável (como a Woody), modifique o arquivo sources.list e coloque Woody como distribuição. Caso você desejar estar sempre atualizado mas é uma pessoa cuidadosa e deseja ter sempre a última distribuição estável da Debian, coloque stable como versão. Assim que a nova versão for lançada, os links que apontam de stable para Woody serão alterados apontando para Sarge e você terá seu sistema atualizado.

Abaixo um exemplo simples de arquivo /etc/apt/sources.list com explicação das seções:

deb http://www.debian.org/debian stable main contrib non-free
deb http://nonus.debian.org/debian-non-US stable non-US

Você pode interpretar cada parte da seguinte maneira:

  • deb - Identifica um pacote da Debian. A palavra deb-src identifica o código fonte.

  • http://www.debian.org/debian - Método de acesso aos arquivos da Debian, site e diretório principal. O caminho pode ser http://, ftp://, file:/.

  • stable - Local onde serão procurados arquivos para atualização. Você pode tanto usar o nome de sua distribuição (Woody, Sarge) ou sua classificação (stable, testing ou unstable. Note que unstable é recomendada somente para desenvolvedores, máquinas de testes e se você tem conhecimentos para corrigir problemas. Nunca utilize unstable em ambientes de produção ou servidores críticos, use a stable.

  • main contrib non-us - Seções que serão verificadas no site remoto.

Note que tudo especificado após o nome da distribuição será interpretado como sendo as seções dos arquivos (main, non-free, contrib, non-US). As linhas são processadas na ordem que estão no arquivo, então é recomendável colocar as linhas que fazem referência a pacotes locais primeiro e mirrors mais perto de você para ter um melhor aproveitamento de banda. O caminho percorrido pelo apt para chegar aos arquivos será o seguinte:

http://www.debian.org/debian/dists/stable/main/binary-i386
http://www.debian.org/debian/dists/stable/non-free/binary-i386
http://www.debian.org/debian/dists/stable/contrib/binary-i386

Você notou que o diretório dists foi adicionado entre http://www.debian.org/debian e stable, enquanto as seções main, non-free e contrib são processadas separadamente e finalizando com o caminho binary-[arquitetura], onde [arquitetura] pode ser i386, alpha, sparc, powerpc, arm, etc. dependendo do seu sistema. Entendendo isto, você poderá manipular o arquivo sources.list facilmente.

OBS: Caso tenha mais de uma linha em seu arquivo sources.list de onde um pacote pode ser instalado, ele será baixado da primeira encontrada no arquivo. Ë recomendável colocar primeiro repositórios locais ou mais perto de você, como recomendado nesta seção.

Endereços de servidores e mirrors nacionais da Debian

Segue abaixo uma relação de servidores que podem ser colocados em seu arquivo sources.list:

Endereço                               Diretório Principal
--------                               --------- ---------
ftp://ftp.debian.org.br                /debian
ftp://ftp.br.debian.org                /debian
ftp://ftp.debian.org                   /debian
ftp://download.sourceforge.net         /debian
ftp://ftp.quimica.ufpr.br              /debian
ftp://download.unesp.br                /linux/debian

Um modelo de arquivo sources.list

Você pode copiar o modelo do sources.list abaixo para ser usado em sua distribuição Stable ou personaliza-lo modificando a distribuição utilizada e servidores:

# Arquivos principais da stable
deb ftp://ftp.debian.org.br/debian stable main non-free contrib

# Non-US da Stable
deb ftp://ftp.debian.org.br/debian-non-US stable/non-US main non-free contrib

# Atualizações propostas para Stable main e non-US
deb ftp://ftp.debian.org.br/debian dists/proposed-updates/
deb ftp://ftp.debian.org.br/debian-non-US dists/proposed-updates/

# Atualizações de segurança da Stable
deb ftp://nonus.debian.org/debian-security stable/updates main

# Ximian é um conjunto de pacotes atualizados freqüentemente e compatíveis 
# com a distribuição Debian. Entre estes programas estão o Gimp 1.2 e outros
# mais atuais e compatíveis com a Debian. Para usa-los inclua a seguinte linha no 
# seu sources.list
# deb ftp://spidermonkey.ximian.com/pub/red-carpet/binary/debian-22-i386/ ./

# Kde 1 e 2
# deb ftp://kde.tdyc.com/pub/kde/debian woody main crypto optional qt1apps

O arquivo /etc/apt/apt.conf

Você pode especificar opções neste arquivo que modificarão o comportamento do programa apt durante a manipulação de pacotes (ao invés de especificar na linha de comando). Se estiver satisfeito com o funcionamento do programa apt, não é necessário modifica-lo. Para detalhes sobre o formato do arquivo, veja a página de manual do apt.conf. Na página de manual do apt-get são feitas referências a parâmetros que podem ser especificados neste arquivo ao invés da linha de comando.

Copiando a lista de pacotes disponíveis

O apt utiliza uma lista de pacotes para verificar se os pacotes existentes no sistema precisam ou não ser atualizados. A lista mais nova de pacotes é copiada através do comando apt-get update.

Este comando pode ser usado com alguma freqüência se estiver usando a distribuição stable e sempre se estiver usando a unstable (os pacotes são modificados com muita freqüência). Sempre utilize o apt-get update antes de atualizar toda a distribuição.

Utilizando CDs oficiais/não-oficiais/terceiros com o apt

Para usar CDs da Debian ou de programas de terceiros, use o seguinte comando com cada um dos CDs que possui:

apt-cdrom add

Este comando adicionará automaticamente uma linha para cada CD no arquivo /etc/apt/sources.list e atualizará a lista de pacotes em /var/state/apt/lists. Por padrão, a unidade acessada através de /cdrom é usada. Use a opção -d /dev/scd? para especificar um outra unidade de CDs (veja “Identificação de discos e partições em sistemas Linux” para detalhes sobre essa identificação).

Durante a instalação de um novo programa, o apt pede que o CD correspondente seja inserido na unidade e pressionado <Enter> para continuar. O método acesso do apt através de CDs é inteligente o bastante para instalar todos os pacotes necessários daquele CD, instalar os pacotes do próximo CD e iniciar a configuração após instalar todos os pacotes necessários.

Observação: - CDs de terceiros ou contendo programas adicionais também podem ser usados com o comando "apt-cdrom add".

Instalando novos pacotes

Use o comando apt-get install [pacotes] para instalar novos pacotes em sua distribuição. Podem ser instalados mais de um pacotes ao mesmo tempo separando os nomes por espaços. Somente é preciso especificar o nome do pacote (sem a versão e revisão).

Se preciso, o apt instalará automaticamente as dependências necessárias para o funcionamento correto do pacote. Quando pacotes além do solicitado pelo usuário são requeridos para a instalação, o apt mostrará o espaço total que será usado no disco e perguntará ao usuário se ele deseja continuar. Após a instalação, o pacote será automaticamente configurado pelo dpkg para ser executado corretamente em seu sistema.

Removendo pacotes instalado

Use o comando apt-get remove [pacotes] para remover completamente um pacote do sistema. Podem ser removidos mais de um pacote ao mesmo tempo separando os nomes dos pacotes com espaços. O apt-get remove remove completamente o pacote mas mantém os arquivos de configuração, exceto se for adicionada a opção --purge.

É preciso especificar somente o nome do pacote (sem a versão e revisão).

Atualizando sua distribuição

O apt tem uma grande característica: Atualizar toda a sua distribuição de uma forma inteligente e segura. O apt lê a listagem de pacotes disponíveis no servidor remoto, verifica quais estão instalados e suas versões, caso a versão do pacote seja mais nova que a já instalada em seu sistema, o pacote será imediatamente atualizado.

A cópia dos arquivos pelo apt pode ser feita via FTP, HTTP ou através de uma cópia local dos arquivos no disco rígido (um mirror local). Em nenhuma circunstância os pacotes existentes em seu sistema serão removidos ou sua configuração apagada durante um upgrade na distribuição.

Os arquivos de configuração em /etc que foram modificados são identificados e podem ser mantidos ou substituídos por versões existentes nos pacotes que estão sendo instalado, esta escolha é feita por você. Se estiver atualizando a Debian Potato (2.2) para Woody (3.0) (ou versão superior), execute os seguintes comandos antes de iniciar a atualização:

export LANG=C
export LC_ALL=C
export LC_MESSAGES=C

para retornar as variáveis de localização ao valor padrão (inglês). Isto é necessário por causa de modificações no sistema de locales, e o excesso de mensagens de erro do perl causaram alguns problemas em meus testes.

Após isto, a atualização da distribuição Debian pode ser feita através de dois simples comandos:

apt-get update          #Para atualizar a lista de pacotes (obrigatório)
apt-get -f dist-upgrade #Para atualizar a distribuição

A opção -f faz com que o apt verifique e corrija automaticamente problemas de dependências entre pacotes. Recomendo executa o comando apt-get -f --dry-run dist-upgrade|less para ver o que vai acontecer sem atualizar a distribuição, se tudo ocorrer bem, retire o --dry-run e vá em frente.

A distribuição usada na atualização pode ser:

  • Para a mesma versão que utiliza - Para quem deseja manter os pacotes sempre atualizados entre revisões, copiar pacotes que contém correções para falhas de segurança (veja a página web em http://www.debian.org/ para acompanhar o boletim de segurança).

  • Para uma distribuição stable - Mesmo que o acima, mas quando uma nova distribuição for lançada, o link simbólico de stable será apontado para próxima distribuição, atualizando instantaneamente seu sistema.

  • Para a distribuição testing - Atualiza para a futura distribuição Debian que será lançada, é como a unstable, mas seus pacotes passam por um período de testes de 2 semanas na unstable antes de serem copiados para esta.

  • unstable - Versão em desenvolvimento, recomendada somente para desenvolvedores ou usuários que conhecem a fundo o sistema GNU/Linux e saibam resolver eventuais problemas que apareçam.

    A unstable é uma distribuição em constante desenvolvimento e podem haver pacotes problemáticos ou com falhas de segurança. Após o período de desenvolvimento, a distribuição unstable se tornará frozen.

  • frozen - Versão congelada, nenhum pacote novo é aceito e somente são feitas correções de falhas. Após todas as falhas estarem corrigidas, a distribuição frozen se tornará stable

A distribuição que será usada na atualização pode ser especificada no arquivo /etc/apt/sources.list (veja a seção correspondente acima). Caso o método de atualização usado seja via HTTP ou FTP, será necessário usar o comando apt-get clean para remover os pacotes copiados para seu sistema (para detalhes veja a seção seguinte).

Removendo pacotes baixados pelo apt

Use o comando apt-get clean para apagar qualquer arquivo baixado durante uma atualização ou instalação de arquivos com o apt. Os arquivos baixados residem em /var/cache/apt/archives (download completo) e /var/cache/apt/archives/partial (arquivos sendo baixados - parciais).

Este local de armazenamento é especialmente usado com o método http e ftp para armazenamento de arquivos durante o download para instalação (todos os arquivos são primeiro copiados para serem instalados e configurados).

O apt-get clean é automaticamente executado caso seja usado o método de acesso apt do dselect.

Procurando por pacotes através da descrição

O utilitário apt-cache pode ser usado para esta função. Ele também possui outras utilidades interessante para a procura e manipulação da lista de pacotes.

Por exemplo, o comando apt-cache search clock mostrará todos os pacotes que possuem a palavra clock na descrição do pacote.

Procurando um pacote que contém determinado arquivo

Suponha que algum programa esteja lhe pedindo o arquivo perlcc e você não tem a mínima idéia de que pacote instalar no seu sistema. O utilitário auto-apt pode resolver esta situação. Primeiro instale o pacote e execute o comando auto-apt update para que ele copie o arquivo Contents-i386.gz que será usado na busca desses dados.

Agora, basta executar o comando:

 auto-apt search perlcc

para que ele retorne o resultado:

usr/bin/perlcc   interpreters/perl

O pacote que contém este arquivo é o e se encontra na seção interpreters dos arquivos da Debian. Para uma pesquisa que mostra mais resultados (como auto-apt search a2ps), é interessante usar o grep para filtrar a saída:

auto-apt search a2ps|grep bin/

usr/bin/psmandup        text/a2ps
usr/bin/pdiff   text/a2ps
usr/bin/psset   text/a2ps
usr/bin/composeglyphs   text/a2ps
usr/bin/a2psj   text/a2ps-perl-ja
usr/bin/a2ps    text/a2ps
usr/bin/fixps   text/a2ps
usr/bin/ogonkify        text/a2ps
usr/bin/fixnt   text/a2ps
usr/bin/card    text/a2ps
usr/bin/texi2dvi4a2ps   text/a2ps

Serão mostrados somente os binários, diretórios de documentação, manpages, etc. não serão mostradas.

Modos eficazes de compilação do código fonte para a Debian

O Debian como qualquer distribuição de Linux, possui o diretório /usr/local que segundo a FHS é o local apropriado para colocação de programas que não fazem parte da distribuição, que seria no caso o de fontes compilados manualmente. Um dos grandes trabalhos de quem pega o código fonte para compilação é a instalação de bibliotecas de desenvolvimento para a compilação ocorrer com sucesso.

O auto-apt facilita magicamente o processo de compilação da seguinte forma: durante o passo ./configure no momento que é pedida uma bibliotecas, dependência, etc. o auto-apt para o processo, busca por pacotes no repositório da Debian, pergunta qual pacote será instalado (caso tenha mais de uma opção), instala e retorna o ./configure do ponto onde havia parado.

Para fazer isso, execute o comando:

auto-apt run ./configure

E ele se encarregará do resto :-)

Verificando pacotes corrompidos

Use o comando apt-get check para verificar arquivos corrompidos. A correção é feita automaticamente. A lista de pacotes também é atualizada quando utiliza este comando.

Corrigindo problemas de dependências e outros erros

Use o comando apt-get -f install (sem o nome do pacote) para que o apt-get verifique e corrija problemas com dependências de pacotes e outros problemas conhecidos.