Guia do Linux/Iniciante+Intermediário/Sistema de gerenciamento de pacotes/apt
apt
[editar | editar código-fonte]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
[editar | editar código-fonte]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
[editar | editar código-fonte]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
[editar | editar código-fonte]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 frequentemente 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
[editar | editar código-fonte]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
[editar | editar código-fonte]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 frequência se estiver usando a distribuição stable e sempre se estiver usando a unstable (os pacotes são modificados com muita frequência). Sempre utilize o apt-get update antes de atualizar toda a distribuição.
Utilizando CDs oficiais/não-oficiais/terceiros com o apt
[editar | editar código-fonte]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 [ch-disc.html#s-disc-id Identificação de discos e partições em sistemas Linux, Seção 5.12] 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
[editar | editar código-fonte]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
[editar | editar código-fonte]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
[editar | editar código-fonte]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 pode 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
[editar | editar código-fonte]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
[editar | editar código-fonte]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
[editar | editar código-fonte]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 auto-apt
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 perl
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
[editar | editar código-fonte]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
[editar | editar código-fonte]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
[editar | editar código-fonte]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.