&apt-docinfo;

apt_preferences 5

# apt_preferences Arquivo de controle de preferências para o APT

## Descrição

O arquivo de preferências do APT `/etc/apt/preferences pode ser usado para controlar quais versões de pacotes serão selecionadas para instalação.`

Diversas versões de um pacote podem estar disponíveis para instalação quando o arquivo &sources-list; contém referências para mais de uma distribuição (por exemplo, `stable` e `testing`). O APT atribui uma prioridade para cada versão que esteja disponível. Sujeito a obstáculos de dependências, o `apt-get` seleciona para instalação a versão com a maior prioridade. O arquivo de preferências do APT sobrepoe as prioridades que o APT atribui a cada versão de pacote por padrão, dando assim ao usuário controle sobre qual versão do pacote é selecionada para instalação.

Diversas instâncias da mesma versão de um pacote pode estar disponíveis quando o arquivo &sources-list; contém referências a mais de uma fonte. Nesse caso, o `apt-get` faz o download da instância listada antes no arquivo &sources-list; . O arquivo de preferências do APT não afeta a escolha da instância.

### Atribuições de Prioridade Padrão do APT

Caso não exista um arquivo de preferências ou caso não exista uma entrada no arquivo que se aplique a uma instância em particular, a prioridade atribuída a essa instância é a prioridade da distribuição para a qual a instância pertence. É possível selecionar uma distribuição, conhecida como "a versão alvo" (the target release), que recebe uma prioridade maior do que as outras distribuições. A versão alvo pode ser definida na linha de comando do `apt-get` ou no arquivo de configuração do APT `/etc/apt/apt.conf`. Por exemplo,

    apt-get install -t testing algum-pacote

    APT::Default-Release "stable";

Caso uma versão alvo tenha sido especificada o APT usará o seguinte algoritmo para definir as prioridades das instâncias de um pacote. Atribuirá :

prioridade 100

  para a instância que já esteja instalada (caso exista).

prioridade 500

  para as instâncias que não estã instaladas e que não pertencem a versão alvo.

prioridade 990

  para as instâncias que não estejam instaladas e pertençam a versão alvo.

Caso nenhuma versão alvo tenha sido especificada, o APT simplesmente irá atribuir a prioridade 100 para todas as instâncias de pacotes instaladas e a prioridade 500 para todas as instâncias de pacotes não instaladas.

O APT aplica as regras a seguir, listadas em ordem de precedência, para determinar qual instância de um pacote instalar.

- Nunca faz um downgrade a menos que a prioridade de uma instância disponível exceda 1000. (Fazer um "downgrade" é instalar uma versão menos recente de um pacote no lugar de uma versão mais recente. Note que nenhuma das prioridades padrão do APT excede 1000; prioridades altas como essa podem ser definidas somente no arquivo de preferências. Note também que fazer um "downgrade" pode ser arriscado.)

- Instala a instância de prioridade mais alta.

- Caso duas ou mais instâncias possuam a mesma prioridade, instala a instância mais recente (ou seja, aquela com o maior número de versão).

- Caso duas ou mais instâncias possuam a mesma prioridade e número de versão mas os pacotes sejam diferentes em alguns de seus metadados ou a opção <literal/--reinstall/ seja fornecida, instala aquela desinstalada.</simpara>

Em uma situação típica, a instância instalada de um pacote (prioridade 100) não é tão recente quanto uma das versões disponíveis nas fontes listadas no arquivo &sources-list; (prioridade 500 ou 990). Então o pacote será atualizado quando os comandos `apt-get install algum-pacote` ou `apt-get dist-upgrade` forem executados.

Mais raramente, a versão instalada de um pacote é <emphasis/mais/ recente do que qualquer uma das outras versões disponíveis. O dowgrade do pacote não será feito quando os comandos <command>apt-get install algum-pacote ou `apt-get upgrade` forem executados.

Algumas vezes a versão instalada de um pacote é mais recente que a versão que pertence a versão alvo, mas não tão recente quanto a versão que pertence a alguma outra distribuição. Um pacote como esse será na verdade atualizado quando os comandos `apt-get install algum-pacote` ou `apt-get upgrade` forem executados, devido a pelo menos <emphasis/uma/ das versões disponíveis possuir uma prioridade maior do que a versão instalada. </para>

### O Efeito das Preferências do APT

O arquivo de preferências do APT permite ao administrador do sistema personalizar prioridades. O arquivo consiste de um ou mais registros de múltiplas linhas separados por linhas em branco. Registros podem possuir uma das duas formas, uma forma específica e uma forma geral.

- A forma específica atribui uma uma prioridade (uma "Pin-Priority") para um pacote e versão ou faixa de versão especificados. Por exemplo, o registro a seguir atribui uma prioridade alta para todas as versões do pacote <filename/perl/ os quais tenham seus números de versão iniciando com "<literal/5.8/". </simpara>

      Package: perl
      Pin: version 5.8*
      Pin-Priority: 1001

- O forma geral atribui uma prioridade para todas as versões de pacotes em uma dada distribuição (isto é, para toda as versões de pacotes que estejam em um certo arquivo <filename/Release/) ou para todas as versões de pacotes que provenientes de um site Internet em particular, como identificado pelo nome de domínio totalmente qualificado do site Internet. </simpara>

  Essa entrada de forma geral no arquivo de preferências do APT aplica-se somente a grupos de pacotes. Por exemplo, o registro a seguir faz com que o APT atribua uma prioridade alta para todas as versões de pacotes disponíveis no site local.

      Package: *
      Pin: origin ""
      Pin-Priority: 999

  Uma nota de aviso : a palavra-chave usada aqui é "<literal/origin/". Esta palavra não deve ser confundida com a origem ("Origin:") de uma distribuição como especificado em um arquivo <filename/Release/. O que segue a tag "Origin:" em um arquivo <filename/Release/ não é um endereço de site Internet mas sim nome de autor ou distribuidor (vendor), como "Debian" ou "Ximian". </simpara>

  O registro a seguir atribui uma prioridade baixa para todas as versões de pacote que pertençam a qualquer distribuição cujo nome do Repositório seja "<literal/unstable/". </simpara>

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

  O registro a seguir atribui uma prioridade alta para todas as versões de pacotes que pertençam a qualquer versão cujo nome do Repositório seja "<literal/stable/" e cujo número de versão seja "<literal/3.0/". </simpara>

      Package: *
      Pin: release a=unstable, v=3.0
      Pin-Priority: 50

### Como o APT Interpreta Prioridades

Prioridades (P) atribuídas no arquivo de preferências do APT devem ser números inteiros positivos ou negativos. Eles são interpretados como a seguir (a grosso modo):

P > 1000

  faz com que uma instância seja instalada mesmo caso isso constitua um dowgrade do pacote

990 < P <=1000

  faz com que uma versão seja instalada mesmo caso a mesma não venha de uma versão alvo, a menos que a versão instalada seja mais recente

500 < P <=990

  faz com que uma versão seja instalada a menos que exista uma versão disponível pertencente a versão alvo ou a versão instalada seja mais recente

100 < P <=500

  faz com que uma versão seja instalada a menos que exista uma versão disponível pertencente a alguma outra distribuição ou a versão instalada seja mais recente

0 <= P <=100

  faz com que uma versão seja instalada somente caso não exista uma versão instalada do pacote

P < 0

  impede a versão de ser instalada

Caso um dos registro de forma específica descritos acima case (match) com uma versão disponível do pacote então o primeiro desses registros encontrados determinará a prioridade da versão do pacote. Na falha desse cenário, caso quaisquer registros de forma genérica casem (match) com uma versão do pacote disponível então o primeiro desses registros encontrado determinará a prioridade da versão do pacote.

Por exemplo, suponha que o arquivo de preferências do APT contenha os três registros apresentados anteriormente :

    Package: perl
    Pin: version 5.8*
    Pin-Priority: 1001

    Package: *
    Pin: origin ""
    Pin-Priority: 999

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

Então :

- A versão mais recente disponível do pacote <literal/perl/ será instalado, contanto que esse número de versão da versão inicie com "<literal/5.8/". Caso <emphasis/qualquer/ versão 5.8* de <literal/perl/ esteja disponível e a versão instalada seja 5.9*, será feito um downgrade do <literal/perl/. </simpara>

- Uma versão de qualquer pacote diferente de <literal/perl/ que esteja disponível no sistema local possui prioridade sobre outras versões, mesmo versões pertencentes a versão alvo. </simpara>

- Uma versão de um pacote cuja origem não seja o sistema local mas sim algum outro site listado no arquivo &sources-list; e que pertença a uma distribuição <literal/unstable/ é instalada somente caso a mesma seja selecionada para instalação e nenhuma versão do pacote já esteja instalada. </simpara>

### Determinação da Versão do Pacote e Propriedades da Distribuição

As localidades listadas em um arquivo &sources-list; devem fornecer arquivos `Packages` e `Release` para descrever os pacotes disponíveis nessas localidades.

O arquivo `Packages` é normalmente encontrado no diretório `.../dists/nome-distribuição/componente/arquitetura` : por exemplo, `.../dists/stable/main/binary-i386/Packages`. O arquivo consiste de uma série de registros de múltiplas linhas, uma para cada pacote disponível no diretório. Somente duas linhas em cada registro são relevantes para definir prioridades do APT :

a linha <literal/Package:/</term>

  informa o nome do pacote

a linha <literal/Version:/</term>

  informa o número de versão do pacote

O arquivo `Release` é normalmente encontrado no diretório `.../dists/nome-distribuição` : por exemplo, `.../dists/stable/Release`, ou `.../dists/woody/Release`. O arquivo consiste de um registro de múltiplas linhas o qual se aplica a <emphasis/todos/ os pacotes na àrvore de diretórios abaixo de seu diretório pai. Diferente do arquivo <filename/Packages/, quase todas as linhas em um arquivo <filename/Release/ são relevantes para a definição de prioridades do APT :

<variablelist>

a linha <literal/Archive:/</term>

- dá nome ao repositório para o qual todos os pacotes na àrvore de diretório pertencem. Por exemplo, a linha "Archive: stable" especifica que todos os pacotes na àrvore de diretório abaixo do diretório pai do arquivo <filename/Release/ estão no respositório <literal/stable/. Especificar esse valor no arquivo de preferências do APT iria requerer a linha : </simpara>

      Pin: release a=stable

a linha <literal/Version:/</term>

- dá nome a versão da distribuição. Por exemplo, os pacote na àrvore podem pertencer a distribuição Debian GNU/Linux versão 3.0. Note que normalmente não existe número de versão para as distribuições <literal/testing/ e <literal/unstable/ devido as mesmas não terem sido lançadas ainda. Especificar isso no arquivo de preferências do APT iria requerer uma das linhas a seguir. </simpara>

      Pin: release v=3.0
      Pin: release a=stable v=3.0
      Pin: release 3.0

a linha <literal/Component:/</term>

- dá nome ao componente de licenciamento associado com os pacotes na àrvore de diretório do arquivo <filename/Release/. Por exemplo, a linha "Component: main" especifica que todos os pacotes na àrvore de diretório são do componente <literal/main/, o que significa que as mesmas estão licenciadas sob os termos da Linhas Guias Debian para o Software Livre (a DFSG). Especificar esse componente no arquivo de preferências do APT iria requerer a linha : </simpara>

      Pin: release c=main

a linha <literal/Origin:/</term>

- dá nome ao produtor dos pacotes na àrvore de diretório do arquivo <filename/Release/. O mais comum é esse valor ser <literal/Debian/. Especificar essa origem no arquivo de preferências do APT iria requerer a linha : </simpara>

      Pin: release o=Debian

a linha <literal/Label:/</term>

- dá nome ao rótulo (label) dos pacotes na árvore de diretório. O mais comum é esse valor ser <literal/Debian/. Especificar esse rótulo (label) no arquivo de preferências do APT iria requerer a linha : </simpara>

      Pin: release l=Debian

Todos os arquivos `Packages` e `Release` obtidos das localidades listadas no arquivo &sources-list; são mantidos no diretório `/var/lib/apt/lists` ou no arquivo indicado pela variável <literal/Dir::State::Lists/ no arquivo <filename/apt.conf/. Por exemplo, o arquivo <filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release contém o arquivo `Release` obtido do site <literal/debian.lcs.mit.edu/ para a arquitetura <literal/binary-i386/, arquivos do componente <literal/contrib/ da distribuição <literal/unstable/. </para>

### Linhas Opcionais em um Registro de Preferências do APT

Cada registro em um arquivo de preferências do APT pode opcionalmente iniciar com uma ou mais linhas iniciadas com a palavra <literal/Explanation:/. Isto oferece um local para inserir comentários. </para>

A linha <literal/Pin-Priority:/ em cada registro de preferências do APT é opcional. Caso omitida, o APT atribuirá uma prioridade de 1 menos o último valor especificado em uma linha iniciando com <literal/Pin-Priority: release .../. </para>

## Exemplos

### Acompanhando a Stable

O arquivo de preferências do APT a seguir fará com que o APT atribua uma prioridade maior do que a prioridade padrão (500) para todas as versões de pacotes pertencentes a distribuição <literal/stable/ e uma prioridade proibitivamente baixa para versões de pacotes pertencentes a outras distribuições <literal/Debian/.

<programlisting> Explanation: Desinstala ou não instala nenhuma versão de pacote originada Explanation: do Debian a não ser aquelas na distribuição stable Package: * Pin: release a=stable Pin-Priority: 900

Package: * Pin: release o=Debian Pin-Priority: -10

Com um arquivo &sources-list; apropriado e o arquivo de preferências acima, quaisquer um dos comandos a seguir farão com que o APT atualize para a(s) ulítma(s) versão(ôes) <literal/stable/.

<programlisting> apt-get install nome-pacote apt-get upgrade apt-get dist-upgrade

O comando a seguir fará com que o APT atualize o pacote especificado para a última versão da distribuição <literal/testing/; o pacote não serpa atualizado novamente a menos que esse comando seja executado novamente.

<programlisting> apt-get install pacote/testing

### Acompanhando a Testing

O arquivo de preferências do APT a seguir fará com que o APT atribua uma prioridade maior para versões de pacote da distribuição <literal/testing/, uma prioridade menor para versões de pacotes da distribuição <literal/unstable/ e uma prioridade proibitivamente baixa para versões de pacotes de outras distribuições <literal/Debian/.

<programlisting> Package: * Pin: release a=testing Pin-Priority: 900

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

Package: * Pin: release o=Debian Pin-Priority: -10

Com um arquivo &sources-list; adequado e o arquivo de preferências do APT acima, quaisquer dos comandos a seguir farão com que o APT atualize para a(s) última(s) versão(ões) <literal/testing/.

<programlisting> apt-get install nome-pacote apt-get upgrade apt-get dist-upgrade

O comando a seguir fará com que o APT atualize o pacote especificado para a última versão da distribuição <literal/unstable/. Assim, o comando <command>apt-get upgrade irá atualizar o pacote para a versão <literal/testing/ mais recente caso essa versão seja mais recente que a versão instalada, caso não seja, o pacote será atualizado para a versão <literal/unstable/ mais recente caso a mesma seja mais recente que a versão instalada.

<programlisting> apt-get install pacote/unstable

## Consulte também

&apt-get; &apt-cache; &apt-conf; &sources-list;

&manbugs; &manauthor; &ptbr-mantranslator;