APT_PREFERENCES(5) APT APT_PREFERENCES(5) NOME apt_preferences - Ficheiro de controle de preferencias para o APT DESCRICAO O ficheiro de preferencias do APT /etc/apt/preferences e os ficheiros fragmentados no directorio /etc/apt/preferences.d/ podem ser usados para controlar quais as versoes de pacotes irao ser selecionadas para instalacao. Varias versoes de um pacote podem estar disponiveis para instalacao quando o ficheiro sources.list(5) contem referencias a mais do que uma distribuicao (por exemplo, stable e testing). O APT atribui uma prioridade a cada versao que esta disponivel. Sujeito a constrangimentos de dependencias, o apt-get seleciona a versao com a prioridade mais alta para instalacao. As preferencias do APT sobrepoem as prioridades que o APT atribui as versoes de pacotes por predefinicao, assim dando controle ao utilizador sobre qual e selecionado para instalacao. Podem estar disponiveis varias instancias da mesma versao de um pacote quando o ficheiro sources.list(5) contem referencias a mais do que uma fonte. Neste caso o apt-get descarrega a instancia listada mais cedo no ficheiro sources.list(5). As preferencias do APT nao afectam a escolha da instancia, apenas a escolha da versao. As preferencias sao um poder forte nas maos de um administrador de sistemas mas tambem se podem tornar no seu maior pesadelo se forem usadas sem cuidado! O APT nao ira questionar as preferencias, portanto as definicoes erradas irao acabar em pacotes nao instalaveis ou decisoes erradas ao actualizar pacotes. Irao surgir ainda mais problemas se forem misturadas multiplas distribuicoes sem o perfeito entendimento dos paragrafos seguintes. Os pacotes incluidos num lancamento especifico nao sao testados e por isso nem sempre funcionam como esperado nos lancamentos mais antigos ou recentes ou em conjunto com outros pacotes de lancamentos diferentes. Voce foi avisado. Note que os ficheiros no directorio /etc/apt/preferences.d sao analisados em ordem alfanumerica ascendente e precisam obedecer a convencao de nomes seguinte: Os ficheiros ou nao tem extensao ou tem "pref" na extensao do nome de ficheiro e apenas contem caracteres alfanumericos, traco (-), underscore (_) e ponto (.). Caso contrario o APT ira escrever um aviso de que ignorou um ficheiro, a menos que esse ficheiro corresponda a um padrao da lista de configuracao Dir::Ignore-Files-Silently - e neste caso sera ignorado em silencio. Atribuicoes de Prioridade Predefinidas do APT Senao existir um ficheiro de preferencias ou se nao existe uma entrada no ficheiro que se aplique a uma versao particular entao a prioridade atribuida a essa versao e a prioridade da distribuicao a qual essa versao pertence. E possivel definir uma distribuicao singular, "o lancamento de destino", a qual recebe uma prioridade mais alta que as outras distribuicoes por predefinicao. O lancamento de destino pode ser definido na linha de comandos do apt-get ou no ficheiro de configuracao do APT /etc/apt/apt.conf. Note que isto tem precedencias sobre qualquer prioridade geral que possa definir no ficheiro /etc/apt/preferences descrito mais tarde, mas nao sobre pacotes especificamente imobilizados. Por exemplo, apt-get install -t testing algum-pacote APT::Default-Release "stable"; Se o lancamento destinado foi especificado, entao o APT usa o seguinte algoritmo para definir as prioridades das versoes de um pacote. Atribuir: priority 1 para as versoes vindas de arquivos cujos ficheiros Release estejam marcados como "NotAutomatic: yes" mas nao como "ButAutomaticUpgrades: yes" como o arquivo experimental da Debian, assim como versoes que nao estejam faseadas nestes sistemas. priority 100 para a versao que ja esta instalada (se alguma) e para as versoes vindas de arquivos cujos ficheiros Release estejam marcados como "NotAutomatic: yes" e "ButAutomaticUpgrades: yes" como o arquivo backports da Debian desde squeeze-backports. priority 500 para as versoes que nao pertencem ao lancamento destinado. priority 990 para as versoes que pertencem ao lancamento destinado. A mais alta dessas prioridades cuja descricao coincide com a versao e especificada para a versao. Se o lancamento de destino nao foi especificado, entao o APT simplesmente atribui prioridade 100 a todas as versoes de pacotes instalados e prioridade 500 e todas as versoes de pacotes nao instalados, a excepcao de versoes que venham de arquivos cujos ficheiros Release estejam marcados como "NotAutomatic: yes" - estas versoes ficam com prioridade 1 ou prioridade 100 se for marcado adicionalmente como "ButAutomaticUpgrades: yes". O APT entao aplica as seguintes regras, listadas em ordem de precedencia, para determinar qual versao de um pacote deve instalar. o Nunca faz downgrade a menos que uma versao disponivel exceda 1000. ("Downgrading" e instalar uma versao menos recente de um pacote no lugar de uma versao mais recente. Note que nenhuma das prioridades predefinidas do APT excede 1000; tais altas prioridades so podem ser definidas no ficheiro de preferencias. Note tambem que fazer o downgrade a um pacote pode ser arriscado.) o Instala a versao de prioridade mais alta. o Se duas ou mais versoes tiverem a mesma prioridade, instala a mais recente (isto e, aquela com o numero de versao mais alto). o Se duas ou mais versoes tem a mesma prioridade e o mesmo numero de versao mas ou os pacotes diferem em alguns dos seus metadados ou a opcao --reinstall e fornecida, instala a que foi desinstalada. Numa situacao tipica, a versao instalada de um pacote (prioridade 100) nao e tao recente como uma das versoes disponiveis nas fontes listadas no ficheiro sources.list(5) (prioridade 500 ou 990). Entao o pacote sera actualizado quando for executado apt-get install algum-pacote ou apt-get upgrade. Mais raramente, a versao instalada de um pacote e mais recente que qualquer das outras versoes disponiveis. O pacote nao sera regredido para uma versao inferior quando for executado apt-get install algum-pacote ou apt-get upgrade. Por vezes a versao instalada de um pacote e mais recente que a versao pertencente ao lancamento de destino, mas nao tao recente que uma versao pertencente a alguma outra distribuicao. Tal pacote sera de facto actualizado quando for executado apt-get install algum-pacote ou apt-get upgrade, porque pelo menos uma das versoes disponiveis tem uma prioridade mais alta que a versao instalada. Actualizacoes Faseadas O APT compreende um campo chamado Phased-Update-Percentage que pode ser usado para controlar o lancamento de uma nova versao. E um numero inteiro entre 0 e 100. A elegibilidade do sistema para uma actualizacao faseada e determinada ao semear a geracao de numero aleatorio com o nome do pacote fonte, o numero de versao, e /etc/id-de-maquina, e depois calcular um inteiro na gama [0, 100]. Se este inteiro for maior que Phased-Update-Percentage, a versao e fixada a 1, e assim mantida retida. Caso contrario, aplicam-se as regras politicas normais. No caso de voce ter varios sistemas em que deseja receber o mesmo conjunto de actualizacoes, voce pode definir APT::Machine-ID para um UUID tal que eles todos faseem o mesmo, ou definir APT::Get::Never-Include-Phased-Updates ou APT::Get::Always-Include-Phased-Updates para verdadeiro de modo a que o APT nunca/sempre considere actualizacoes faseadas. O Efeito das Preferencias do APT O ficheiro de preferencias do APT permite ao administrador do sistema controlar a atribuicao de prioridades. O ficheiro consiste em um ou mais registos de multi-linhas separados por linhas vazias. Os registos podem ter um ou dois formatos, um formato especifico e um formato geral. o O formato especifico atribui um prioridade (um "Pin-Priority") a um ou mais pacotes especificos e versao especifica ou serie de versoes. Por exemplo, o seguinte registo atribui uma alta prioridade a todas as versoes do pacote perl cujo numero de versao comeca com "5.32". Multiplos pacotes podem ser separados por espacos. Package: perl Pin: version 5.32* Pin-Priority: 1001 Desde 2.9.9, voce tambem pode fixar por uma versao de fonte: Package: perl Pin: source-version 5.32* Pin-Priority: 1001 o O formato geral atribui uma prioridade a todas as versoes de pacotes numa dada distribuicao (isto e, a todas as versoes de pacotes que estao listados num certo ficheiro Release) ou a todas as versoes de pacotes vindos de um site de Internet particular, como identificado pelo nome de dominio totalmente qualificado do site. Esta entrada general-form no ficheiro de preferencias do APT aplica-se apenas a grupos de pacotes. Por exemplo, o seguinte registo atribui uma alta prioridade a todas as versoes de pacotes disponiveis a partir de um site local. Package: * Pin: origin "" Pin-Priority: 999 Uma nota de atencao: a palavra chave usada aqui e "origin" que pode ser usada para corresponder a um nome de maquina. O seguinte registo ira atribuir uma alta prioridade a todas as versoes disponiveis do servidor identificadas pelo nome de maquina "ftp.de.debian.org" Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999 Isto nao deve ser confundido com a Origem de uma distribuicao como especificada num ficheiro Release. O que representa a etiqueta "Origin:" num ficheiro Release nao e um endereco de Internet mas um nome de autor ou marca, tal como "Debian" ou "Ximian". O seguinte registo atribui uma baixa prioridade a todas as versoes de pacotes pertencentes a qualquer distribuicao cujo nome de Arquivo e "unstable". Package: * Pin: release a=unstable Pin-Priority: 50 O seguinte registo atribui uma alta prioridade a todas as versoes de pacotes pertencentes a qualquer distribuicao cujo nome de codigo e "forky". Package: * Pin: release n=forky Pin-Priority: 900 O seguinte registo atribui alta prioridade a todas as versoes de pacotes pertencentes a qualquer lancamento cujo nome de Arquivo e "stable" e cujo numero de Versao de lancamento e "13". Package: * Pin: release a=stable, v=13 Pin-Priority: 500 O efeito do operador virgula e semelhante a um "e" logico. Todas as condicoes tem de ser satisfeitas para o pin corresponder. Ha uma excepcao: Para qualquer tipo de condicao (tal como duas condicoes "a"), apenas a ultima de tais condicoes e verificada. Corresponder pacotes no campo Package O campo Package especifica o pacote ao qual uma prioridade de fixacao e aplicada. O campo pode ou conter um nome de pacote binario, um nome de pacote fonte (prefixado com "src:"), uma expressao glob(7) ou uma expressao regular (dentro de barras). Podem ser listados varios nomes de pacotes, expressoes glob(7) e expressoes regulares separados por espacos o que neste caso o registo ira corresponder a qualquer um dos pacotes correspondentes. Por predefinicao, apenas pacotes da arquitectura nativa sao correspondidos. Para corresponder pacotes binarios de qualquer arquitectura, adicione o sufixo :any ao nome do pacote. Voce pode tambem limitar a correspondencia a uma arquitectura especifica ao acrescentar o nome da arquitectura ao nome do pacote, separado pelo caractere dos dois pontos. Por exemplo, o seguinte exemplo usa uma expressao glob e uma expressao regular para designar a prioridade 500 a todos os pacotes de experimental onde o nome comeca com gnome (como uma expressao tipo glob(7)) ou contem a palavra kde (como uma expressao regular extensa do POSIX rodeada de barras). Package: gnome* /kde/ Pin: release a=experimental Pin-Priority: 500 A regra para essas expressoes e que elas podem ocorrer em qualquer sitio onde uma string pode ocorrer. Assim, o seguinte pin designa a prioridade 990 a todos os pacotes de um lancamento que comeca com plucky. Package: * Pin: release n=plucky* Pin-Priority: 990 Se ocorrer uma expressao regular num campo Package, o comportamento e o mesmo como se esta expressao regular fosse substituida por uma lista de todos os nomes de pacotes a que ela coincide. No entanto nao esta decidido se isto ira mudar no futuro; assim voce deve sempre listar os pins "wild-card" primeiro, para que depois os pins especificos os sobreporem. O padrao "*" num campo Package nao e considerado uma expressao glob(7) em si proprio. Para fixar todos os binarios produzidos pelo pacote fonte do apt desta versao do APT para 990, voce pode fazer: Package: src:apt Pin: version 3.0.0 Pin-Priority: 990 A fixacao de pacote fonte pode ser combinada com expressoes regulares e padroes glob, e tambem podem tomar uma arquitectura binaria. Por exemplo, vamos fixar todos os binarios para todas as arquitecturas produzidas por qualquer pacote fonte que contenha apt no seu nome para 990: Package: src:*apt*:any Pin: version * Pin-Priority: 990 O sufixo :any certifica a seleccao de pacotes binarios de qualquer arquitectura. Sem este sufixo, o apt assume implicitamente o sufixo :native o qual ira apenas selecionar pacotes da arquitectura nativa. Como o APT Interpreta as Prioridades As prioridades (P) atribuidas no ficheiro de preferencias do APT tem de ser inteiros positivos ou negativos. Elas sao interpretadas como o seguinte (falando grosso): P >= 1000 provoca que uma versao seja instalada mesmo que isso constitua uma reducao na versao do pacote (downgrade) 990 <= P < 1000 provoca que uma versao seja instalada mesmo que nao venha do lancamento de destino, a menos que a versao instalada seja mais recente 500 <= P < 990 provoca que uma versao seja instalada a menos que exista uma versao disponivel pertencente ao lancamento de destino ou se a versao instalada e mais recente 100 <= P < 500 provoca que uma versao seja instalada a menos que exista uma versao disponivel pertencente a outra distribuicao ou se a versao instalada e mais recente 0 < P < 100 provoca que uma versao seja instalada apenas se nao existir nenhuma versao instalada do pacote P < 0 previne a instalacao da versao P = 0 tem comportamento nao definido, nao o utilize. O primeiro registo de forma-especifica que corresponda a uma versao de pacote disponivel determina a prioridade da versao do pacote. Falhando isso, a prioridade do pacote e definida como o maximo de todas as prioridades definidas por registos de forma-generica que correspondam a versao. Os registos definidos que usem padroes diferentes de "*" no campo Pin sao tratados como registos de forma-especifica. Por exemplo, suponha que o ficheiro de preferencias do APT contem os tres registos apresentados atras: Package: perl Pin: version 5.32* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50 Entao: o Sera instalada a versao mais recente disponivel do pacote perl, desde que o numero da versao comece com "5.32". Se qualquer versao 5.32* do perl estiver disponivel e a versao instalada for 5.36*, entao sera feito um downgrade ao perl. o Uma versao de qualquer pacote que nao seja o perl e que esteja disponivel a partir do sistema local tem prioridade sobre outras versoes, mesmo versoes que pertencem ao lancamento de destino. o Uma versao de um pacote cuja origem nao e o sistema local mas qualquer outro site listado em sources.list(5) e o qual pertence a uma distribuicao unstable apenas e instalado se for selecionado para instalacao e se nenhuma versao do pacote ja estiver instalada. Determinacao da Versao do Pacote e Propriedades da Distribuicao As localizacoes listadas no ficheiro sources.list(5) devem fornecer os ficheiros Packages e Release para descrever os pacotes disponiveis nessa localizacao. O ficheiro Packages e normalmente encontrado no directorio .../dists/nome-da-distribuicao/componente/arquitectura: por exemplo, .../dists/stable/main/binary-i386/Packages. Consiste numa serie de registos de varias linhas, um para cada pacote disponivel nesse directorio. Apenas duas linhas em cada registo sao relevantes para definir prioridades do APT: a linha Package: fornece o nome do pacote a linha Version: fornece o numero de versao do pacote nomeado O ficheiro Release fica normalmente no directorio .../dists/nome da distribuicao: por exemplo, .../dists/stable/Release, ou .../dists/trixie/Release. Consiste num unico registo de varias linhas que se aplica a todos os pacotes na arvore de directorios sob o seu pai. Ao contrario do ficheiro Packages, quase todas as linhas num ficheiro Release sao relevantes para definir as prioridades do APT: a linha Archive: ou Suite: nomeia o arquivo ao qual pertencem todos os pacotes na arvore de directorios. Por exemplo, a linha "Archive: stable" ou "Suite: stable" especifica que todos os pacotes na arvore de directorios abaixo do pai do ficheiro Release estao num arquivo stable. Especificar este valor no ficheiro de preferencias do APT ira requerer a linha: Pin: release a=stable a linha Codename: nomeia o nome de codigo a qual todos os pacotes na arvore de directorios pertencem. Por exemplo, a linha "Codename: forky" especifica que todos os pacotes na arvore de directorios abaixo do pai do ficheiro Release pertencem a uma versao chamada forky. Especificar este valor no ficheiro de preferencias do APT requer a linha: Pin: release n=forky a linha Version: nomeia a versao de lancamento. Por exemplo, os pacotes na arvore podem pertencer ao lancamento de Debian versao 13. Note que nao ha normalmente um numero de versao para as distribuicoes testing e unstable. porque ainda nao foram lancadas. Especificar isto no ficheiro de preferencias do APT ira requerer uma das seguintes linhas: Pin: release v=13 Pin: release a=stable, v=13 Pin: release 13 a linha Component: nomeia o componente de licenciamento associado com os pacotes na arvore de directorios do ficheiro Release. Por exemplo, a linha "Component: main" especifica que todos os pacotes na arvore de directorios sao do componente main, o que implica que estao licenciados sob os termos listados em Debian Free Software Guidelines. Especificar este componente no ficheiro de preferencias do APT ira requerer a linha: Pin: release c=main a linha Origin: nomeia a originador dos pacotes na arvore de directorios do ficheiro Release. Geralmente, isto e Debian. Especificar esta etiqueta no ficheiro de preferencias do APT ira requerer a linha: Pin: release o=Debian a linha Label: nomeia a etiqueta dos pacotes na arvore de directorios do ficheiro Release. Geralmente, isto e Debian. Especificar esta etiqueta no ficheiro de preferencias do APT ira requerer a linha: Pin: release l=Debian Todos os ficheiros Packages e Release obtidos das localizacoes listadas no ficheiro sources.list(5) sao armazenados no directorio /var/lib/apt/lists, ou no ficheiro nomeado pela variavel Dir::State::Lists no ficheiro apt.conf. Por exemplo, o ficheiro debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release contem o ficheiro Release obtido do site debian.lcs.mit.edu para ficheiros da arquitectura binary-i386 do componente contrib da distribuicao unstable. Linhas Opcionais num Registo de Preferencias do APT Cada registo no ficheiro de preferencias do APT por comecar opcionalmente com uma ou mais linhas comecadas com a palavra Explanation:. Isto disponibiliza um espaco para comentarios. EXEMPLOS Acompanhando Stable O seguinte ficheiro de preferencias do APT ira fazer com que o APT atribua uma prioridade mais alta que o predefinido (500) a todos as versoes de pacotes que pertencem a uma distribuicao stable e uma prioridade proibitivamente baixa a versoes de pacotes pertencentes a outras distribuicoes Debian. Explicacao: Desinstala ou nao instala quaisquer versoes de pacotes originais Explicacao: Debian para alem daquelas da distribuicao stable Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10 Com um ficheiro sources.list(5) apropriado e o ficheiro de preferencias acima, qualquer dos seguintes comandos ira fazer com que o APT actualize para as versoes stable mais recentes. apt-get install nome-do-pacote apt-get upgrade apt-get dist-upgrade O seguinte comandos ira fazer com que o APT actualize o pacote especificado para a versao mais recente da distribuicao testing; o pacote nao sera actualizado de novo a menos que seja executado este comando outra vez. apt-get install pacote/testing Acompanhando Testing ou Unstable O seguinte ficheiro de preferencias do APT ira fazer com que o APT atribua uma prioridade alta a versoes de pacotes da distribuicao testing, uma prioridade mais baixa a versoes de pacotes da distribuicao unstable, e uma prioridade proibitivamente baixa a versoes de pacotes de outras distribuicoes Debian. 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 ficheiro sources.list(5) apropriado e o ficheiro de preferencias acima, qualquer dos seguintes comandos ira fazer com que o APT actualize para as versoes testing mais recentes. apt-get install nome-do-pacote apt-get upgrade apt-get dist-upgrade O comando seguinte ira fazer com que o APT actualize o pacote especificado para a versao mais recente da distribuicao unstable. Posteriormente, o apt-get upgrade ira actualizar o pacote para a versao testing mais recente se essa for mais recente que a versao instalada, caso contrario, para a versao unstable mais recente se essa for mais recente que a versao instalada. apt-get install pacote/unstable Acompanhando a evolucao de um nome de codigo de lancamento O seguinte ficheiro de preferencias do APT ira fazer com que o APT atribua uma prioridade mais alta que a predefinida (500) a todas as versoes de pacotes pertencentes a um nome de codigo especificado de uma distribuicao com uma prioridade proibitivamente baixa a versoes de pacotes pertencentes a outras distribuicoes, nomes de codigo ou arquivos Debian. Note que com estas preferencias o APT ira seguir a migracao de um lancamento a partir do arquivo testing para stable e mais tarde oldstable. Se voce que seguir por exemplo o progresso em testing nao obstante as alteracoes do nome de codigo, voce deve usar as configuracoes exemplo acima. Explicacao: Desinstala ou nao instala nenhumas versoes de pacotes originais Debian Explicacao: para alem daquelas da distribuicao com nome de codigo forky ou sid Package: * Pin: release n=forky Pin-Priority: 900 Explicacao: Debian unstable tem sempre o nome de codigo sid Package: * Pin: release a=sid Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10 Com um ficheiro sources.list(5) apropriado e o ficheiro de preferencias acima, qualquer dos seguintes comandos fara com que o APT actualize para a versao mais recente no lancamento com nome de codigo forky. apt-get install nome-do-pacote apt-get upgrade apt-get dist-upgrade O seguinte comando ira fazer com que o APT actualize o pacote especificado para a versao mais recente da distribuicao sid. Posteriormente, apt-get upgrade ira actualizar o pacote para a versao forky mais recente se essa for mais recente que a versao instalada, caso contrario, para a versao sid mais recente se essa for mais recente que a versao instalada. apt-get install pacote/sid FICHEIROS /etc/apt/preferences Ficheiro de preferencias de versao. Isto e onde voce deve especificar "pinning", isto e, uma preferencia para obter certos pacotes A partir de uma fonte separada ou a partir duma versao diferente de uma distribuicao. Item de Configuracao: Dir::Etc::Preferences. /etc/apt/preferences.d/ Ficheiros fragmentados para as preferencias de versao. Item de Configuracao: Dir::Etc::PreferencesParts. VEJA TAMBEM apt-get(8) apt-cache(8) apt.conf(5) sources.list(5) BUGS pagina de bugs do APT[1]. Se deseja reportar um bug no APT, por favor veja /usr/share/doc/debian/bug-reporting.txt ou o comando reportbug(1). TRADUCAO A traducao Portuguesa foi feita por Americo Monteiro de 2009 a 2012. A traducao foi revista pela equipa de traducoes portuguesas da Debian . Note que este documento traduzido pode conter partes nao traduzidas. Isto e feito propositadamente, para evitar perdas de conteudo quando a traducao esta atrasada relativamente ao conteudo original. AUTOR Equipa do APT NOTAS 1. pagina de bugs do APT https://bugs.debian.org/src:apt APT 3.0.0 22 Agosto 2024 APT_PREFERENCES(5)