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.

Instalação do Eros-pre2

No Eros-pre2 a 'sources.list' vem vazia, pois a abordagem é diferente: em seu lugar, existe um diretório (ou pasta, se preferir) chamado:
/etc/apt/sources.list.d/

Dentro dele existem dois arquivos:
/etc/apt/sources.list.d/debian.list e
/etc/apt/sources.list.d/sidux.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.

Instalação do Eros-pre1, Gaia, Tartaros e Chaos

A 'sources.list' pode ser encontrada em /etc/apt/sources.list

Todas as ISOs do sidux usam a seguinte 'sources.list' por padrão:

# Free University Berlin/ spline (Student Project LInux NEtwork), Germany
deb ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free
#deb-src ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free

Fontes complementares, com pacotes não-livres, podem ser encontradas em nossa sempre atualizada sidux.list e debian.list. Em 28/02/2008, 08:00h UTC, ela estava assim:

# See sources.list(5) for more information, especially
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
# The /etc/apt/sources.list.d/ directory provides a way to add sources.list
# entries in separate files that end with sources.list file.

# 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

# Free University Berlin/ spline (Student Project LInux NEtwork), Germany
deb ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free
#deb-src ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.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.

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
	(which returns)
Get:1 http://sidux.com sid Release.gpg [189B]
Get:2 http://sidux.com sid Release.gpg [189B]
Get:3 http://sidux.com sid Release.gpg [189B]
Get:4 http://ftp.de.debian.org unstable Release.gpg [189B]
Get:5 http://sidux.com sid Release [34.1kB]
Get:6 http://ftp.us.debian.org unstable Release [79.6kB]

Instalando um novo pacote

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 [Y/n]?)

Apagando um pacote

Da mesma forma, não é nada surpreendente que o comando abaixo desinstale o pacote 'gaim'. Mas atenção: o comando não remove as dependências. Para essas, há o utilitário 'deb-orphan':

# apt-get remove gaim
apt-get remove gaim
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  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.
Do you want to continue [Y/n]?
(Reading database ... 174409 files and directories currently installed.)
Removing gaim-irchelper ...
Removing 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 remove --purge 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 ...

Aqui, os arquivos no diretório /etc/gaim foram apagados, juntamente com todos os arquivos de configuração. No entanto, não serão apagados eventuais arquivos criados pela aplicação APÓS a instalação.

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
fonts-ttf-west-european/unstable upgradeable from 1.3-9 to 1.3-1-1
fonts-ttf-decoratives/unstable upgradeable from 1.3-1 to 1.3-1-1
sysv-rc/unstable upgradeable from 2.86.ds1-3 to 2.86.ds1-4
libpam0g/unstable upgradeable from 0.79-1 to 0.79-3
unionfs-utils/unstable upgradeable from 1.0.14+cvs2005092318w-M1 to 1.0.14+cvs2005092908w-M1libpam-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
fonts-ttf-west-european/unstable upgradeable from 1.3-9 to 1.3-1-1
fonts-ttf-decoratives/unstable upgradeable from 1.3-1 to 1.3-1-1
sysv-rc/unstable upgradeable from 2.86.ds1-3 to 2.86.ds1-4
libpam0g/unstable upgradeable from 0.79-1 to 0.79-3
unionfs-utils/unstable upgradeable from 1.0.14+cvs2005092318w-M1 to 1.0.14+cvs2005092908w-M1

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

Rebaixando e/ou congelando 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 package hold|dpkg --set-selections

Tirar um pacote do modo de espera:

echo package install|dpkg --set-selections

Listar os pacotes em modo de espera:

dpkg --get-selections | grep hold

Rebaixar um pacote:

Os passos a seguir usam o pacote kmahjongg como exemplo:

  1. ative/descomente os repositórios 'testing' na /etc/apt/sources.list 
    (apague a #) de forma que fique assim:
    deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
  2. apt-get update
  3. apt-get install -t testing kmahjongg
  4. congele o pacote recém-instalado com:
    echo kmahjongg hold|dpkg --set-selections
  5. comente os repositórios 'testing' na /etc/apt/sources.list, isto é, volte com a cerquilha (#) 
  6. 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

Atualizando um sistema já instalado - dist-upgrade

Uma atualização de todo o sistema é feita através de um dist-upgrade. Sempre verifique Current Warnings ('Alertas Atuais') no site do sidux, 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'.

Freqüê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 de pacotes que você tenha compilado, seja mais cuidadoso ao fazer atualizações, porque eles podem quebrar seu sistema devido a incompatibilidades.

Apenas baixando

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 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
  gnucash-common initscripts isdnutils-base libaprutil1
  libcapi20-3 libdvdread3 libfuse2 libmagic1 libvlc0
  linux-sound-base locales mount mozilla-plugin-vlc
  python-glade2 python-gtk2 siduxcc siduxcc-common strace
  sysv-rc sysvinit sysvinit-utils tzdata util-linux vlc
  vlc-nox
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:

NUNCA NUNCA faça atualizações dos pacotes (upgrades) nem atualizações do sistema (dist-upgrades) dentro do X.
Sempre cheque os Alertas na página principal do sidux. Esses avisos, atualizados diariamente, estão lá por um motivo: a própria natureza do ramo 'instável' do Debian.
Saia do KDE:
pressione Ctrl+Alt+F1      [para ir para o terminal de modo texto ]
logue-se como usuário root e digite init 3
apt-get update
apt-get dist-upgrade
rode get-sidux-binary-gfx   [para reinstalar os drivers da placa de vídeo, se tiver havido atualização do Xorg e/ou do kernel]
do contrário, digite
init 5 && exit 
NUNCA FAÇA ATUALIZAÇÕES (DIST-UPGRADE E/OU UPGRADE) com Adept, Synaptic ou Aptitude.

NOTA: somente faça atualizações (usando ou não o smxi) em init 3... senão, as coisas vão ficar difíceis para você..falta de avisar é que não foi!!!!

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. Outro ponto é que todos esses gerenciadores com interfaces gráficas necessitam rodar em init 5 e/ou no X e um 'dist-upgrade' (ou mesmo 'upgrade') no init 5 e/ou X, acabará por danificar seu sistema a ponto de não mais poder ser reparado, mais cedo ou mais tarde.

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 sidux, 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.

Procurando 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 "sidux" e "manual" pode ser obtida assim:

$ apt-cache search sidux manual
sidux-manual-de - the official de sidux manual
sidux-manual-ro - the official ro sidux manual
sidux-manual-hr - the official hr sidux manual
sidux-manual-common - the official sidux manual - common files
sidux-manual-en - the official en sidux manual
sidux-manual-ru - the official ru sidux manual
sidux-manual-dk - the official dk sidux manual
sidux-manual - the official sidux manual - all languages
sidux-manual-nl - the official nl sidux manual
sidux-manual-es - the official es sidux manual

Se quiser mais informações sobre um pacote em particular, você pode usar:

$ apt-cache show sidux-manual-en
Package: sidux-manual-en
Priority: optional
Section: doc
Installed-Size: 1088
Maintainer: Kel Modderman <kel@otaku42.de>
Architecture: all
Source: sidux-manual
Version: 01.12.2007.06.03-1
Depends: sidux-manual-common
Filename: pool/main/s/sidux-manual/sidux-manual-en_01.12.2007.06.03-1_all.deb
Size: 391222
MD5sum: 60f2175c3c5709745a4b4256ccc3c49d
SHA1: e275a0b27628b6aa210a4ced48d3646b438e78b8
SHA256: 2792580c7a091521301064180a1d0d8901f0a4af407b90432b9f8d8b6b3603ca
Description: the official en sidux manual
 This manual is divided into common sections, for example, a subject pertaining
 to partitioning is found in Partitioning your Hard Drive, and topics regarding
 the Internet/WIFI are grouped in Internet and Networking. There are some
 topics that cannot be grouped or require stand-alone status.
 .
 As with any new documentation there will be errors/mistakes/typos, although we
 hope otherwise regarding errors and mistakes (typos we can live with) please
 forgive us.
 .
 As the body of work grows, more documentation will be added and we at sidux are
 sure that this will prove to be a very valuable resource for you and we thank
 you for being a part of sidux.

Todas as versões instaláveis do pacote (elas dependem de sua sources.list) podem ser listadas se você digitar:

$ apt-cache policy sidux-manual-pt-br
sidux-manual-pt-br:
  Installed: (none)
  Candidate: 01.34.2007.08.29-2
  Version table:
 *** 01.34.2007.08.29-2 0
        500 http://sidux.com sid/main Packages
        100 /var/lib/dpkg/status

Uma descrição completa do Sistema APT pode ser encontrada em APT-HOWTO

Procurando um pacote com o kio-apt

kio-apt é uma aplicação que oferece uma maneira de usar a interface gráfica via konqueror, sem correr riscos. Ele procura pacotes sem opções de instalação ou atualização no APT.

Esta é uma boa alternativa para outros gerenciadores, como adept, aptitude, synaptic e kpackage; assim você fica livre da tentação de instalar/atualizar pacotes no X usando ferramentas não preparadas para o Debian sid.

Você pode pesquisar o banco de dados dos pacotes tanto online quanto offline. Ele também faz uma boa síntese com informações retiradas do apt-cache policy e do apt-cache show.

Como procurar:

  • apt:/search?expressão:procura no banco de dados por 'expressão', corresponde ao apt-cache search
  • apt:/show?pacote: mostra informações detalhadas sobre 'pacote', como dependências, qual a versão instalada etc; corresponde ao apt-cache show.
  • apt:/policy?pacote: mostra se o 'pacote' está instalado ou não, sua versão e alguns outros dados; corresponde a apt-cache policy.
  • apt:/list?pacote: lista os arquivos em 'pacote'.
kio-apt-1
kio-apt-2

Instalação

sux
apt-get update && apt-get install kio-apt

Depois abra o Konqueror e digite:

apt:/

...e aperte [Enter]. Veja descrição detalhada de todas as opções possíveis, incluindo busca em formulário compacto ou estendido.

A descrição completa do Sistema APT pode ser encontrada em APT-HOWTO

Page last revised 20/06/2008 1130 UTC