quinta-feira, 12 de setembro de 2013

Hibridizando o APT do Debian

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).

Existem três arquivos que devem ser editados para que o APT possa funcionar do modo desejado: '/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.


SOURCES.LIST

O primeiro passo é configurar o /etc/apt/sources.list para incluir além do seu típico repositório stable, adicionar também o repositório testing e fontes do repositório unstable que você deseja.

$ su

# sudo nano /etc/apt/sources.list

Adicione o seguinte conteúdo:

#Stable
deb http://ftp.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.debian.org/debian/ stable main contrib non-free

#Testing
deb http://ftp.debian.org/debian/ testing main contrib non-free
deb-src http://ftp.debian.org/debian/ testing main contrib non-free

#Unstable
deb http://ftp.debian.org/debian/ unstable main contrib non-free
deb-src http://ftp.debian.org/debian/ unstable main contrib non-free

Para salvar no nano, pressione Ctrl + O e depois Enter. E para sair, pressione Ctrl + X.


PREFERENCES

O segundo passo é criar e editar o arquivo /etc/apt/preferences. Preferences é onde o apt híbrido ocorre. Normalmente, a versão mais recente de um pacote disponível ganha, mas vamos ignorar isso adicionando a prioridade do repositório que nós desejamos que o apt busque determinado pacote .

# sudo nano /etc/apt/preferences

No arquivo vazio recém-criado, adicione o seguinte conteúdo:

Package: *
Pin: release a=stable
Pin-Priority: 700

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

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

Para salvar no nano, pressione Ctrl + O e depois Enter. E para sair, pressione Ctrl + X.

Observe os valores em ordem decrescente. Veja que neste esquema híbrido, o repositório estável (stable) tem maior prioridade de instalação de pacotes a ser instalado preferencialmente, e em seguida, a ordem de prioridade vai para o repositório testing e em seguida para o repositório unstable.
Meu arquivo /etc/apt/preferences é o que você vê acima.


APT.CONF

O terceiro e último passo, é a edição do /etc/apt/apt.conf.

# sudo nano /etc/apt/apt.conf

Como o cache do apt é pequeno demais para lidar com todos os pacotes que estão incluídos no stable, testing e unstable. Devemos corrigir isso adicionando as seguintes linhas no /etc/apt/apt.conf

APT::Default-Release "stable";
APT::Cache-Limit "10000000000";

Para salvar no nano, pressione Ctrl + O e depois Enter. E para sair, pressione Ctrl + X.

Agora estamos prontos para atualizar todas as listas com apt-get update. Isto irá adicionar os novos repositórios à lista do apt.

# sudo apt-get update

# sudo apt-get clean

Aumentamos o cache do apt com um valor bem mais elevado, para evitar possíveis problemas:

# sudo apt-get update -o APT::Cache-Limit=10000000000


INSTALAÇÃO DE NOVOS PACOTES



Para instalar um novo pacote, é exatamente como sempre foi:

# apt-get install nome_do_pacote

Se o pacote estiver presente no repositório stable, então este será o pacote que seu sistema irá baixar e instalar. E se tal pacote existir apenas no repositório unstable, então a é partir daí, do unstable que o pacote será obtido.
E se o pacote existe em stable e unstable, mas queremos a partir da versão instável? Há duas maneiras que nós podemos fazer isso, cada um com uma sintaxe um pouco diferente, e cada um com um efeito ligeiramente diferente.

# apt-get -t unstable install nome_do_pacote

Desta forma a versão instável do pacote será instalado, onde o sistema tentará satisfazer todas as dependências do repositório unstable. E caso você queira instalar um pacote do repositóro testing, basta:

# apt-get -t testing install nome_do_pacote


É isso aí!

Armado uma completa sources.list e um mínimo de preferências, você pode ir em frente e misturar e combinar entre as várias versões do Debian.


Considerações

Debian com o APT híbrido configurado corretamente, o seu sistema estará mais poderoso do que de costume, pois você poderá manter a estabilidade de um Debian Stable e ainda por cima, instalar os pacotes mais recentes através dos repositórios testing ou unstable de forma segura, sem medo de quebrar o seu sistema, pois apesar de seu sistema estar com repositórios de versões misturados, estes se apresentam bem organizados com prioridades determinadas pelo "/etc/apt/preferences", e é esse sistema de prioridades que evita o seu sistema de quebrar, possibilitando assim, que você tenha os repositórios: stable, testing e unstable na mesma sources.list.



Referências


Apt-Pinning for Beginners; Disponível em: <>http://jaqque.sbih.org/kplug/apt-pinning.html>. Acessado em: 12 de Setembro de 2013.

Build-0.8-target-on-debian.txt; Disponível em: <>https://www.switch.ch/aai/docs/shibboleth/SWITCH/0.8/build-0.8-target-on-debian.txt>. Acessado em: 12 de Setembro de 2013.

Debian apt-get and cache limit; Disponível em: <>http://atmail.com/kb/2008/debian-apt-get-and-cache-limit/>. Acessado em: 12 de Setembro de 2013.

Hibridizando o APT; Forum Debian; Disponível em: <>http://wiki.forumdebian.com.br/index.php/Hibridizando_o_APT>. Acessado em: 12 de Setembro de 2013.



4 comentários:

  1. Excelente dica... precisei instalar uma versão antiga do PHP e só consegui alterando/criando o /etc/apt/preferences

    ResponderExcluir
  2. explorando sua sabedoria mestre, como poderia fazer para instalaro cinnamon mais recente (1.9) , usado o apt hibrido?

    ResponderExcluir
    Respostas
    1. Essa versão do cinnamon ainda não chegou aos repositórios do debian, porém você pode usar o repositório do Linux Mint Debian Edition para instalar a versão mais recente e compatível possível do cinnamon para debian:

      ## Repositorio Linux Mint Debian Edition
      # aptitude install linuxmint-keyring
      deb http://packages.linuxmint.com/ debian main import backport upstream romeo

      Excluir
  3. 700, 650 e 600 poderiam ser trocados por qualquer número?
    como 3, 2 e 1?

    ResponderExcluir