<!-- -*- mode: sgml; mode: fold -*- -->
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [

<!ENTITY % aptent SYSTEM "apt.ent.pt_BR">
%aptent;

]>

<refentry lang="pt_BR">
 &apt-docinfo;

 <refmeta>
   <refentrytitle>apt_preferences</>
   <manvolnum>5</>
 </refmeta>

 <!-- Man page title -->
 <refnamediv>
    <refname>apt_preferences</>
    <refpurpose>Arquivo de controle de preferências para o APT</>
 </refnamediv>

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

<para>
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, <literal>stable</literal> e
<literal>testing</literal>). O APT atribui uma prioridade para cada
versão que esteja disponível. Sujeito a obstáculos de dependências, o
<command>apt-get</command> 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.
</para>
<para>
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 <command>apt-get</command> 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.
</para>

<RefSect2><Title>Atribuições de Prioridade Padrão do APT</>

<para>
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
<command>apt-get</command> ou no arquivo de configuração do APT
<filename>/etc/apt/apt.conf</filename>.
Por exemplo, 
<programlisting>
<command>apt-get install -t testing <replaceable>algum-pacote</replaceable></command>
</programlisting>
<programlisting>
APT::Default-Release "stable";
</programlisting>
</para>

<para>
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á :
<variablelist>
<varlistentry>
<term>prioridade 100</term>
<listitem><simpara>para a instância que já esteja instalada (caso exista).</simpara></listitem>
</varlistentry>
<varlistentry>
<term>prioridade 500</term>
<listitem><simpara>para as instâncias que não estã instaladas e que não pertencem a versão alvo.</simpara></listitem>
</varlistentry>
<varlistentry>
<term>prioridade 990</term>
<listitem><simpara>para as instâncias que não estejam instaladas e pertençam a versão alvo.</simpara></listitem>
</varlistentry>
</variablelist>
</para>

<para>
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.
</para>

<para>
O APT aplica as regras a seguir, listadas em ordem de precedência, para
determinar qual instância de um pacote instalar.
<itemizedlist>
<listitem><simpara>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.)</simpara></listitem>
<listitem><simpara>Instala a instância de prioridade mais alta.</simpara></listitem>
<listitem><simpara>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).</simpara></listitem>
<listitem><simpara>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></listitem>
</itemizedlist>
</para>

<para>
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
<command>apt-get install <replaceable>algum-pacote</replaceable></command>
ou <command>apt-get dist-upgrade</command> forem executados.
</para>

<para>
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 <replaceable>algum-pacote</replaceable></command>
ou <command>apt-get upgrade</command> forem executados.
</para>

<para>
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
<command>apt-get install <replaceable>algum-pacote</replaceable></command>
ou <command>apt-get upgrade</command> forem executados, devido a pelo
menos <emphasis/uma/ das versões disponíveis possuir uma prioridade maior
do que a versão instalada.
</para>

</RefSect2>

<RefSect2><Title>O Efeito das Preferências do APT</>

<para>
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.
<itemizedlist>
<listitem>
<simpara>
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>

<programlisting>
Package: perl
Pin: version 5.8*
Pin-Priority: 1001
</programlisting>
</listitem>

<listitem><simpara>
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>

<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.
</simpara>

<programlisting>
Package: *
Pin: origin ""
Pin-Priority: 999
</programlisting>

<simpara>
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>

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

<programlisting>
Package: *
Pin: release a=unstable
Pin-Priority: 50
</programlisting>

<simpara>
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>

<programlisting>
Package: *
Pin: release a=unstable, v=3.0
Pin-Priority: 50
</programlisting>
</listitem>
</itemizedlist>
</para>

</RefSect2>

<RefSect2>
<Title>Como o APT Interpreta Prioridades</Title>

<para>
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):

<variablelist>
<varlistentry>
<term>P &gt; 1000</term>
<listitem><simpara>faz com que uma instância seja instalada
mesmo caso isso constitua um dowgrade do pacote</simpara></listitem>
</varlistentry>
<varlistentry>
<term>990 &lt; P &lt;=1000</term>
<listitem><simpara>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</simpara></listitem>
</varlistentry>
<varlistentry>
<term>500 &lt; P &lt;=990</term>
<listitem><simpara>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</simpara></listitem>
</varlistentry>
<varlistentry>
<term>100 &lt; P &lt;=500</term>
<listitem><simpara>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</simpara></listitem>
<varlistentry>
<term>0 &lt;= P &lt;=100</term>
<listitem><simpara>faz com que uma versão seja instalada
somente caso não exista uma versão instalada do pacote</simpara></listitem>
</varlistentry>
<varlistentry>
<term>P &lt; 0</term>
<listitem><simpara>impede a versão de ser instalada</simpara></listitem>
</varlistentry>
</variablelist>
</para>

<para>
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.
</para>

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

<programlisting>
Package: perl
Pin: version 5.8*
Pin-Priority: 1001

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

Package: *
Pin: release unstable
Pin-Priority: 50
</programlisting>

Então :

<itemizedlist>
<listitem><simpara>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></listitem>
<listitem><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></listitem>
<listitem><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></listitem>
</itemizedlist>
</para>
</RefSect2>

<RefSect2>
<Title>Determinação da Versão do Pacote e Propriedades da Distribuição</Title>

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

<para>
O arquivo <filename>Packages</filename> é normalmente encontrado no
diretório <filename>.../dists/<replaceable>nome-distribuição</replaceable>/<replaceable>componente</replaceable>/<replaceable>arquitetura</replaceable></filename> :
por exemplo, <filename>.../dists/stable/main/binary-i386/Packages</filename>.
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 :
<variablelist>
<varlistentry>
<term>a linha <literal/Package:/</term>
<listitem><simpara>informa o nome do pacote</simpara></listitem>
</varlistentry>
<varlistentry>
<term>a linha <literal/Version:/</term>
<listitem><simpara>informa o número de versão do pacote</simpara></listitem>
</varlistentry>
</variablelist>
</para>

<para>
O arquivo <filename>Release</filename> é normalmente encontrado no
diretório
<filename>.../dists/<replaceable>nome-distribuição</replaceable></filename> :
por exemplo, <filename>.../dists/stable/Release</filename>,
ou <filename>.../dists/woody/Release</filename>.
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>
<varlistentry>
<term>a linha <literal/Archive:/</term>
<listitem><simpara>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>
<programlisting>
Pin: release a=stable
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term>a linha <literal/Version:/</term>
<listitem><simpara>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>

<programlisting>
Pin: release v=3.0
Pin: release a=stable v=3.0
Pin: release 3.0
</programlisting>

</listitem>
</varlistentry>

<varlistentry>
<term>a linha <literal/Component:/</term>
<listitem><simpara>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>
<programlisting>
Pin: release c=main
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term>a linha <literal/Origin:/</term>
<listitem><simpara>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>
<programlisting>
Pin: release o=Debian
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term>a linha <literal/Label:/</term>
<listitem><simpara>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>
<programlisting>
Pin: release l=Debian
</programlisting>
</listitem>
</varlistentry>
</variablelist>
</para>

<para>
Todos os arquivos <filename>Packages</filename> e
<filename>Release</filename> obtidos das localidades listadas no arquivo
&sources-list; são mantidos no diretório
<filename>/var/lib/apt/lists</filename> 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</filename>
contém o arquivo <filename>Release</filename> 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>

</RefSect2>

<RefSect2>
<Title>Linhas Opcionais em um Registro de Preferências do APT</Title>

<para>
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>

<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>
</RefSect2>
</RefSect1>

<RefSect1>
<Title>Exemplos</Title>
<RefSect2>
<Title>Acompanhando a Stable</Title>

<para>
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
</programlisting>
</para>

<para>
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 <replaceable>nome-pacote</replaceable>
apt-get upgrade
apt-get dist-upgrade
</programlisting>
</para>

<para>
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 <replaceable>pacote</replaceable>/testing
</programlisting>
</RefSect2>

<RefSect2>
<Title>Acompanhando a Testing</Title>

<para>
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
</programlisting>
</para>

<para>
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 <replaceable>nome-pacote</replaceable>
apt-get upgrade
apt-get dist-upgrade
</programlisting>
</para>

<para>
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</command> 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 <replaceable>pacote</replaceable>/unstable
</programlisting>
</para>

</RefSect2>
</RefSect1>

<RefSect1>
<Title>Consulte também</Title>
<para>
&apt-get; &apt-cache; &apt-conf; &sources-list;
</para>
</RefSect1>

 &manbugs;
 &manauthor;
 &ptbr-mantranslator;
