Hibridizando o APT

De Fórum Debian Wiki

Se você usa o Debian Testing ou ainda o Stable, você provavelmente já se deparou com um dilema: como instalar programas de outra versão do Debian sem bagunçar o sistema de pacotes? Ou talvez você nem tenha se perguntado isso, mas instalou um pacote de uma versão diferente e quando deu aquele "apt-get upgrade" o sistema ruiu. O problema é que o Debian trabalha com um sistema de prioridades para os pacotes de cada versão. Se você mistura repositórios no seu sources.list sem se preocupar com isso, tentativas de upgrade sempre baixarão os pacotes mais recentes disponíveis, o que pode bagunçar seu sistema todo (afinal, se você usa Stable você não está usando os pacotes mais novos disponíveis, e sim os mais estáveis).

O que tentarei fazer aqui é dar uma breve descrição de como o próprio APT, sem muita complicação, pode resolver esse problema. Vou exemplificar para uma distribuição híbrida Testing/Unstable (o meu caso). Isso significa que estou usando uma instalação da Testing mas alguns pacotes que tenho instalados são da Unstable.


Índice de conteúdo

Configurando o APT

Três arquivos devem ser editados para que o desejado possa funcionar: '/etc/apt/sources.list', para a adição de repositórios das distribuições que se deseja usar, '/etc/apt/preferences', para se configurar as prioridades de pacotes, e '/etc/apt/apt.conf', para selecionar a sua versão default.

Só o lembrete de sempre: fazer todas as operações abaixo como root!


/etc/apt/sources.list

Você já deve ter adicionados os repositórios da sua versão aqui. Então, basta acrescentar os repositórios da versão que deseja "hibridizar". No meu caso, eu tinha os repositórios da Testing e meu sources.list estava assim:

# Debian main distribution
deb http://www.sft.if.usp.br/debian/ testing main non-free contrib
deb-src http://www.sft.if.usp.br/debian/ testing main non-free contrib

# Security updates
deb http://security.debian.org/ testing/updates main contrib non-free
deb http://secure-testing.debian.net/debian-secure-testing etch/security-updates
 main contrib non-free
deb-src http://secure-testing.debian.net/debian-secure-testing etch/security-upd
ates main contrib non-free

# MPlayer
deb http://www.debian-multimedia.org etch main

Só o que fiz foi acrescentar o repositório da Unstable, e ficou assim:

# Debian main distribution
deb http://www.sft.if.usp.br/debian/ testing main non-free contrib
deb-src http://www.sft.if.usp.br/debian/ testing main non-free contrib

deb http://www.sft.if.usp.br/debian/ unstable main non-free contrib  #acrescentei aqui!

# Security updates
deb http://security.debian.org/ testing/updates main contrib non-free
deb http://secure-testing.debian.net/debian-secure-testing etch/security-updates
 main contrib non-free
deb-src http://secure-testing.debian.net/debian-secure-testing etch/security-upd
ates main contrib non-free

# MPlayer
deb http://www.debian-multimedia.org etch main


/etc/apt/apt.conf

Esse arquivo indica para o APT qual é a versão do Debian que você está usando. No meu caso, eu quero deixar a distribuição padrão como sendo Testing. Assim, o arquivo ficou da seguinte maneira:

APT::Default-Release "testing";

Somente essa linha é necessária para o processo funcionar. Caso você queira usar o stable, basta substituir "testing" por "stable" ali.

/etc/apt/preferences

Talvez esse arquivo ainda não exista na sua pasta /etc/apt. Nesse caso, crie o arquivo no seu editor de texto favorito e salve com o nome 'preferences' na pasta /etc/apt. No meu caso, eu quero fazer com que o APT só faça upgrade de um pacote caso apareça uma versão nova dele nos repositórios do Testing. Assim, deve-se dar uma prioridade menor para os pacotes da Unstable, a distribuição da qual só vou instalar uns poucos pacotes. Meu preferences ficou assim:

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

       Package: *
       Pin: release a=unstable
       Pin-Priority: 50

Isso significa que todos os pacotes do release unstable terão sua prioridade igual a 50 e os do testing igual a 500. Quando o APT for atualizar ou instalar um pacote, ele sempre instalará os de maior prioridade. Assim, ele só instalará pacotes da unstable quando for explicitamente solicitado.

Instalando um pacote do release "híbrido"

O comando 'apt-get install' continuará funcionando como funcionava antes. Para que você possa instalar pacotes da versão que foi adicionada através desse processo, é preciso passar para ele um parâmetro que indica de qual release você está querendo instalar. Isso é feito através do parâmetro -t, como segue:

Para instalar o pacote gaim do release testing, você faria normalmente:

$ apt-get install gaim

Já para o mesmo pacote do release unstable:

$ apt-get install -t unstable gaim

E é isso. É possível adicionar mais repositórios de outras versões, mas preferi fazer esse tutorial apenas com duas. Mais detalhes podem ser encontrados no tutorial Using APT with more than 2 sources.

Ferramentas pessoais