Pequeno Guia do APT
O que significa APT?
APT é a abreviatura de 'Advanced Packaging Tool', isto é, Ferramenta Avançada de Empacotamento. Trata-se de uma coleção de programas e scripts que ajudam o administrador do sistema (no seu caso, o root) na instalação e gerenciamento de arquivos .deb. Ele também ajuda o próprio sistema a saber o que está instalado.
A sources list
O "APT" precisa de um arquivo de configuração que contenha os locais onde se encontram os pacotes instaláveis e atualizáveis. Este arquivo normalmente é chamado de sources.list.
As fontes para a sources.list do aptosid estão na pasta:
/etc/apt/sources.list.d/
Dentro dela existem dois arquivos:
/etc/apt/sources.list.d/debian.list e
/etc/apt/sources.list.d/aptosid.list
A vantagem é que a troca de espelhos é automatizada, tornando o processo mais fácil. Além disso, substituir entradas fica mais seguro.
Você pode adicionar seus próprios arquivos /etc/apt/sources.list.d/*.list sem problemas.
Todas as ISOs do aptosid usam a seguinte 'sources.list' por padrão:
#aptosid # Free University Berlin/ spline (Student Project LInux NEtwork), Germany deb ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main #deb-src ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main
Fontes complementares, com pacotes não-livres, podem ser encontradas em nossa sempre atualizada aptosid.list e debian.list.:
#Debian # Unstable deb http://ftp.us.debian.org/debian/ unstable main contrib non-free #deb-src http://ftp.us.debian.org/debian/ unstable main contrib non-free # Testing #deb http://ftp.us.debian.org/debian/ testing main contrib non-free #deb-src http://ftp.us.debian.org/debian/ testing main contrib non-free # Experimental #deb http://ftp.us.debian.org/debian/ experimental main contrib non-free #deb-src http://ftp.us.debian.org/debian/ experimental main contrib non-free
OBSERVAÇÃO: Neste exemplo, 'ftp.us' significa que os repositórios usados são dos Estados Unidos. Você pode editar o arquivo, como root, e usar os espelhos brasileiros: simplesmente mude o país, isto é, 'ftp:us' para 'ftp.br'. Com isso, preserva-se a largura de banda e aumenta-se a velocidade.
Listagem dos Servidores Debian e status atual dos espelhos ('mirrors').
Para receber informações sobre atualizações dos pacotes, o APT usa um banco de dados. Este banco contém não só o pacote em si, mas também outros pacotes necessários para que ele funcione (as chamadas dependências). O programa apt-get usa o banco de dados para instalar os pacotes que você pediu e também todas as dependências necessárias, o que garante que tudo irá funcionar no final do processo. A atualização do banco é feita pelo comando 'apt-get update':
# apt-get update (que retorna o seguinte:) Get:1 http://aptosid.com sid Release.gpg [189B] Get:2 http://aptosid.com sid Release.gpg [189B] Get:3 http://aptosid.com sid Release.gpg [189B] Get:4 http://ftp.de.debian.org unstable Release.gpg [189B] Get:5 http://aptosid.com sid Release [34.1kB] Get:6 http://ftp.us.debian.org unstable Release [79.6kB]
Como instalar um novo pacote
Atualização ou instalação de pacotes sem parar X pode causar problemas. Qualquer método de instalação de pacotes no X tem esse problema.
Enquanto qualquer pacote que deseja instalar não atualizar pacotes adicionais, então a instalação pode ser feita sem para X. No entanto, se instalação do pacote necessitar de actualizar outros que já estão instalados então você precisa de ser cuidadoso e, a menos que você esteja certo que os pacotes a actualizar não estão a ser usados, você deve parar de X antes de instalar o pacote.
Se você estiver em dúvida o melhor é deixar X antes de efetuar a instalação e seguir as instrções dadas para o caso do dist-upgrade Como atualizar todo o sistema - dist-upgrade - os passos .
Presumindo-se que o banco de dados do APT está atualizado e que o nome do pacote é conhecido, então o seguinte comando instalará um pacote chamado 'qemu' e todas suas dependências: (daqui a pouco mostraremos como procurar e encontrar pacotes)
# apt-get install qemu Reading package lists... Done --> (Lendo lista de pacotes...Pronto) Building dependency tree... Done --> (Construindo árvore de dependências...Pronto) The following extra packages will be installed: --> (Os seguintes pacotes extras serão instalados:) bochsbios openhackware proll vgabios Recommended packages: --> (Pacotes recomendados:) debootstrap vde The following NEW packages will be installed: --> (Os seguintes pacotes NOVOS serão instalados:) bochsbios openhackware proll qemu vgabios 0 upgraded, 5 newly installed, 0 to remove and 20 not upgraded. --> (0 atualizados, 5 novos instalados, 0 a remover e 20 não atualizados.) Need to get 4152kB of archives. --> (Será necessário baixar 4152kB em arquivos.) After unpacking 11.9MB of additional disk space will be used. --> (Após o desempacotamento, 11.98MB de espaço em disco serão usados.) Do you want to continue [Y/n]? n --> (Deseja continuar [S/n]?)
Como apagar um pacote
Da mesma forma, não é nenhuma surpresa que o comando a seguir desinstale um pacote (mas não remove suas dependências):
apt-get remove gaim
apt-get remove gaim Reading package lists... Done Building dependency tree... Done The following packages will be REMOVED: --> (Os seguintes pacotes serão REMOVIDOS:) gaim gaim-irchelper 0 upgraded, 0 newly installed, 2 to remove and 310 not upgraded. Need to get 0B of archives. After unpacking 4743kB disk space will be freed. --> (Após o desempacotamento, 4743kb serão liberados no HD) Do you want to continue [Y/n]? (Reading database ... 174409 files and directories currently installed.) --> (Lendo o banco de dados... 174409 arquivos e diretórios instalados atualmente) Removing gaim-irchelper ... --> (Removendo gaim-irchelper ...) Removing gaim ... --> (Removendo gaim ...)
No caso acima, os arquivos de configuração do pacote 'gaim' não foram apagados do sistema. Eles podem ser úteis se você reinstalar o pacote, pois todas as configurações existentes serão assumidas.
Se você quiser que esses arquivos de configuração sejam apagados também, use o seguinte comando:
apt-get --purge remove gaim
Reading package lists... Done Building dependency tree... Done The following packages will be REMOVED: gaim* 0 upgraded, 0 newly installed, 1 to remove and 309 not upgraded. Need to get 0B of archives. After unpacking 4678kB disk space will be freed. Do you want to continue [Y/n]? Y (Reading database ... 174405 files and directories currently installed.) Removing gaim ... Purging configuration files for gaim ... --> (Purificando arquivos de configuração do gaim ...)
Note o * após o nome do pacote nas mensagens de saída do apt. Este asterisco significa que os arquivos de configuração também serão removidos.
Como rebaixar e/ou congelar um pacote
Às vezes, pode ser necessário reverter um pacote à sua versão anterior (downgrade) ou colocá-lo em espera (hold), devido a um bug sério na versão mais recente que você acabou de instalar.
Colocar um pacote no modo de espera:
echo pacote hold|dpkg --set-selections
Tirar um pacote do modo de espera:
echo pacote install|dpkg --set-selections
Listar os pacotes em modo de espera:
dpkg --get-selections | grep hold
Rebaixar um pacote:
Debian não suporta o "downgrade". Pode ser possível em alguns casos simples, mas pode falhar espetacularmente para outros pacotes. Por favor consulte Emergency downgrading.
Mesmo não sendo suportado, vamos dar aqui um exemplo simples utilizando para isso o pacote kmahjongg:
- Adicione fontes para "testing" à sua lista de debian /etc/apt/sources.list.d/debian.list , por exemplo:
deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
-
apt-get update
-
apt-get install kmahjongg/testing
- Coloque o pacote "on hold" utilizando:
echo kmahjongg hold|dpkg --set-selections
- desative a linha <#>com as fontes para o "testing" no ficheiro /etc/apt/sources.list.d/debian.list e actualize as fontes novamente:
-
apt-get update
Quando quiser instalar a última versão do pacote, faça assim:
echo kmahjongg install|dpkg --set-selections apt-get update apt-get install kmahjongg
apt-mark
apt-mark é uma ferramenta utilizada para identificar os pacotes que foram installados automáticamente e os que foram instalados manualmente. Permite também colocar de uma maneira fácil um pacote no modo de espera impedindo assim que estes pacotes sejam removidos automaticamente. Leitura aconselhada:
man apt-mark
Como atualizar um sistema já instalado - dist-upgrade - uma visão geral
Uma atualização de todo o sistema é feita através de um dist-upgrade. Sempre verifique os Current Warnings ('Alertas Atuais') no site do aptosid, e veja se há avisos contra atualizações de algum pacote. Se houver necessidade de congelar um pacote, veja a seção Rebaixando e/ou congelando um pacote.
Não é recomendável comandar um 'upgrade' apenas para o 'debian sid'.
Frequência de um 'dist-upgrade'
Comande um 'dist-upgrade' pelo menos uma vez por semana, ou a cada duas semanas. Em último caso, uma vez por mês. Um 'dist-upgrade' feito apenas a cada dois ou três meses está no limite da segurança. Em caso de pacotes que não obedeçam aos padrões ou em caso de pacotes que você mesmo tenha compilado, seja mais cuidadoso ao fazer atualizações, porque eles podem quebrar seu sistema devido a incompatibilidades.
Após atualização do banco de dados, pode-se descobrir quais pacotes possuem versões mais novas: (antes de mais nada, é preciso instalar o pacote 'apt-show-versions')
apt-show-versions -u libpam-runtime/unstable upgradeable from 0.79-1 to 0.79-3 passwd/unstable upgradeable from 1:4.0.12-5 to 1:4.0.12-6 teclasat/unstable upgradeable from 0.7m02-1 to 0.7n01-1 libpam-modules/unstable upgradeable from 0.79-1 to 0.79-3.........
A atualização de um único pacote, por exemplo 'gcc-4.0', e todas suas dependências, pode ser feita com:
apt-get install gcc-4.0 Reading package lists... Done Building dependency tree... Done gcc-4.0 is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and xxx not upgraded
Apenas baixar
Uma ótima e pouco conhecida opção é aquela que permite que se conheça quais pacotes farão parte de um 'dist-upgrade'. Para isso, use a variável -d:
apt-get update && apt-get dist-upgrade -d
Essa variável faz com que os pacotes sejam baixados (porém não instalados), a partir do X. Instale-os mais tarde, no init 3, com o 'dist-upgrade'. Isso também lhe dá a oportunidade de verificar se existem alertas contra qualquer pacote, pois você pode continuar ou abortar:
apt-get dist-upgrade -d
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
elinks-data
The following packages have been kept back:
git-core git-gui git-svn gitk icedove libmpich1.0ldbl
The following packages will be upgraded:
alsa-base bsdutils ceni configure-ndiswrapper debhelper
discover1-data elinks file fuse-utils gnucash.........
35 upgraded, 1 newly installed, 0 to remove and 6 not upgraded.
Need to get 23.4MB of archives.
After this operation, 594kB of additional disk space will be used.
Do you want to continue [Y/n]?Y
Respondendo 'Y', os pacotes serão baixados para seu computador, sem tocar no sistema instalado.
Quando o 'dist-upgrade -d' terminar, você precisa completar o processo, imediatamente ou mais tarde; para isso, siga as instruções abaixo:
dist-upgrade - os passos
## Log out of KDE.
## Go to Textmode by doing Ctrl+Alt+F1
## logon as root, and then type:
service kdm stop ##If using another window manager replace kdm, for example with gdm
apt-get update
apt-get dist-upgrade
apt-get clean
service kdm start ##If using another window manager replace kdm, for example with gdm
Se você não for para o init 3,as coisas vão ficar difíceis!!! Você foi avisado!
Razões para NÃO usar nada além do apt-get para um dist-upgrade
Gerenciadores de pacotes como adept, aptitude, synaptic e kpackage nem sempre dão conta da quantidade enorme de mudanças que acontecem no sid ( mudanças nas dependências, nos nomes, nos scripts de manutenção...).
Não é culpa dos desenvolvedores daquelas aplicações. Essas ferramentas são fabulosas, excelentes para o ramo 'estável' do Debian, só que não estão aptas para lidar com as necessidades muito especiais do Debian sid.
Use qualquer um deles para procurar pacotes, mas fique com o apt-get na hora de realmente instalar/remover/atualizar o sistema.
Gerenciadores tais como adept, aptitude, synaptic e kpackage são, no mínimo, não-deterministas (para uma seleção de pacotes complexa). Misture isso com um alvo sempre móvel, como é o caso do sid, e (pior ainda) com repositórios não oficiais de qualidade questionável (não usamos nem recomendamos, mas eles são uma realidade nos desktops) e você estará clamando por desastre.
Uma outra desvantagem de todos os tipos de GUI é a necessidade de X e para o dist-upgrade é recomendado efectuá-lo na consola.
Já o apt-get faz estritamente o que é pedido a ele. Se houver algum problema, fica fácil localizar o erro para depuração/correção; se o apt-get quiser remover metade de seu sistema (devido a transições nas bibliotecas), é só chamar o administrador (quer dizer, você mesmo) para dar, no mínimo, uma olhada séria (e consultar os Avisos na página do aptosid, não se esqueça).
É por isso que o Debian usa exclusivamente o apt-get, não uma das outras ferramentas de gerenciamento de pacotes.
Procurar pacotes com o apt-cache
Outro comando muito útil do sistema APT é o apt-cache; ele procura no banco de dados do APT e mostra informações sobre pacotes; p. ex., uma lista com todos os pacotes que contenham ou referenciem "aptosid" e "manual" pode ser obtida assim:
$ apt-cache search aptosid manual ....... aptosid-manual-common - the official aptosid manual - common files aptosid-manual-es - the official Spanish aptosid manual aptosid-manual-de - the official German aptosid manual aptosid-manual-el - the official Greek aptosid manual aptosid-manual - the official aptosid manual - all languages aptosid-manual-pt-br - the official Brazilian Portuguese aptosid manual aptosid-manual-en - the official English aptosid manual aptosid-manual-reader - aptosid manual reader
Se quiser mais informações sobre um pacote em particular, você pode usar:
$ apt-cache show aptosid-manual-en Package: aptosid-manual-en Priority: optional Section: doc Installed-Size: 1088 Maintainer: Kel Modderman <kel@otaku42.de> Architecture: all Source: aptosid-manual Version: 01.12.2007.06.03-1 Depends: aptosid-manual-common Filename: pool/main/s/aptosid-manual/aptosid-manual-en_01.12.2007.06.03-1_all.deb Size: 391222 MD5sum: 60f2175c3c5709745a4b4256ccc3c49d SHA1: e275a0b27628b6aa210a4ced48d3646b438e78b8 SHA256: 2792580c7a091521301064180a1d0d8901f0a4af407b90432b9f8d8b6b3603ca Description: the official en aptosid manual This manual is divided into common sections, for example, .......
Todas as versões instaláveis do pacote (elas dependem de sua sources.list) podem ser listadas se você digitar:
$ apt-cache policy aptosid-manual-pt-br aptosid-manual-pt-br: Installed: (none) Candidate: 01.34.2007.08.29-2 Version table: *** 01.34.2007.08.29-2 0 500 http://aptosid.com sid/main Packages 100 /var/lib/dpkg/status
Uma descrição completa do Sistema APT pode ser encontrada em APT-HOWTO
A descrição completa do Sistema APT pode ser encontrada em APT-HOWTO