1 de julho de 2009

Personalizando o APT

Por Lucas Sabino

Vou ser direto, não abordarei a história do APT ou como funciona, pois não é a prioridade aqui. Recomendo a leitura para quem já teve ou tem contato com APT.

Vamos ao que interessa!

Digamos que usamos a versão stable (etch) em nosso sistema, mas gostaríamos de buscar pacotes testing (lenny) e unstable, para isso precisaríamos editar o arquivo /etc/apt/sources.list e adicionarmos os repositórios escolhidos.

Mas antes disso devemos tomar algumas providências para não haver conseqüências desastrosas.

Vou dar um exemplo:

Depois de adicionarmos as fontes do testing e do unstable, veja o que vai acontecer:

# apt-get update
# apt-get install pacote

Primeiro serão baixadas as relações de pacotes do stable, de segurança e do testing. Depois demos a ordem para instalar um novo pacote, como temos vários repositórios, o APT irá instalar a versão mais nova do pacote. É quase certo que a versão mais nova do pacote estará na testing. Assim podemos afirmar que mais nenhum pacote virá do stable.

Aí que está, se nenhum pacote vir mais do stable, estaremos tirando a estabilidade do grande pai Debian aos poucos, além de que se misturarmos pacotes de releases diferentes podem acontecer incompatibilidades.

Conseqüências piores viriam se déssemos um upgrade no sistema, veja:

# apt-get upgrade

Neste caso o nosso stable passaria de vez a ser testing, pois o APT sempre busca versões mais recentes. E não adiantaria retirarmos o repositório testing depois de termos feito isso, pois o APT concluirá que os pacotes existentes são mais recentes do que os existentes no repositórios stable.

Não queremos que isso ocorra no nosso sistema, certo??? A solução é simples.

Primeiro devemos incluir normalmente os repositórios testing. O editor de texto que uso é o mcedit, mas isso é opcional:

# vi /etc/apt/sources.list

E adicionar o repositório escolhido.

Feito isso, editar ou criar o arquivo /etc/apt/preferences para isso:

# vi /etc/apt/preferences

Aí nesse arquivo vamos inserir o seguinte conteúdo:
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=testing
Pin-Priority: 400

O arquivo /etc/apt/preferences controla a prioridade de versão de pacotes. É possível manter fontes stable, testing e unstable ao mesmo tempo.

Bom a configuração que fizemos foi a seguinte:

Que para todos os repositórios stable, a prioridade será 900 e para testing 400, ou seja, vale a prioridade mais alta, então o stable será a opção default, sempre que utilizarmos o comando apt-get com as opções install, update, upgrade, source, dist-upgrade, o pacote será do stable.

Para instalar pacotes do testing devemos utilizar o comando:

# apt-get -t testing install [pacote]

O mesmo procedimento se aplica as opções update, upgrade, dist-upgrade ou source.

OBS: Podemos definir que um pacote sempre venha da release testing, para isso dentro do arquivo /etc/apt/preferences:
Package: pidgin
Pin: release a=testing
Pin-Priority: 905

O pacote desejado vai ter prioridade maior que o de qualquer outro release, então o pacote desejado será da release testing.

Bom, esses são os cuidados que devemos tomar com nosso repositórios...

Nenhum comentário: