APT pinning: Como configurar APT para múltiplos repositórios no Debian

Você PODE misturar ORDENADAMENTE pacotes de diferentes repositórios e seções num sistema Debian e manter a gerenciabilidade.
Misturar pacotes da versão Estável, Testing, Instável, Backports, Experimental num mesmo computador é possível dentro de alguns limites e com algum cuidado.

APT pinning
Para poder utilizar diferentes seções e repositórios corretamente num sistema Debian, sem quebrar dependências, é preciso usar a técnica de APT PINNING.
Primeiramente, deve ser criado ou editado um arquivo /etc/apt/preferences definindo "pesos" para repositórios, ou versões, ou até pacotes individuais.
IMPORTANTE SER CRIADO ANTES DE QUALQUER COMANDO APT, para não confundir dependências.
O "peso" de um pacote já instalado na máquina é definido como 100, independentemente do repositório de onde tenha sido instalado.
O APT atribui os pesos do /etc/apt/preferences somente para pacotes que SERÃO instalados. Portanto, mesmo versões mais novas em repositórios com peso inferior a 100 não seriam atualizadas automáticamente. Só com comando explícito similar a:
apt-get -t nome_repositorio_descrito_no_preferences_e_sources_list install nome_pacote
Uma limitação importante é que repositórios Testing, Unstable, Experimental continuam sempre evoluindo versões também dos compiladores e bibliotecas. Isso pode causar dependências impossíveis de resolver satisfatóriamente um certo tempo depois de lançada uma versão Estável. Sem mencionar que mesmo que resolvidas, podem baixar uma quantidade muito grande de novas versões de pacotes dependentes que anulariam as vantagens de uma distribuição Stable.
A melhor solução é procurar usar apenas os repositórios Wheezy (é o Stable na data deste artigo), Volatile e Backports quando necessário.
Outro cuidado a tomar é com o nome "Stable" ou claramente "Wheezy" (na data deste artigo). O comportamento pode ser diferente do esperado também dependendo da data de um NOVO lançamento, como do Jessie, e da consistência entre nomes no /etc/apt/sources.list e /etc/apt/preferences.
Veja um exemplo de arquivo /etc/apt/preferences
Package: *
Pin: release n=wheezy
Pin-Priority: 900
Package: *
Pin: release n=jessie
Pin-Priority: 30
Package: *
Pin: release a=unstable
Pin-Priority: 20
Package: *
Pin: release a=experimental
Pin-Priority: 10
Package: *
Pin: release a="wheezy-backports"
Pin-Priority: 200
Leia mais no wiki do debian. Especialmente sobre como controlar precisamente o upgrade de certos pacotes, atribuindo "pesos" a eles, como no exemplo. No caso dos pacotes de glusterfs, eles seriam atualizados apenas por novas versões do backports, ou lenny, ou por comando explícito "apt-get -t testing install glusterfs-server" por exemplo.

Como configurar APT para múltiplos repositórios e seções
Para ter acesso aos pacotes binários não livres (como alguns drivers de rede e placas HBA), e outros programas não completamente livres, é preciso habilitar as seções "main", "non-free" e "contrib".
Depois de ter o arquivo /etc/apt/preferences, é preciso editar o arquivo /etc/apt/sources.list

# deb ftp://ftp.debian-multimedia.org wheezy main non-free
# deb ftp://ftp.deb-multimedia.org wheezy main non-free
deb http://ftp.br.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.br.debian.org/debian/ wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://ftp.br.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.br.debian.org/debian/ wheezy-updates main contrib non-free
# deb http://ftp.br.debian.org/debian/ jessie main contrib non-free
# deb-src http://ftp.br.debian.org/debian/ jessie main contrib non-free
# deb http://backports.debian.org/debian-backports wheezy-backports main contrib non-free
# deb-src http://backports.debian.org/debian-backports wheezy-backports main contrib non-free
deb http://ftp.debian.org/debian wheezy-backports main contrib non-free
deb-src http://ftp.debian.org/debian wheezy-backports main contrib non-free
#20130505 during dist-upgrade, disable proposed-updates
deb http://ftp.br.debian.org/debian/ wheezy-proposed-updates contrib non-free main
deb-src http://ftp.br.debian.org/debian/ wheezy-proposed-updates contrib non-free main
# deb http://mozilla.debian.net/ wheezy-backports iceweasel-release
deb http://download.skype.com/linux/repos/debian/ stable non-free
#AFM 20150517 only for the brave ones
# deb http://ftp.br.debian.org/debian/ experimental main contrib non-free
# deb-src http://ftp.br.debian.org/debian/ experimental main contrib non-free
#AFM 20140821
deb http://mozilla.debian.net/ wheezy-backports iceweasel-release


Fazer imediatamente, como root, um
apt-get update
Em seguida:
apt-get install debian-backports-keyring
E fazer NOVAMENTE, como root
apt-get update
Com estas duas configurações, será possível instalar pacotes e ou versões que não existam na estável, sem quebrar dependências.
Só então se pode fazer atualização de sistema:
apt-get upgrade
Leia os links e a página wiki do apt pinning para aprender os comandos para instalar pacotes de repositórios ou versões específicas sem quebrar dependências.

Comentários

Postagens mais visitadas deste blog

Tutorial Cyrus IMAP aggregator (murder) 2.3.16 sobre Debian GNU Linux 5.x Lenny

How to configure multipath for high availability and performance on Debian and CentOS for storage at IBM DS8300 SAN

Como instalar Oracle Client no Debian e Ubuntu