Capítulo 2. Gestão de pacotes Debian

Índice

2.1. Pré-requisitos da gestão de pacotes Debian
2.1.1. Sistema de gestão de pacotes Debian
2.1.2. Configuração de pacotes
2.1.3. Precauções básicas
2.1.4. A vida com atualizações eternas
2.1.5. Básico do arquivos Debian
2.1.6. Debian é 100% software livre
2.1.7. Dependências de pacote
2.1.8. O fluxo de eventos da gestão de pacotes
2.1.9. Primeira resposta a problemas com a gestão de pacotes
2.1.10. Como escolher os pacotes Debian
2.1.11. Como lidar com requisitos contraditórios
2.2. Operações básicas de gestão de pacotes
2.2.1. apt vs. apt-get / apt-cache contra o aptitude
2.2.2. Operações básicas de gestão de pacotes com a linha de comandos
2.2.3. Uso interativo do aptitude
2.2.4. Teclas de atalho do aptitude
2.2.5. Vistas de pacote no aptitude
2.2.6. Opções do método de pesquisa com o aptitude
2.2.7. A fórmula regex do aptitude
2.2.8. Resolução de dependências do aptitude
2.2.9. Relatórios (logs) de atividade de pacotes
2.3. Exemplos de operações do aptitude
2.3.1. Procurar pacotes interessantes
2.3.2. Listagem de pacotes com correspondência por expressão regular nos nomes de pacotes
2.3.3. Explorar com a correspondência de expressão regular
2.3.4. Purgar pacotes removidos definitivamente
2.3.5. Acertar o estado auto/manual de instalação
2.3.6. atualização total ao sistema
2.4. Operações de gestão avançada de pacotes
2.4.1. Operações de gestão avançada de pacotes com linha de comandos
2.4.2. Verificação dos ficheiros pacotes instalados
2.4.3. Salvaguardar para problemas de pacotes
2.4.4. Procurar nos meta-dados do pacote
2.5. Os interiores da gestão de pacotes Debian
2.5.1. Meta dados do arquivo
2.5.2. Ficheiro "Release" de nível de topo e autenticidade:
2.5.3. Ficheiros "Release" do nível de arquivo
2.5.4. Obter os meta dados do pacote
2.5.5. O estado dos pacote para o APT
2.5.6. O estado de pacotes para o aptitude
2.5.7. Copias locais dos pacotes obtidos
2.5.8. Nomes de ficheiros de pacotes Debian
2.5.9. O comando dpkg
2.5.10. O comando update-alternatives
2.5.11. O comando dpkg-statoverride
2.5.12. O comando dpkg-divert
2.6. Recuperação de um sistema danificado
2.6.1. Falha na instalação devido a dependências em falta
2.6.2. Erros de armazenamento em cache dos dados do pacote
2.6.3. Incompatibilidade com configurações antigas de utilizador
2.6.4. Pacotes diferentes com ficheiros sobrepostos
2.6.5. Corrigir script problemático de pacote
2.6.6. Recuperação com o comando dpkg
2.6.7. Recuperar dados de seleção de pacotes
2.7. Dicas para a gestão de pacotes
2.7.1. Quem fez o upload do pacote?
2.7.2. Limitar a largura de banda de descarga para o APT
2.7.3. Descarga e atualização automática de pacotes
2.7.4. Atualizações e Backports
2.7.5. Arquivos de pacotes externos
2.7.6. Pacotes de fontes mistas de arquivos sem apt-pinning
2.7.7. Ajustar a versão candidata com o apt-pinning
2.7.8. Bloquear pacotes instalados por "Recomendados"
2.7.9. Acompanhar testing com alguns pacotes de unstable
2.7.10. Acompanhar unstable com alguns pacotes de experimental
2.7.11. Downgrade de emergência
2.7.12. O pacote equivs
2.7.13. Portar um pacote ao sistema stable
2.7.14. Servidor proxy para o APT
2.7.15. Mais leituras sobre a gestão de pacotes
[Nota] Nota

Este capítulo é escrito a assumir que o lançamento estável mais recente tem o nome de código: bookworm.

A fonte de dados do sistema APT é coletivamente referida como a lista de fontes neste documento. Isto pode ser definido em qualquer parte do ficheiro "/etc/apt/sources.list", "/etc/apt/sources.list.d/*.list" ou "/etc/apt/sources.list.d/*.source".

Debian é uma organização voluntária que constrói distribuições consistentes de pacotes binários pré-compilados de software livre e distribui-os a partir do arquivo dele.

O arquivo Debian é oferecido por muitos sites mirror remotos para acesso através de métodos HTTP e FTP. Também está disponível em CD-ROM/DVD.

O atual sistema de gestão de pacotes Debian que pode utilizar todos estes recursos é o Ferramenta de instalações avançada (APT).

O sistema de gestão de pacotes Debian, quando utilizado de modo apropriado, oferece ao utilizador o instalar de conjuntos consistentes de pacotes binários no sistema a partir do arquivo. atualmente, existem 74165 pacotes disponíveis para a arquitectura amd64.

O sistema de gestão de pacotes Debian tem um histórico rico e muitas opções de escolha para o programa cliente do utilizador e de método de acesso ao arquivo. Atualmente, recomendamos o seguinte:

  • apt(8) para todas as operações de linha de comandos interativas, incluindo instalação, remoção e atualização de pacotes.

  • apt-get(8) para chamar o sistema de gestão de pacotes Debian a partir de scripts. É também uma opção regressiva quando o apt não está disponível (comum em sistemas Debian antigos).

  • aptitude(8) para uma interface de texto interactiva para gerir os pacotes instalados e procurar os pacotes disponíveis.


[Atenção] Atenção

Não instale pacotes de misturas aleatórias de suites. Provavelmente vai quebrar a consistência do pacote o que requer conhecimentos profundos de gestão do sistema tais como ABI compilador, versão de biblioteca, funcionalidades do interpretador, etc.

O administrador de sistemas Debian novato deve ficar com a suite stable de Debian enquanto aplica apenas atualizações de segurança. Até compreender muito bem o sistema Debian, você deve seguir as seguintes precauções.

  • Não inclua testing ou unstable na lista de fontes.

  • Não misture o Debian padrão com outros repositórios não-Debian como o Ubuntu na lista de fontes.

  • Não crie "/etc/apt/preferences".

  • Não altere o comportamento predefinido das ferramentas de gestão de pacotes através de ficheiros de configuração sem conhecer os seus impactos totais.

  • Não instale pacotes aleatórios com "dpkg -i qualquer_pacote".

  • Nunca instale pacotes aleatórios com "dpkg --force-all -i qualquer_pacote".

  • Não apague ou altere os ficheiros em "/var/lib/dpkg/".

  • Não sobrescreva ficheiros do sistema ao instalar programas compilados a partir do código-fonte.

    • Instale-os em "/usr/local" ou "/opt", se necessário.

Os efeitos não-compatíveis causados pela violação das precauções acima para com o sistema de gestão de pacotes Debian podem deixar o seu sistema inutilizável.

O administrador de sistema Debian sério que corre servidores de missões críticas, deve tomar precauções extra.

  • Não instale nenhuns pacotes incluindo as atualizações de segurança da Debian sem os testar completamente com as suas configurações particulares sob condições seguras.

    • Como o administrador do sistema é o responsável final pelo seu sistema.

    • A longa história de estabilidade do sistema Debian não é uma garantia por si só.

[Cuidado] Cuidado

Para o seu servidor de produção a suite stable é recomendada com as atualizações de segurança. O mesmo pode ser dito para PCs de ambiente de trabalho onde pode dispor de esforços limitados de administração.

Apesar dos meus avisos acima, sei que muitos leitores deste documento podem querer executar as suites testing ou unstable mais recentes.

O Esclarecimento com o seguinte salva uma pessoa do karma da eterna luta do inferno das atualizações e permite-lhe alcançar o nirvana de Debian.

Esta lista destina-se ao ambiente de trabalho auto-administrado.

  • Use a suite testing já que esta é na prática a atualização contínua gerida automaticamente pela infraestrutura de controlo de qualidade do repositório Debian, como a integração contínua Debian, as práticas de upload somente de código fonte e o acompanhamento de transição de bibliotecas. Os pacotes na suite testing são atualizados com frequência suficiente para oferecer todos os recursos mais recentes.

  • Definir o nome de código correspondente ao conjunto testing ("trixie" durante o ciclo de lançamento bookworm-as-stable ) na lista de fontes.

  • Atualize manualmente este codinome na lista de fontes para o novo somente após avaliar a situação por si mesmo por cerca de um mês após o lançamento da suíte principal. A lista de discussão de usuários e desenvolvedores Debian são boas fontes de informação para isso também.

A utilização da suite instável não é recomendada. A suite instável é boa para depurar pacotes como programador mas tende a expor a riscos desnecessários para a utilização normal do ambiente de trabalho. Mesmo que a suite instável do sistema Debian pareça muito estável na maioria das vezes, houve alguns problemas com pacotes e alguns deles não foram tão triviais de resolver.

Aqui estão algumas idéias básicas de medidas de precaução para assegurar uma recuperação rápida e fácil de bugs em pacotes Debian.

  • Faça um sistema de duplo arranque ao instalar a suite stable do sistema Debian noutra partição

  • Tenha o CD de instalação 'à mão' para o arranque de recuperação

  • Considere instalar o apt-listbugs para verificar informação do Debian Bug Tracking System (BTS) antes das atualizações

  • Conheça o suficiente da infraestrutura do sistema de pacotes para contornar o problema

[Cuidado] Cuidado

Se não conseguir fazer nenhumas destas ações de precaução, provavelmente não está preparado para as suites testing e unstable.

[Dica] Dica

A política oficial do arquivo Debian está definida em Manual de Políticas Debian, Capítulo 2 - O Arquivo Debian.

Vamos olhar ao arquivo Debian a partir da perspectiva do utilizador do sistema.

Para um utilizador do sistema, o arquivo Debian é acedido utilizando o sistema APT.

O sistema APT especifica a sua fonte de dados como a lista de fontes e esta é descrita em sources.list(5).

Para o sistema bookworm com o acesso HTTP típico, a lista de fontes no estilo de uma só linha é a seguinte:

deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free

Alternativamente, a lista de fontes equivalente no estilo deb822 é a seguinte.

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: bookworm
Components: main non-free-firmware contrib non-free

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: bookworm-security
Components: main non-free-firmware contrib non-free

Os pontos principais da lista de fontes são os seguintes.

  • Formato de uma só linha

    • Os seus ficheiros de definição estão no ficheiro "/etc/apt/sources.list" e nos ficheiros "/etc/apt/sources.list.d/*.list".

    • Cada linha define a fonte de dados para o sistema APT.

    • A linha "deb" define os pacotes binários.

    • A linha "deb-src" define os pacotes fonte.

    • O 1º argumento é o URL raiz do arquivo Debian.

    • O segundo argumento é o nome da distribuição, utilizando o nome da suite ou o nome de código.

    • O 3º argumento e seguintes são a lista de nomes de área de arquivo válidos do arquivo Debian.

  • Estilo do formato Deb822

    • Os seus ficheiros de definição estão nos ficheiros "/etc/apt/sources.list.d/*.source".

    • Cada bloco de linhas separado por uma linha em branco define a fonte de dados para o sistema APT.

    • A estrofe "Types:" define a lista de tipos tais como "deb" e "deb-src".

    • A estrofe "URIs:" define a lista de URIs raiz do repositório Debian.

    • A estrofe "Suites:" define a lista de nomes de distribuição utilizando o nome da suite ou o nome de código.

    • A estrofe "Components:" define a lista de nomes de áreas de arquivo válidas do arquivo Debian.

A definição para "deb-src" pode ser omitida com segurança se for apenas para aptitude que não acede aos meta dados relacionados com a fonte. Acelera as atualizações dos meta dados do arquivo.

O URL pode ser "https://", "http://", "ftp://", "file://", ....

As linhas que começam por "#" são comentários e são ignoradas.

Aqui, tenho tendência para utilizar o nome de código "bookworm" ou "trixie" em vez do nome da suite "stable" ou "testing" para evitar surpresas quando a próxima stable for lançada.

[Dica] Dica

Se "sid" for utilizado no exemplo acima em vez de "bookworm", a linha "deb: http://security.debian.org/ ..." ou o seu conteúdo equivalente em deb822 para atualizações de segurança na lista de fontes não é necessária. Isto porque não existe nenhum arquivo de atualizações de segurança para "sid" (unstable).

Aqui está a lista de URLs dos sites de arquivo Debian e o nome da suite ou nome de código usado no ficheiro de configuração após o lançamento do bookworm.


[Cuidado] Cuidado

Apenas a suite stable pura com atualizações de segurança proporciona a melhor estabilidade. Executar maioritariamente a suite stable misturada com alguns pacotes da testing ou da suite unstable é mais arriscado do que executar a versão unstable pura devido a incompatibilidade de versões de bibliotecas, etc. Se precisa mesmo da última versão de alguns programas sob lançamento stable, por favor use pacotes dos serviços stable-updates e backports (veja Secção 2.7.4, “Atualizações e Backports”). Estes serviços devem ser usados com cuidado extra.

[Cuidado] Cuidado

Basicamente deve listar apenas uma das suites stable, testing, ou unstable na linha "deb". Se listar qualquer combinação das suites stable, testing e unstable na linha "deb", os programas do APT abrandam enquanto apenas o arquivo mais recente é efectivo. Faz sentido várias listagens quando o ficheiro "/etc/apt/preferences" é utilizado com objetivos claros (veja Secção 2.7.7, “Ajustar a versão candidata com o apt-pinning).

[Dica] Dica

Para o sistema Debian com a suite stable, é uma boa ideia incluir o conteúdo com "http://security.debian.org/" na lista de fontes para ativar as atualizações de segurança como no exemplo acima.

[Nota] Nota

Os bugs de segurança para a suite estável são corrigidos pela equipa de segurança Debian. Esta atividade tem sido bastante rigorosa e fiável. Os existentes na suite testing podem ser corrigidos pela equipa de segurança de Debian testing. Por várias razões, esta atividade não é tão rigorosa como a da stable e poderá ter de esperar pela migração dos pacotes de unstable corrigidos para o arquivo testing. Os existentes no repositório unstable são corrigidos pelo responsável individual. Pacotes unstable mantidos ativamente estão normalmente em boa forma, aproveitando as últimas correções de segurança do autor. Veja a FAQ de segurança do Debian para saber como o Debian lida com bugs de segurança.


Aqui a quantidade de pacotes em cima é para a arquitectura amd64. A área main disponibiliza o sistema Debian (veja Secção 2.1.6, “Debian é 100% software livre”).

A organização do arquivo Debian pode ser melhor estudada ao apontar o seu navegador a cada URL de arquivo seguido de dists ou pool.

A distribuição é referida de duas maneiras, a suite ou o nome-de-código. A palavra distribuição é usada alternativamente como o sinónimo de suite em muitas documentações. A relação entre a suite e o nome de código pode ser resumida ao seguinte.


A história dos nomes de código está descrita em Debian FAQ: 6.2.1 Que outros nomes de código foram usados no passado?

Na terminologia estrita do arquivo Debian, a palavra "secção" é utilizada especialmente para categorizar os pacotes pela área de aplicação. (Apesar da palavra "secção main" poder por vezes ser utilizada para descrever a área do arquivo Debian com o nome "main".)

Cada vez que é feito um novo upload por um programador de Debian (DD) para o arquivo unstable (por processamento do incoming), é necessário que o DD assegure que os pacotes enviados sejam compatíveis com o conjunto de pacotes mais recente no arquivo unstable mais recente.

Se o DD quebrar esta compatibilidade intencionalmente para uma atualização importante de biblioteca ou etc., geralmente existe um anúncio na lista de email debian-devel etc.

Antes que um conjunto de pacotes seja movido pelo script de manutenção do arquivo Debian do arquivo unstable para o arquivo testing, o script de manutenção do arquivo não verifica apenas a maturidade (cerca de 2-10 dias de idade) e o estado dos relatórios de bug RC para os pacotes mas também tenta assegurar que sejam compatíveis com o conjunto de pacotes mais recente no arquivo testing. Este processo torna o arquivo testing muito atual e utilizável.

Através do processo de congelamento gradual do arquivo liderado pela equipa de lançamento, o arquivo testing é amadurecido para o tornar completamente consistente e livre de bugs com algumas intervenções manuais. Então o novo lançamento stable é criado ao atribuir o nome de código do antigo arquivo testing ao novo arquivo stable e a criar um novo nome de código para o novo arquivo testing. O conteúdo inicial do novo arquivo testing é exatamente o mesmo que o arquivo stable recentemente lançado.

Ambos os arquivos unstable e testing podem sofrer falhas temporárias devido a vários fatores:

  • Envio de pacotes danificados ao arquivo (maioritariamente para unstable)

  • Atraso de aceitação dos novos pacotes no arquivo (maioritariamente para unstable)

  • Problemas com o tempo de sincronização do arquivo (tanto para testing como unstable)

  • Intervenção manual no arquivo, tal como remoção de pacotes (mais para testing) etc.

Se alguma vez decidir utilizar estes arquivos, deverá ser capaz de corrigir ou contornar este tipo de problemas.

[Cuidado] Cuidado

Durante alguns meses após um novo lançamento de stable, a maioria dos utilizadores de ambientes de trabalho devem usar o arquivo stable com as atualizações de segurança dele mesmo que normalmente usem os arquivos unstable ou testing. Durante este período de transição, ambos arquivos unstable e testing não são bons para a maioria das pessoas. O seu sistema é difícil de manter em boas condições de funcionamento com o arquivo unstable porque sofre de vagas de grandes atualizações nos pacotes principais. O arquivo testing também não é útil porque contém praticamente o mesmo conteúdo que o arquivo stable mas sem o suporte de segurança dele (Anúncio-de-segurança-de-testing-Debian-2008-12). Após um mês ou mais, os arquivos de unstable ou testing podem ser úteis se for cuidadoso.

[Dica] Dica

Quando se acompanha o arquivo testing, um problema causado por um pacote removido é geralmente contornado ao instalar o pacote correspondente do arquivo unstable que foi lançado para correcção de bug.

Veja Manual de Políticas Debian para as definições do arquivo.

Debian é 100% software livre por causa do seguinte:

  • Por predefinição, Debian instala apenas software livre para respeitar as liberdades dos utilizadores.

  • Debian disponibiliza apenas software livre no main.

  • Debian recomenda correr apenas software livre do main.

  • Nenhum pacote main depende nem recomenda pacotes na non-free nem na non-free-firmware nem na contrib.

Algumas pessoas pensam se os 2 seguintes factos se contradizem ou não.

Estes não se contradizem, devido ao seguinte.

  • O sistema Debian é 100% livre e os seus pacotes estão alojados em servidores Debian na área main.

  • Pacotes fora do sistema Debian são hospedados por servidores Debian nas áreas non-free, non-free-firmware e contrib.

Isto é perfeitamente explicado nos termos 4º e 5º do Debian Social Contract:

  • As nossas prioridades são os nossos utilizadores e o software livre

    • Seremos guiados pelas necessidades dos nossos utilizadores e da comunidade de software livre. Iremos pôr o interesse deles no topo das nossas prioridades. Iremos suportar as necessidades dos nossos utilizadores para operação em muitos ambientes de computação distintos. Não nos oporemos a software não-livre que se destine a ser utilizado em sistemas Debian, nem tentaremos cobrar qualquer taxa a pessoas que criem ou utilizem tais trabalhos. Iremos permitir que terceiros criem distribuições a conter o sistema Debian com outros trabalhos, sem qualquer taxa para nós. Para apoio destes objetivos, iremos disponibilizar um sistema integrado de materiais de alta qualidade sem restrições legais que previnam tais utilizações do sistema.

  • Trabalhos que não coincidem com os nossos standards de software livre

    • Nós reconhecemos que alguns de nossos utilizadores requerem o uso de trabalhos que não estão de acordo com a Definição Debian de Software Livre. Nós criamos áreas "non-free", "non-free-firmware" e "contrib" no nosso repositório para estes trabalhos. Os pacotes nestas áreas não são parte do sistema Debian, embora tenham sido configurados para uso com o Debian. Nós encorajamos os fabricantes de CDs a ler as licenças dos pacotes nestas áreas e determinar se eles podem distribuir os pacotes em seus CDs. Assim, embora os trabalhos não-livres não façam parte da Debian, nós suportamos a sua utilização e fornecemos infraestruturas para pacotes não-livres (tais como o nosso sistema de acompanhamento de bugs e listas de correio eletrónico). A média oficial da Debian pode incluir firmware que de outra forma não é parte do sistema Debian para permitir o uso da Debian com hardware que requer tal firmware.

[Nota] Nota

O texto atual do quinto termo no atual Contrato Social Debian 1.2 é ligeiramente diferente do texto acima. Este desvio editorial é intencional para tornar este documento do utilizador consistente sem alterar o conteúdo real do Contrato Social.

Os utilizadores devem estar cientes dos riscos de usar pacotes das áreas non-free, non-free-firmware e contrib:

  • falta de liberdade para tais pacotes de software

  • falta de suporte Debian em tais pacotes de software (Debian não pode suportar devidamente software sem ter acesso ao seu código-fonte.)

  • contaminação do seu sistema Debian 100% livre

As Debian Free Software Guidelines são os standards de software livre para Debian. Debian interpreta "software" no âmbito mais amplo incluindo documentação, firmware, logo e dados artísticos no pacote. Isto torna os standards de software livre de Debian muito rigorosos.

Tipicamente os pacotes da non-free, non-free-firmware e da contrib incluem pacotes distribuídos livremente dos seguintes tipos:

  • Pacotes de documentação sob a GNU Free Documentation License com secções invariantes tais como as do GCC e do Make. (a maioria encontra-se na secção non-free/doc.)

  • Pacotes de firmware contendo dados binários sem fonte, tais como os listados em Secção 9.10.5, “Controladores de hardware e firmware” como non-free-firmware. (maioritariamente encontrados na secção non-free-firmware/kernel.)

  • Pacotes de fontes e jogos com restrições comerciais de utilização e/ou modificação de conteúdo.

Por favor note que a quantidade de pacotes de non-free, non-free-firmware e contrib é menos de 2% dos pacotes de main. Ativar o acesso às áreas non-free, non-free-firmware e contrib não turva a fonte dos pacotes. A utilização do ecrã interativo do aptitude(8) disponibiliza-lhe visibilidade e controlo total sobre que pacotes estão instalados e a partir de qual das áreas, para manter o seu sistema livre conforme desejar.

O sistema Debian oferece um conjunto consistente de pacotes binários através do mecanismo de declaração de dependências binárias dele com versões nos campos do ficheiro de controle. Aqui está uma definição deles um pouco simplificada:

  • "Dependências"

    • Isto declara uma dependência absoluta e todos os pacotes listados neste campo têm de ser instalados ao mesmo tempo ou com antecedência.

  • "Pré-Dependências"

    • Isto é como o Depends, excepto que requer a instalação completa de todos os pacotes listados com antecedência.

  • "Recomendados"

    • Isto declara uma dependência forte mas não absoluta. A maioria dos utilizadores não iriam querer o pacote a menos que todos os pacotes listados neste campo estejam instalados.

  • "Sugeridos"

    • Isto declara uma dependência fraca. Muitos utilizadores deste pacote podem beneficiar ao instalar os pacotes listados neste campo mas podem ter as funções razoáveis sem eles.

  • "Melhoramentos"

    • Isto declara uma dependência fraca como Sugerida mas funciona na direção oposta.

  • "Quebras"

    • Isto declara uma incompatibilidade do pacote normalmente com alguma especificação de versão. Geralmente a resolução é atualizar todos os pacotes listados neste campo.

  • "Conflitos"

    • Isto declara uma incompatibilidade absoluta. Todos os pacotes listados neste campo têm de ser removidos para instalar este pacote.

  • "Substitui"

    • Isto é declarado quando os ficheiros instalados por este pacote substituem ficheiros nos pacotes listados.

  • "Proporciona"

    • Isto é declarado quando este pacote disponibiliza todos os ficheiros e funcionalidades dos pacotes listados.

[Nota] Nota

Por favor note que definir "Provides", "Conflicts" e "Replaces" em simultâneo a um pacote virtual é a configuração sã. Isto assegura que apenas um pacote real que disponibilize este pacote virtual possa ser instalado de cada vez.

A definição oficial incluindo dependências de fonte encontra-se em O Manual de Políticas: Capítulo 7 - Declarar relações entre pacotes.

Aqui está um resumo do fluxo de eventos simplificado da gestão de pacotes pelo APT.

Aqui, saltei intencionalmente detalhes técnicos por causa da visão geral.

Qualquer que seja a suite de sistema Debian que decida utilizar, pode ainda desejar correr versões de programas que não estão disponíveis nessa suite. Mesmo que encontre pacotes binários de tais programas noutras suites Debian ou noutros recursos não-Debian, os seus requisitos podem entrar em conflito com o seu sistema Debian atual.

Apesar de poder ajustar o sistema de gestão de pacotes com a técnica apt-pinning, etc., como descrito em Secção 2.7.7, “Ajustar a versão candidata com o apt-pinning para instalar esses pacotes binários dessincronizados, essas abordagens de ajuste têm apenas casos de utilização limitados uma vez que podem quebrar esses programas e o seu sistema.

Antes de instalar brutalmente tais pacotes fora de sincronia, você deve procurar todas as soluções técnicas alternativas mais seguras disponíveis que sejam compatíveis com o seu sistema Debian atual.

As operações de gestão de pacotes baseadas em repositório no sistema Debian podem ser executas por muitas ferramentas de gestão de pacotes baseadas no APT e disponíveis no sistema Debian. Aqui vamos explicar 3 ferramentas de gestão básica de pacotes: apt, apt-get / apt-cache e aptitude.

Para as operações de gestão de pacotes que envolvam a instalação ou atualização de meta-dados do pacote, necessita de ter privilégios de root.

Apesar do aptitude ser uma ferramenta interactiva muito boa a qual o autor usa principalmente, deve ser advertido de alguns factos:

Os comandos apt-get e apt-cache são as ferramentas de gestão de pacotes baseadas no APT mais básicas.

  • O apt-get e o apt-cache oferecem apenas a interface de linha de comandos.

  • O apt-get é mais apropriado para uma atualização maior ao sistema entre lançamentos, etc.

  • O apt-get oferece um resolvedor de dependências de pacotes robusto.

  • apt-get é menos exigente em recursos de hardware. Consome menos memória e é mais rápido.

  • O apt-cache oferece uma busca baseada em expressões regulares standard no nome do pacote e na descrição.

  • O apt-get e o apt-cache podem gerir várias versões de pacotes a utilizar o /etc/apt/preferences mas é um pouco incómodo.

O comando apt é uma interface de linha de comandos de alto nível para gestão de pacotes. É basicamente um revestimento dos apt-get, apt-cache e comandos semelhantes, originalmente destinada a ser uma interface de utilizador final e ativa por predefinição algumas opções melhor apropriadas para utilização interativa.

  • O apt disponibiliza uma barra de progresso amigável quando se instala pacotes a usar o apt install.

  • O apt irá remover por predefinição os pacotes .deb em cache após instalação com sucesso dos pacotes descarregados.

[Dica] Dica

É recomendado aos utilizadores usarem o novo comando apt(8) para uso interativo e usarem os comandos apt-get(8) e apt-cache(8) em script de shell.

O comando aptitude é a ferramenta de gestão de pacotes baseada no APT mais versátil.

  • O aptitude oferece a interface de utilizador de texto interactiva de ecrã completo.

  • O aptitude também oferece uma interface de utilizador de linha de comandos.

  • O aptitude é mais apropriado para a gestão de pacotes interactiva diária como inspecionar os pacotes instalados e procurar pacotes disponíveis.

  • O aptitude é mais exigente em recursos de hardware. Consome mais memória e é mais lento.

  • O aptitude oferece um busca baseada em expressões regulares avançada em todos os meta-dados dos pacotes.

  • O aptitude pode gerir várias versões de pacotes sem utilizar o /etc/apt/preferences e é bastante intuitivo.

Aqui estão algumas operações básicas de gestão de pacotes com a linha de comandos a usar apt(8), aptitude(8) e apt-get(8) /apt-cache(8).

Tabela 2.6. Operações básicas de gestão de pacotes com a linha de comandos a utilizar apt(8), aptitude(8) e apt-get(8) /apt-cache(8)

sintaxe do apt sintaxe do aptitude sintaxe do apt-get/apt-cache descrição
apt update aptitude update apt-get update atualiza os meta-dados do arquivo de pacotes
apt install foo aptitude install foo apt-get install foo instala a versão candidata do pacote "foo" com as suas dependências
apt upgrade aptitude safe-upgrade apt-get upgrade instala as versões candidatas dos pacotes instalados sem remover quaisquer outros pacotes
apt full-upgrade aptitude full-upgrade apt-get dist-upgrade instala as versões candidatas dos pacotes instalados a remover outros pacotes caso necessário
apt remove foo aptitude remove foo apt-get remove foo remove o pacote "foo" a deixar os seus ficheiros de configuração
apt autoremove N/D apt-get autoremove remove os pacotes auto-instalados que já não sejam necessários
apt purge foo aptitude purge foo apt-get purge foo purga o pacote "foo" com os seus ficheiros de configuração
apt clean aptitude clean apt-get clean limpa completamente o repositório local de ficheiros de pacotes obtidos
apt autoclean aptitude autoclean apt-get autoclean limpa os pacotes desatualizados do repositório local dos ficheiros de pacotes recebidos
apt show foo aptitude show foo apt-cache show foo mostra informação detalhada acerca do pacote "foo"
apt search regex aptitude search regex apt-cache search regex procura pacotes que correspondem à expressão-regular
N/D aptitude why regex N/D explica a razão porque o pacotes que correspondem à expressão_regular devem ser instalados
N/D aptitude why-not regex N/D explica a razão porque o pacotes que correspondem à expressão_regular não podem ser instalados
apt list --manual-installed aptitude search '~i!~M' apt-mark showmanual lista os pacotes instalados manualmente

apt / apt-get e aptitude podem ser misturados sem grandes problemas.

O "aptitude why expressão_regular" pode listar mais informação por "aptitude -v why expressão_regular". Informação semelhante pode ser obtida por apt rdepends pacote" ou "apt-cache rdepends pacote".

Quando o comando aptitude é arrancado em modo de linha de comandos e enfrenta alguns problemas como conflitos de pacotes, pode mudar para modo interativo em ecrã total, ao pressionar a tecla "e", mais tarde na linha de comandos.

[Nota] Nota

Apesar do comando aptitude vir com ricas funcionalidades como o resolvedor avançado de pacotes dele, esta complexidade já causou (ou pode ainda causar) algumas regressões como os Bug #411123, Bug #514930 e Bug #570377. Em caso de dúvidas, por favor utilize os comandos apt, apt-get e apt-cache em vez do comando aptitude.

Pode dar opções de comando logo após "aptitude".


Para mais veja aptitude(8) e o "Manual de utilizador do aptitude" em "/usr/share/doc/aptitude/README".

As combinações de teclas notáveis para explorar o estado dos pacotes e definir uma "ação planeada" neles neste modo de ecrã total são as seguintes:


A especificação de nome de ficheiro da linha de comandos ou do aviso de menu após pressionar "l" e "//" toma a expressão regular do aptitude conforme descrito em baixo. A expressão regular do aptitude pode corresponder explicitamente a um nome de pacote a utilizar uma cadeia começada por "~n" e seguida do nome do pacote.

[Dica] Dica

Necessita pressionar "U", no interface visual, para ter todos os pacotes instalados atualizados para a versão candidata. Caso contrário, apenas os pacotes selecionados e certos pacotes com dependências deles, versionadas, são atualizados à versão candidata.

No modo de ecrã completo interativo do aptitude(8), os pacotes na lista de pacotes são mostrados como no próximo exemplo.

idA   libsmbclient                             -2220kB 3.0.25a-1  3.0.25a-2

Aqui, esta linha significa desde a esquerda o seguinte:

  • A flag "estado atual" (a primeira letra)

  • A flag "acção planeada" (a segunda letra)

  • A flag "automático" ( a terceira letra)

  • O nome do Pacote

  • A alteração na utilização do espaço do disco atribuída a "acção planeada"

  • A versão atual do pacote

  • A versão candidata do pacote

[Dica] Dica

A lista completa de flags é fornecida ao fundo do ecrã de Ajuda mostrada ao pressionar "?".

A versão candidata é escolhida de acordo com as preferências locais atuais (veja apt_preferences(5) e Secção 2.7.7, “Ajustar a versão candidata com o apt-pinning).

Estão disponíveis vários tipos de vistas de pacotes sob o menu "Vistas".


A "Vista de Pacotes standard categoriza os pacotes de certo modo como o dselect com algumas funcionalidades extra.


[Dica] Dica

A vista Tarefas pode ser usada para escolher pacotes para a sua tarefa.

A fórmula de expressão regular do aptitude é estendida tipo mutt ERE (veja Secção 1.6.2, “Expressões regulares”) e o significado das extensões de regras de correspondência especial específicas do aptitude são as seguintes:

Tabela 2.11. Lista da fórmula regex do aptitude

descrição da regra de correspondência extensa fórmula da expressão regular
corresponde com o nome do pacote ~nregex_name
corresponde com a descrição ~dregex_description
corresponde com nome da tarefa ~tregex_task
corresponde com debtag ~Gregex_debtag
corresponde com o maintainer ~mregex_maintainer
corresponde com secção do pacote ~sregex_section
corresponde com versão do pacote ~Vregex_version
corresponde com arquivo ~A{bookworm,trixie,sid}
corresponde com origem ~O{debian,…}
prioridade da correspondência ~p{extra,important,optional,required,standard}
corresponde com pacotes essenciais ~E
corresponde com pacotes virtuais ~v
corresponde com pacotes novos ~N
corresponde com acções pendentes ~a{install,upgrade,downgrade,remove,purge,hold,keep}
corresponde com os pacotes instalados ~i
corresponde com pacotes instalados com marca A (pacotes instalados automaticamente) ~M
corresponde com pacotes instalados sem a marca A (pacotes selecionados pelo administrador) ~i!~M
corresponde com pacotes instalados e com atualizações disponíveis ~U
corresponde com pacotes removidos mas não purgados ~c
corresponde com pacotes removidos, purgados ou que podem-ser-removidos ~g
corresponde com pacotes que declaram dependências quebradas ~b
corresponde com pacotes que declaram dependências quebradas de type ~Btype
corresponde a pacotes pattern que declaram dependência de type ~D[type:]pattern
corresponde a pacotes pattern que declaram dependência quebrada de type ~DB[type:]pattern
corresponde a pacotes para os quais o pacote que corresponde a pattern declara o type de dependência ~R[type:]pattern
corresponde a pacotes para os quais o pacote que corresponde a pattern declara o type de dependência quebrada ~RB[type:]pattern
corresponde com pacotes com os quais alguns pacotes instalados dependem ~R~i
corresponde com pacotes com os quais nenhum outro pacote instalado depende !~R~i
corresponde com pacotes com os quais alguns pacotes instalados dependem ou recomendam ~R~i|~Rrecommends:~i
corresponde o pacote pattern com a versão filtrada ~S filter pattern
corresponde com todos os pacotes (true) ~T
não corresponde com nenhum pacote (false) ~F

  • A parte da expressão regular é a mesma ERE que aquela utilizada nas típicas ferramentas de texto tipo-Unix que utilizam "^", ".*", "$" etc. como o egrep(1), awk(1) e perl(1).

  • A dependência type é uma de (dependências, pré-dependências, recomendações, sugestões, conflitos, substituições, fornecimentos), que específica o inter-relacionamento do pacote.

  • O type de dependência predefinida é "depends".

[Dica] Dica

Quando regex_pattern for uma string nula, coloca "~T" imediatamente após o comando.

Aqui estão alguns atalhos.

  • "~Pterm" == "~Dprovides:term"

  • "~Cterm" == "~Dconflicts:term"

  • "…~W term" == "(…|term)"

Os utilizadores familiarizados com o mutt aprendem rápido, pois o mutt foi a inspiração para a sintaxe de expressão. Veja "PROCURAR, LIMITAR E EXPRESSÕES" no "Manual do Utilizador" "/usr/share/doc/aptitude/README".

[Nota] Nota

Com a versão lenny do aptitude(8), a nova sintaxe de formato longo como a "?broken" pode ser utilizada para correspondência de expressões regulares no lugar da equivalente antiga dele de formato curto "~b". Agora o caractere de espaço " " é considerado como um caractere terminante de expressão regular em adição ao caractere til "~". Veja o "Manual do Utilizador" para a nova sintaxe de formato longo.

Aqui estão alguns exemplos de operações do aptitude(8).

Aqui está como acertar o estado auto/manual de instalação dos pacotes (após usar um instalador de pacotes sem ser o aptitude e etc.).

  1. Arranque o aptitude em modo interativo como root.

  2. Escreva "u", "U", "f" e "g" para atualizar a lista de pacotes e atualizar os pacotes.

  3. Escreva "l" para inserir o limite de visualização de pacotes aos "~i(~R~i|~Recomendados:~i)" e escreva "M" sobre "Pacotes Instalados" como auto-instalado.

  4. Escreva "l" para inserir o limite de visualização de pacotes como "~prequired|~pimportant|~pstandard|~E" e escreva "m" sobre "Pacotes Instalados" como instalados manualmente.

  5. Escreva "l" para inserir o limite de visualização de pacotes como "~i!~M" e remover pacotes não utilizados ao escrever "-" sobre cada um deles após expô-los ao escrever "[" sobre "Pacotes Instalados".

  6. Escreva "l" para inserir o limite de amostragem de pacotes como "~i" depois escreva "m" sobre "Tasks" para marcar esses pacotes como instalados manualmente.

  7. Termina o aptitude.

  8. Inicie "apt-get -s autoremove|less" como root para verificar os que não são usados.

  9. Reinicie o aptitude em modo interativo e marque os pacotes necessários como "m".

  10. Reinicie o "apt-get -s autoremove|less" como root para verificar que o REMOVED contém apenas os pacotes esperados.

  11. Arranque "apt-get autoremove|less" como root para auto-remover os pacotes não usados.

A opção "m" sobre "Tasks" é uma opção para prevenir situações de remoção de pacotes em massa no futuro.

[Nota] Nota

Quando mover para um novo lançamento etc, deverá considerar fazer uma instalação limpa do novo sistema mesmo a saber que Debian é atualizável como descrito em baixo. Isto dá-lhe a hipótese de remover os lixos coleccionados e expõe-lhe a melhor combinação do pacotes mais recentes. É claro que deverá fazer uma cópia de segurança do sistema para um lugar seguro (veja Secção 10.2, “Salvaguarda (backup) e recuperação”) antes de fazer isto. Recomendo fazer uma configuração de duplo arranque a usar partições diferentes para ter a transição mais suave.

Pode efetuar a atualização de todo o sistema para uma versão mais recente alterando os conteúdos da lista de fontes apontando para uma nova versão e executando o comando "apt update; apt dist-upgrade".

Para atualizar de stable para testing ou unstable durante o ciclo de lançamento bookworm-as-stable, você substitui "bookworm" no exemplo da lista de fontes de Secção 2.1.5, “Básico do arquivos Debian” por "trixie" ou "sid".

Na realidade, pode enfrentar algumas complicações devido a problemas com a transição de alguns pacotes, na maioria devido a dependências desses pacotes. Quanto maior a diferença da atualização, maior a probabilidade de ter grandes problemas. Para a transição da stable antiga à nova stable após o lançamento dele, pode ler as novas Notas de Lançamento dele e seguir o procedimento exacto descrito lá para minimizar problemas.

Quando decidir mover de stable para testing antes do lançamento formal dele, não existem Notas de Lançamento para o ajudar. A diferença entre stable e testing pode ter crescido bastante após o lançamento stable anterior e complicar a situação da atualização.

Deve dar passos de precaução para a atualização total enquanto recolhe a informação mais recente da lista de mail e a usar senso comum.

  1. Leia as "Notas de Lançamento" anteriores.

  2. Faça cópia de segurança a todo o sistema (especialmente dados e informação de configuração).

  3. Tenha um meio de arranque à mão para o caso do gestor de arranque ficar danificado.

  4. Informe os utilizadores do sistema com bastante antecedência.

  5. Grave a atividade de atualização com o script(1).

  6. Para prevenir a remoção aplique "unmarkauto" aos pacotes necessários, p.e., "aptitude unmarkauto vim", .

  7. Minimize a quantidade de pacotes instalados para reduzir a hipótese de conflitos de pacotes, p.e., remova os pacotes da tarefas de ambiente de trabalho.

  8. Remova o ficheiro "/etc/apt/preferences" (desativa apt-pinning).

  9. Tente a atualização em passos inteligentes: oldstablestabletestingunstable.

  10. Atualize a lista de fontes para apontar apenas para o novo arquivo e execute "aptitude update".

  11. Instale, opcionalmente, os novos pacotes de base primeiro, ex., "aptitude install perl".

  12. Corra o comando "apt-get -s dist-upgrade" para avaliar o impacto.

  13. Corra o comando "apt-get dist-upgrade" em último lugar.

[Cuidado] Cuidado

Não é sensato saltar grandes lançamentos de Debian quando se atualiza entre lançamentos stable.

[Cuidado] Cuidado

Nas "Notas de Lançamento" anteriores, GCC, Linux Kernel, initrd-tools, Glibc, Perl, a cadeia de ferramentas do APT, etc. necessitaram de alguma atenção especial para a atualização geral do sistema.

Para atualizações diárias em unstable, veja Secção 2.4.3, “Salvaguardar para problemas de pacotes”.

Aqui está uma lista de outras operações de gestão de pacotes para as quais o aptitude é de demasiado alto nível ou faltam-lhe funcionalidades necessárias.

Tabela 2.13. Lista de operações de gestão avançada de pacotes

comando acção
COLUMNS=120 dpkg -l padrão_do_nome_de_pacote lista o estado de um pacote instalado para o relatório de bug
dpkg -L nome_do_pacote lista o conteúdo de um pacote instalado
dpkg -L nome_do_pacote | egrep '/usr/share/man/man.*/.+' lista os manuais para um pacote instalado
dpkg -S padrão_do_nome_de_ficheiro lista os pacotes instalados que condizem com o nome de ficheiro
apt-file search padrão_do_nome_de_ficheiro lista pacotes no arquivo que condizem com o nome de ficheiro
apt-file list padrão_do_nome_de_pacote lista os conteúdos dos pacotes que correspondem no arquivo
dpkg-reconfigure nome_do_pacote reconfigura o pacote exacto
dpkg-reconfigure -p=low nome_do_pacote reconfigura o pacote exacto com as questões mais detalhadas
configure-debian reconfigura pacotes a partir do menu de ecrã completo
dpkg --audit faz auditoria ao sistema por pacotes parcialmente instalados
dpkg --configure -a configura todos os pacotes parcialmente instalados
apt-cache policy nome_do_pacote_binário mostra a versão disponível, a prioridade e informação de arquivo de um pacote binário
apt-cache madison nome_do_pacote mostra a versão disponível e informação de arquivo de um pacote
apt-cache showsrc nome_do_pacote_binário mostra informação do pacote de código-fonte de um pacote binário
apt-get build-dep nome_do_pacote instala os pacotes necessários para compilar pacote
aptitude build-dep nome_do_pacote instala os pacotes necessários para compilar pacote
apt-get source nome_do_pacote descarrega código-fonte (do arquivo standard)
dget URL para ficheiro dsc descarrega um pacote de código-fonte (de outro arquivo)
dpkg-source -x nome_do_pacote_versão-versão_debian.dsc constrói uma árvore de código-fonte a partir de um conjunto de pacotes de código-fonte ("*.orig.tar.gz" e "*.debian.tar.gz"/"*.diff.gz")
debuild binary compila pacote(s) a partir de uma árvore fonte local
make-kpkg imagem_de_kernel compila um pacote de kernel a partir de uma árvore fonte de kernel
make-kpkg --initrd imagem_de_kernel compila um pacote de kernel a partir de uma árvore fonte de kernel com initramfs activa
dpkg -i nome_pacote_versão-versão_debian_arquitectura.deb instalar um pacote local no sistema
apt install /path/to/package_filename.deb instala um pacote local no sistema, entretanto tenta resolver as dependências automaticamente
debi nome_pacote_versão-versão_debian_arquitectura.dsc instala pacote(s) locais no sistema
dpkg --get-selections '*' >seleção.txt guarda a informação de estado de seleção a nível de pacotes do dpkg
dpkg --set-selections <seleção.txt define a informação de estado de seleção a nível de pacotes do dpkg
echo nome-do-pacote hold | dpkg --set-selections define o estado de seleção de pacote ao nível do dpkg para hold (equivalente a "aptitude hold nome_do_pacote")

[Nota] Nota

Para um pacote com a funcionalidade multi-arch, pode precisar de especificar o nome da arquitectura para alguns comandos. Por exemplo, use "dpkg -L libglib2.0-0:amd64" para listar o conteúdo do pacote libglib2.0-0 para a arquitectura amd64.

[Cuidado] Cuidado

As ferramentas de pacotes de nível mais baixo como "dpkg -i …" e "debi …" deverão ser utilizadas com cuidado pelo administrador do sistema. Não tomam conta automaticamente das dependências de pacotes necessárias. As opções de linha de comandos do dpkg "--force-all" e semelhantes (veja dpkg(1)) destinam-se apenas a serem utilizadas por especialistas. Utiliza-las sem o conhecimento total dos seus efeitos pode danificar completamente o seu sistema.

Por favor note o seguinte:

A instalação de debsums permite a verificação dos ficheiros dos pacotes instalados contra valores MD5sum do ficheiro "/var/lib/dpkg/info/*.md5sums" com debsums(1). Para saber como o MD5sum funciona veja Secção 10.3.5, “O valor de controlo MD5” .

[Nota] Nota

Como a base de dados MD5sum pode ser adulterada por um intruso, o debsums(1) é uma ferramenta de segurança de utilização limitada. É bom apenas para verificar modificações locais pelo administrador ou danos devido a erros de media.

Embora hoje em dia visitar o site Debian https://packages.debian.org/ facilite a busca nos meta-dados do pacote, vamos ver modos mais tradicionais.

Os comandos grep-dctrl(1), grep-status(1) e grep-available(1) podem ser utilizados para procurar qualquer ficheiro que tenha o formato geral de um ficheiro de controle de pacote Debian.

"dpkg -S padrão_de_nome_de_ficheiro" pode ser utilizado para procurar nomes de pacotes instalados pelo dpkgque contenham ficheiros com o nome coincidente. Mas isto não vê os ficheiros criados pelo script do responsável do pacote.

Se necessitar de fazer uma busca mais elaborada nos meta-dados do dpkg, necessita executar o comando "grep -e padrão_de_expressão_regular *" no diretório "/var/lib/dpkg/info/". Isto fá-lo procurar as palavras mencionadas nos scripts dos pacotes e nos textos de questões de instalação.

Se desejar procurar, recursivamente, as dependências de pacotes, deverá utilizar o apt-rdepends(8).

Vamos aprender como o sistema de gestão de pacotes Debian funciona internamente. Isto deverá ajudá-lo a criar a sua própria solução para alguns problemas com pacotes.

[Dica] Dica

O ficheiro "Release" no nível de topo é usado para assinar o arquivo sob o sistema secure APT.

Cada suite do arquivo Debian tem um ficheiro "Release" no nível de topo, p.e., "http://deb.debian.org/debian/dists/unstable/Release", como o seguinte:

Origin: Debian
Label: Debian
Suite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:
 bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
...
[Nota] Nota

Aqui, pode encontrar a minha lógica de utilizar "suite" e "nome de código" em Secção 2.1.5, “Básico do arquivos Debian”. A "distribuição" é usada quando se refere a ambos "suite" e "nome de código". Todos os nomes de "áreas" do arquivo oferecidos pelo arquivo são listados sob "Componentes".

A integridade do ficheiro de nível superior "Release" é verificada por uma infraestrutura criptográfica denominada apt seguro, tal como descrito em apt-secure(8).

  • O ficheiro de assinatura criptográfica "Release.gpg" é criado a partir do ficheiro "Release" de nível de topo autenticado e da chave secreta do arquivo Debian.

  • As chaves públicas do arquivo Debian são instaladas localmente pelo último pacote debian-archive-keyring.

  • O sistema APT seguro verifica automaticamente a integridade do ficheiro de nível superior descarregado "Release" criptograficamente através deste ficheiro "Release.gpg" e das chaves públicas do arquivo Debian instaladas localmente.

  • A integridade de todos os ficheiros "Packages" e "Sources" é verificada a utilizar valores MD5sum do ficheiro "Release" de nível de topo. A integridade de todos os ficheiros de pacotes é verificada a utilizar valores MD5sum nos ficheiros "Packages" e "Sources" Veja debsums(1) e Secção 2.4.2, “Verificação dos ficheiros pacotes instalados”.

  • Como a verificação de assinatura criptográfica é um processo muito mais intenso para a CPU do que o cálculo de valor MD5sum, a utilização de valores MD5sum para cada pacote enquanto se utiliza assinatura criptográfica para o ficheiro "Release" de nível de topo disponibiliza boa segurança com desempenho (veja Secção 10.3, “Infraestrutura da segurança de dados”).

Se a entrada da lista de fontes especificar a opção "signed-by", a integridade do seu ficheiro de nível superior "Release" descarregado é verificada usando a chave pública especificada. Isto é útil quando a lista de fontes contém arquivos não-Debian.

[Dica] Dica

A utilização do comando apt-key(8) para a gestão de chaves APT está obsoleta.

Além disso, pode verificar manualmente a integridade do ficheiro "Release" com o ficheiro "Release.gpg" e a chave pública do arquivo Debian colocada em ftp-master.debian.org utilizando o gpg.

Quando são utilizadas ferramentas APT, tais como aptitude, apt-get, synaptic, apt-file, auto-apt, ..., nós precisamos de atualizar as cópias locais dos meta dados que contêm a informação do arquivo Debian. Estas cópias locais têm os seguintes nomes de ficheiros correspondentes à distribution especificada , area, e nomes de architecture na lista de fontes (veja Secção 2.1.5, “Básico do arquivos Debian”).

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuição_Release"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuição_Release.gpg"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuição_área_binário-arquitectura_Packages"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuição_área_fonte_Sources"

  • "/var/cache/apt/apt-file/deb.debian.org_debian_dists_distribuição_Contents-arquitectura.gz" (para o apt-file)

Os primeiros 4 tipos de ficheiros são partilhados por todos os comandos APT pertinentes e atualizados a partir da linha de comandos por "apt-get update" ou "aptitude update". Os meta dados "Packages" são atualizados se o "deb" for especificado na lista de fontes. Os meta dados "Sources" são atualizados se o "deb-src" for especificado na lista de fontes.

Os meta-dados "Packages" e "Sources" contêm a estrofe "Filename:" que aponta à localização de ficheiro dos pacotes binários e de código-fonte. atualmente, estes pacotes estão localizados sob a árvore de diretórios "pool/" para a transição melhorada através dos lançamentos.

As cópias locais dos meta-dados "Packages" podem ser pesquisadas interativamente com a ajuda do aptitude. O comando de procura especializada grep-dctrl(1) pode pesquisar as cópias locais dos meta-dados "Packages" e "Sources".

A cópia local dos meta-dados "Contents-arquitectura" pode ser atualizada pelo "apt-file update" e a localização dele é diferente dos outros 4. Veja apt-file(1). (O auto-apt utiliza localização diferente para a cópia local de "Contents-arquitectura.gz" por predefinição.)

Ficheiros de pacotes Debian têm estruturas de nomes particulares.


[Dica] Dica

Aqui apenas são descritos formatos de pacote fonte básicos. Veja mais em dpkg-source(1).


[Nota] Nota

Pode verificar a ordem da versão de pacotes com o dpkg(1), p.e., "dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?" .

[Nota] Nota

O debian-installer (d-i) utiliza udeb como a extensão de ficheiro para o pacote binário dele em vez do normal deb. Um pacote udeb é um pacote deb despido que remove alguns conteúdos não essenciais como a documentação para poupar espaço enquanto relaxa os requisitos de política do pacote. Ambos os pacotes deb e udeb partilham a mesma estrutura de pacote. O "u" significa micro.

dpkg(1) é a ferramenta de mais baixo nível para a gestão de pacotes Debian. É muito poderosa e tem que ser utilizada com cuidado.

Enquanto instala o pacote chamado "package_name", o dpkg processa-o na seguinte ordem.

  1. Desempacota o ficheiro deb (equivalente a "ar -x")

  2. Executa "nome_de_pacote.preinst" a utilizar o debconf(1)

  3. Instala o conteúdo do pacote no sistema (equivalente a "tar -x")

  4. Executa "nome_de_pacote.postinst" a utilizar o debconf(1)

O sistema debconf disponibiliza interacção standard com o utilizador com suporte de I18N e L10N (Capítulo 8, I18N e L10N).

Tabela 2.17. Ficheiros notáveis criados pelo dpkg

ficheiro descrição dos conteúdos
/var/lib/dpkg/info/nome_do_pacote.conffiles lista de ficheiros de configuração. (modificável pelo utilizador)
/var/lib/dpkg/info/nome_do_pacote.list lista de ficheiros e diretórios instalados pelo pacote
/var/lib/dpkg/info/nome_do_pacote.md5sums lista de valores de hash MD5 para os ficheiros instalados pelo pacote
/var/lib/dpkg/info/nome_do_pacote.preinst script de pacote para ser executado antes da instalação do pacote
/var/lib/dpkg/info/nome_do_pacote.postinst script de pacote para ser executado após a instalação do pacote
/var/lib/dpkg/info/nome_do_pacote.prerm script de pacote para ser executado antes da remoção do pacote
/var/lib/dpkg/info/nome_do_pacote.postrm script de pacote para ser executado após a remoção do pacote
/var/lib/dpkg/info/nome_do_pacote.config script de pacote para o sistema debconf
/var/lib/dpkg/alternatives/nome_do_pacote a informação alternativa usada pelo comando update-alternatives
/var/lib/dpkg/available a informação de disponibilidade para todos os pacotes
/var/lib/dpkg/diversions a informação de diversões usadas pelo dpkg(1) e definidas por dpkg-divert(8)
/var/lib/dpkg/statoverride a informação de sobreposição de estado usada pelo dpkg(1) e definida por dpkg-statoverride(8)
/var/lib/dpkg/status a informação de estado para todos os pacotes
/var/lib/dpkg/status-old o backup de primeira geração do ficheiro "var/lib/dpkg/status"
/var/backups/dpkg.status* o backup de segunda geração e os mais antigos do ficheiro "var/lib/dpkg/status"

O ficheiro "status" também é utilizado por ferramentas como o dpkg(1), o "dselect update" e o "apt-get -u dselect-upgrade".

O comando especializado de busca grep-dctrl(1) pode procurar as cópias locais dos meta dados "status" e "available".

[Dica] Dica

No ambiente do debian-installer, o comando udpkg é usado para abrir pacotes udeb. O comando udpkg é uma versão reduzida do comando dpkg.

Quando corre o sistema testing ou unstable, espera-se que o administrador saiba recuperar o sistema de situações de gestão de pacotes com conflitos.

[Cuidado] Cuidado

Alguns métodos descritos aqui são acções de alto risco. Foi avisado!

Erros de cache dos dados do pacote causam erros intrigantes, tais como "Erro GPG: ... invalid: BADSIG ..." com APT.

Deve remover todos os dados guardados em cache com "sudo rm -rf /var/lib/apt/* " e tentar novamente. (Se for utilizado apt-cacher-ng, deve também correr "sudo rm -rf /var/cache/apt-cacher-ng/* ".)

Os sistemas de gestão de pacotes a nível de arquivo, como o aptitude(8) ou o apt-get(1), nem tentam instalar pacotes com ficheiros sobrepostos a utilizar as dependências do pacote. (veja Secção 2.1.7, “Dependências de pacote”).

Erros do responsável do pacote ou de implantação inconsistente de mistura de fontes de arquivos (veja Secção 2.7.6, “Pacotes de fontes mistas de arquivos sem apt-pinning) pelo administrador do sistema podem criar situações com dependências de pacotes definidas incorrectamente. Quando instala um pacote com ficheiros sobrepostos a usar o aptitude(8) ou o apt-get(1) sob tal situação, o dpkg(1) que desempacota o pacote certifica-se de retornar um erro ao programa que o chama sem sobrescrever os ficheiros existentes.

[Cuidado] Cuidado

A utilização de pacotes de terceiros introduz riscos significantes ao sistema através dos scripts do programador do pacote que são executados com privilégios de root e podem fazer o que quiserem ao seu sistema. O comando dpkg(1) apenas protege contra a sobreposição de ficheiros ao desempacotar.

Pode contornar tal problema de instalação ao remover primeiro o pacote ofensivo antigo, pacote_antigo.

$ sudo dpkg -P old-package

Como o dpkg é uma ferramenta de pacotes de muito baixo nível, pode funcionar sob situações muito más como um sistema que não arranca sem ligação a rede. Vamos assumir que o pacote foo está danificado e precisa de ser substituído.

Pode ainda encontrar cópias em cache de uma versão antiga livre de bugs do pacote foo no diretório de cache de pacotes: "/var/cache/apt/archives/". (se não, pode descarregá-lo do arquivo https://snapshot.debian.org/ ou copiá-lo da cache de pacotes de uma máquina funcional.)

Se puder arrancar o sistema, pode instalá-lo com o seguinte comando.

# dpkg -i /path/to/foo_old_version_arch.deb
[Dica] Dica

Se os danos no sistema forem menores, pode em alternativa fazer um downgrade (regredir a versão) ao sistema completo como em Secção 2.7.11, “Downgrade de emergência” a usar o nível mais alto do sistema APT.

Se o seu sistema não puder arrancar pelo disco rígido, precisa procurar outras maneiras de arrancá-lo.

  1. Arranque o sistema a usar o CD de instalação de Debian (debian-installer) em modo de recuperação.

  2. Monte o sistema danificado no disco rígido em "/target".

  3. Instale uma versão antiga do pacote foo com o seguinte.

# dpkg --root /target -i /path/to/foo_old_version_arch.deb

Este exemplo funciona mesmo se o comando dpkg no disco rígido estiver danificado.

[Dica] Dica

Pode ser utilizado, de modo semelhante, para recuperar um sistema danificado qualquer sistema GNU/Linux arrancado de outro sistema no disco rígido, Live CD de GNU/Linux, por pen USB de arranque ou arranque pela rede.

Se a tentativa de instalar um pacote deste modo falha devido a algumas violações de dependências e necessitar realmente de fazer isto como último recurso, pode sobrepor a dependência a utilizar a "--ignore-depends", "--force-depends" e outras opções do dpkg. Se o fizer, precisa de fazer um sério esforço para restaurar as dependências apropriadas mais tarde. Veja dpkg(8) para mais detalhes.

[Nota] Nota

Se o seu sistema estiver seriamente danificado, deve fazer uma salvaguarda completa para um lugar seguro (veja Secção 10.2, “Salvaguarda (backup) e recuperação”) e deve fazer uma instalação limpa. Isto consome menos tempo e produz melhores resultados no fim.

Para simplificar, os exemplos de listas de fontes nesta secção são apresentados como "/etc/apt/sources.list" em estilo de uma linha após o lançamento do bookworm.

O pacote apt vem com um script de cron próprio "/etc/cron.daily/apt" para suportar a descarga automática de pacotes. Este script pode ser melhorado para executar a atualização automática de pacotes ao instalar o pacote unattended-upgrades. Esta pode ser personalizada por parâmetros em "/etc/apt/apt.conf.d/02backup" e "/etc/apt/apt.conf.d/50unattended-upgrades" conforme descrito em "/usr/share/doc/unattended-upgrades/README".

O pacote unattended-upgrades destina-se principalmente às atualizações de segurança do sistema stable. Se o risco de danificar um sistema stable existente pelas atualizações automáticas for menor que ser danificado por um intruso que usa buracos de segurança que foram fechados por atualizações de segurança, deve considerar usar estas atualizações automáticas com parâmetros de configuração como os a seguir.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";

Se está a correr um sistema testing ou unstable, não quer utilizar a atualização automática pois certamente irá quebrar o sistema um dia. Mesmo para esse caso testing ou unstable, pode querer descarregar pacotes antecipadamente para poupar tempo para a atualização interativa com parâmetros de configuração como os seguintes.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "0";

Existem stable-updates ("bookworm-updates" durante o ciclo de lançamento bookworm-as-stable ) e arquivos backports.debian.org que disponibilizam pacotes de atualização para stable.

De modo a utilizar estes arquivos, liste todos os arquivos necessários no ficheiro "/etc/apt/sources.list" como a seguir:

deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ bookworm-backports main non-free-firmware contrib non-free

Não há necessidade de definir valores específicos de Pin-Priority no ficheiro "/etc/apt/preferences". Quando os novos pacotes ficam disponíveis, a configuração predefinida disponibiliza as atualizações mais razoáveis (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”).

  • Todos os pacotes antigos instalados são atualizados para mais recentes a partir de bookworm-updates.

  • Apenas os pacotes antigos instalados manualmente a partir de bookworm-backports são atualizados para mais recentes a partir de bookworm-backports.

Sempre que desejar instalar um pacote chamado "nome-do-pacote" com as suas dependências a partir do arquivo bookworm-backports manualmente, utilize o seguinte comando enquanto muda o lançamento alvo com a opção "-t".

$ sudo apt-get install -t bookworm-backports package-name
[Atenção] Atenção

Não instale demasiados pacotes dos arquivos backports.debian.org. Isso pode causar complicações na dependência de pacotes. Veja Secção 2.1.11, “Como lidar com requisitos contraditórios” as soluções alternativas.

[Cuidado] Cuidado

Instalar pacotes de fontes misturadas de arquivos não é suportado pela distribuição oficial Debian excepto para combinações de arquivos oficialmente suportadas tais como a stable com security updates e stable-updates.

Aqui está um exemplo de operações para incluir, uma vez, pacotes específicos com novas versões da origem encontrados em unstable enquanto se acompanha a testing.

  1. Altere o ficheiro "/etc/apt/sources.list" temporariamente para entrada única "unstable".

  2. Corra "aptitude update".

  3. Corra "aptitude install nome-do-pacote".

  4. Recupere o ficheiro "/etc/apt/sources.list" original para testing.

  5. Corra "aptitude update".

Não crie o ficheiro "/etc/apt/preferences" nem precisa de se preocupar com o apt-pinning com esta abordagem manual. Mas isto é muito incómodo.

[Cuidado] Cuidado

Quando utiliza fontes misturadas de arquivos, tem que assegurar por si próprio a compatibilidade dos pacotes pois Debian não o garante. Se existir incompatibilidade de pacotes, pode danificar o seu sistema. Tem que ser capaz de julgar estes requisitos técnicos. A utilização de fontes misturadas de arquivos aleatórios é uma operação completamente opcional e a utilização deles não é algo que o encoraje a utilizar.

As regras gerais para instalar pacotes de arquivos diferentes são as seguintes.

[Nota] Nota

De modo a tornar um pacote seguro para instalar, alguns pacotes de programas binários comerciais não-livres podem vir fornecidos com bibliotecas completamente ligadas estaticamente. Mesmo assim deve verificar problemas de compatibilidade da ABI e etc. com eles.

[Nota] Nota

Exceto para evitar pacotes partidos por um curto período de tempo, instalar pacotes binários de repositórios não-Debian é geralmente má ideia. Você deve procurar todas as soluções técnicas alternativas mais seguras disponíveis que sejam compatíveis com o seu sistema Debian atual (veja Secção 2.1.11, “Como lidar com requisitos contraditórios”).

[Atenção] Atenção

A utilização da técnica apt-pinning por um utilizador novato irá certamente causar grandes problemas. Deve evitar utilizar esta técnica exceto quando for absolutamente necessário.

Sem o ficheiro "/etc/apt/preferences", o sistema APT escolhe a versão disponível mais recente com a versão candidata a utilizar a cadeia de versão. Este é o estado normal e a utilização recomendada do sistema APT. Todas as combinações de arquivos oficialmente suportadas não necessitam do ficheiro "/etc/apt/preferences" porque alguns arquivos que não devem ser utilizados como fonte automática de atualizações são marcados como NotAutomatic e são tratados de modo apropriado.

[Dica] Dica

A regra de comparação da string de versão pode ser verificada com, p.e., "dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?" (veja dpkg(1)).

Quando instala regularmente pacotes de uma mistura de fontes de arquivos (veja Secção 2.7.6, “Pacotes de fontes mistas de arquivos sem apt-pinning), pode automatizar estas operações complicadas ao criar o ficheiro "/etc/apt/preferences" com entradas apropriadas e a moldar a regra de seleção de pacotes para a versão candidata como descrito em apt_preferences(5). Isto chama-se apt-pinning.

Quando utilizar apt-pinning, você próprio tem que assegurar a compatibilidade dos pacotes pois Debian não o garante. O apt-pinning é uma operação completamente opcional e a sua utilização não é algo que se encoraje.

Os níveis de arquivo dos ficheiros de lançamento (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”) são utilizados para a regra do apt_preferences(5). Assim o apt-pinning funciona apenas com nome de "suite" para arquivos Debian normais e arquivos Debian de segurança. (Isto é diferente dos arquivos do Ubuntu.) Por exemplo, pode fazer "Pin: release a=unstable" mas não pode fazer "Pin: release a=sid" no ficheiro "/etc/apt/preferences".

Quando utilizar um arquivo não-Debian como parte de apt-pinning, deve verificar ao que ele se destina e também verificar a credibilidade dele. Por exemplo, Ubuntu e Debian não se destinam a ser misturados.

[Nota] Nota

Mesmo que não crie o ficheiro "/etc/apt/preferences", pode fazer operações no sistema bastante complexas (veja Secção 2.6.6, “Recuperação com o comando dpkg” e Secção 2.7.6, “Pacotes de fontes mistas de arquivos sem apt-pinning) sem o apt-pinning.

Aqui está uma explicação simplificada da técnica de apt-pinning.

O sistema APT escolhe o pacote de atualização com o Pin-Priority maior das fontes de pacotes disponíveis definidas no ficheiro "/etc/apt/sources.list" como o pacote de versão candidata. Se o Pin-Priority do pacote for maior que 1000, esta restrição de versão para atualização é abandonada para permitir a regressão (veja Secção 2.7.11, “Downgrade de emergência”).

O valor Pin-Priority de cada pacote é definido por entradas "Pin-Priority" no ficheiro "/etc/apt/preferences" ou utiliza o valor predefinido dele.


O arquivo da suite alvo pode ser definido pela linha de comando, por exemplo, "apt-get install -t testing some-package"

Os arquivos NotAutomatic e ButAutomaticUpgrades são definidos pelo servidor de arquivo que contêm no ficheiro Release dele do nível de arquivo (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”) ambos "NotAutomatic: yes" e "ButAutomaticUpgrades: yes". O arquivo NotAutomatic é definido pelo servidor de arquivo que contém no ficheiro Release de nível de arquivo dele apenas "NotAutomatic: yes".

A situação de apt-pinning do pacote de várias fontes de arquivos é mostrada por "apt-cache policy pacote".

  • Uma linha começada com "Package pin:" lista a versão do pacote de pin se estiver definida a associação apenas com o pacote p.e., "Package pin: 0.190".

  • Não existe nenhuma linha com "Package pin:" se não estiver definida nenhuma associação apenas com pacote.

  • O valor Pin-Priority a associar ao pacote é listado no lado direito de todas as strings de versão, p.e., "0.181 700".

  • É listado "0" à direita de todas as strings de versão se nenhuma associação apenas com pacote for definida, ex., "0.181 0".

  • Os valores Pin-Priority dos arquivos (definidos como "Package: *" no ficheiro "/etc/apt/preferences") são listados à esquerda dos caminhos dos arquivos, ex., "100 http://deb.debian.org/debian/ bookworm-backports/main Packages".

[Atenção] Atenção

A utilização da técnica apt-pinning por um utilizador novato irá certamente causar grandes problemas. Deve evitar utilizar esta técnica exceto quando for absolutamente necessário.

Aqui está um exemplo de técnica de apt-pinning para incluir pacotes específicos de versão original mais recente encontrados em unstable e atualizados regularmente enquanto segue a suite testing. Liste todos os arquivos necessários no ficheiro "/etc/apt/sources.list" conforme a seguir:

deb http://deb.debian.org/debian/ testing main contrib non-free
deb http://deb.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/debian-security testing-security main contrib

Configure o ficheiro "/etc/apt/preferences" como o seguinte:

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

Quando desejar instalar um pacote chamado "nome_do_pacote" com as suas dependências a partir do arquivo unstable sob esta configuração, invoque o seguinte comando que muda o lançamento alvo com a opção "-t" (o Pin-Priority de unstable torna-se 990).

$ sudo apt-get install -t unstable package-name

Com esta configuração, a execução usual de "apt-get upgrade" e "apt-get dist-upgrade" (ou "aptitude safe-upgrade" e "aptitude full-upgrade") atualiza os pacotes que foram instalados a partir do repositório testing ao usar a suite testing atual e os pacotes que foram instalados a partir do repositório unstable a usar a suite unstable atual.

[Cuidado] Cuidado

Tenha cuidado para não remover a entrada "testing" do ficheiro "/etc/apt/sources.list". Sem a entrada "testing" lá, o sistema APT atualiza os pacotes do novo arquivo unstable.

[Dica] Dica

Geralmente edito o ficheiro "/etc/apt/sources.list" para comentar a entrada do arquivo "unstable" logo após a operação acima. Isto evita a lentidão do processo de atualização ao ter demasiadas entradas no ficheiro "/etc/apt/sources.list" embora isto impeça a atualização dos pacotes que foram instalados a partir do arquivo unstable a utilizar o arquivo unstable atual.

[Dica] Dica

Se for utilizado "Pin-Priority: 1" em vez de "Pin-Priority: 100" no ficheiro "/etc/apt/preferences", os pacotes já instalados que têm o valor Pin-Priority de 100 não são atualizados pelo arquivo unstable mesmo se a entrada "testing" no ficheiro "/etc/apt/sources.list" seja removida.

Se desejar acompanhar pacotes particulares em unstable automaticamente sem uma instalação inicial "-t unstable", tem de criar o ficheiro "/etc/apt/preferences" e listar explicitamente todos esses pacotes no topo conforme a seguir:

Package: package-1
Pin: release a=unstable
Pin-Priority: 700

Package: package-2
Pin: release a=unstable
Pin-Priority: 700

Estes definem o valor Pin-Priority para cada pacote específico. Por exemplo, de modo a acompanhar a versão unstable mais recente deste "Debian Reference" em Português, deve ter as seguintes entradas no ficheiro "/etc/apt/preferences".

Package: debian-reference-en
Pin: release a=unstable
Pin-Priority: 700

Package: debian-reference-common
Pin: release a=unstable
Pin-Priority: 700
[Dica] Dica

Esta técnica de apt-pinning é válida mesmo se estiver a seguir o arquivo stable. Pela minha experiência e até agora, os pacotes de documentação sempre foram seguros de instalar a partir do arquivo unstable.

[Atenção] Atenção

A utilização da técnica apt-pinning por um utilizador novato irá certamente causar grandes problemas. Deve evitar utilizar esta técnica exceto quando for absolutamente necessário.

[Cuidado] Cuidado

O downgrade (regressão de versão) não é suportado oficialmente pelo sistema Debian por design. Deverá ser feito apenas como parte de um processo de recuperação de emergência. Apesar desta situação, é conhecido por funcionar bem em muitos incidentes. Para sistemas críticos, Deve fazer salvaguardas (backups) de todos os dados importantes após a operação de recuperação e reinstalar um sistema novo a partir da estaca zero.

Pode ter sorte ao fazer o downgrade de uma arquivo recente para um arquivo mais antigo para recuperar de uma atualização ao sistema que o deixou danificado ao manipular a versão candidata (veja Secção 2.7.7, “Ajustar a versão candidata com o apt-pinning). Esta é uma alternativa preguiçosa às acções tediosas de muitos comandos "dpkg -i pacote-danificado_versão-antiga.deb" (veja Secção 2.6.6, “Recuperação com o comando dpkg”).

Procure as linhas no ficheiro "/etc/apt/sources.list" que acompanham unstable como a seguir.

deb http://deb.debian.org/debian/ sid main contrib non-free

Substitua-as de modo a acompanharem testing.

deb http://deb.debian.org/debian/ trixie main contrib non-free

Configure o ficheiro "/etc/apt/preferences" como o seguinte:

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

Corra "apt-get update; apt-get dist-upgrade" para forçar a regressão dos pacotes no sistema.

Remova este ficheiro especial "/etc/apt/preferences" após este downgrade de emergência.

[Dica] Dica

É uma boa ideia remover (não purgar) o máximo de pacotes para minimizar problemas de dependências. Pode necessitar remover e instalar manualmente alguns pacotes para conseguir o downgrade do sistema. O kernel Linux, gestor de arranque, udev, PAM, APT, os pacotes relacionados com a rede e os seus ficheiros de configuração requerem atenção especial.

Como pôr em mirror uma sub-secção inteira do arquivo Debian é um desperdício de espaço de disco e largura de banda de rede, a implantação se um servidor proxy local para o APT é desejável a ter em consideração se administrar muitos sistemas em LAN. O APT pode ser configurado para utilizar servidores proxy web genéricos (http) como o squid (veja Secção 6.5, “Outras aplicações de servidor de rede”) conforme descrito em apt.conf(5) e em "/usr/share/doc/apt/examples/configure-index.gz". A variável de ambiente $http_proxy" pode ser utilizada para sobrepor a definição de servidor proxy do ficheiro "/etc/apt/apt.conf".

Existem ferramentas de proxy especiais para o arquivo Debian. Deve verificar o BTS antes de as utilizar.


[Cuidado] Cuidado

Quando Debian reorganiza a estrutura do arquivo dele, estas ferramentas de proxy especializadas tendem a necessitar ser reescritas de pelo responsável do pacote e podem não estar funcionais durante algum tempo. Por outro lado, os servidores proxy web (http) genéricos são mais robustos e mais fáceis de acompanhar estas mudanças.