Capítulo 2. Gestão de pacotes Debian

Índice

2.1. Pré-requisitos da gestão de pacotes Debian
2.1.1. Configuração de pacotes
2.1.2. Precauções básicas
2.1.3. A vida com atualizações eternas
2.1.4. Básico do arquivos Debian
2.1.5. Debian é 100% software livre
2.1.6. Dependências de pacote
2.1.7. O fluxo de eventos da gestão de pacotes
2.1.8. Primeira resposta a problemas com a gestão de pacotes
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. Listagem de pacotes com correspondência por expressão regular nos nomes de pacotes
2.3.2. Explorar com a correspondência de expressão regular
2.3.3. Purgar pacotes removidos definitivamente
2.3.4. Acertar o estado auto/manual de instalação
2.3.5. 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. Incompatibilidade com configurações antigas de utilizador
2.6.2. Pacotes diferentes com ficheiros sobrepostos
2.6.3. Corrigir script problemático de pacote
2.6.4. Recuperação com o comando dpkg
2.6.5. Recuperar dados de seleção de pacotes
2.7. Dicas para a gestão de pacotes
2.7.1. Como escolher os pacotes Debian
2.7.2. Pacotes de fontes de arquivos misturados
2.7.3. Moldar a versão candidata
2.7.4. atualizações e Backports
2.7.5. Bloquear pacotes instalados por "Recomendados"
2.7.6. Acompanhar testing com alguns pacotes de unstable
2.7.7. Acompanhar unstable com alguns pacotes de experimental
2.7.8. Descarga e atualização automática de pacotes
2.7.9. Limitar a largura de banda de descarga para o APT
2.7.10. Downgrade de emergência
2.7.11. Quem fez o upload do pacote?
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: bullseye.

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.

The current Debian package management system which can utilize all these resources is Advanced Packaging Tool (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 63210 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:

Tabela 2.1. Lista de ferramentas de gestão de pacotes Debian

pacote popcon tamanho descrição
dpkg V:932, I:999 6874 low level package management system for Debian (file based)
apt V:887, I:999 4337 APT front-end to manage packages with CLI: apt/apt-get/apt-cache
aptitude V:72, I:398 4256 APT front-end to interactively manage packages with full screen console: aptitude(8)
tasksel V:33, I:975 395 APT front-end to install selected tasks: tasksel(8)
unattended-upgrades V:326, I:447 326 pacote de melhoria para o APT para ativar a instalação automática de atualizações de segurança
gnome-software V:112, I:203 6559 Software Center for GNOME (GUI APT front-end)
synaptic V:39, I:308 7873 graphical package manager (GTK APT front-end)
apt-utils V:379, I:997 1164 Programas utilitários do APT: apt-extracttemplates(1), apt-ftparchive(1) e apt-sortpkgs(1)
apt-listchanges V:356, I:849 423 ferramenta de notificação do histórico de alterações do pacote
apt-listbugs V:8, I:12 465 lista bugs críticos antes de cada instalação do APT
apt-file V:17, I:79 90 Utilitário de busca de pacotes do APT - interface de linha de comandos
apt-rdepends V:0, I:6 40 lista recursivamente dependências de pacotes

[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 novato de sistemas Debian deve manter-se com o lançamento stable de Debian e aplicar apenas as atualizações de segurança. Quero dizer que é melhor evitar algumas das seguintes acções válidas, como uma precaução, até que compreenda muito bem o sistema Debian. Aqui ficam algumas lembranças.

  • Não inclua testing ou unstable em "/etc/apt/sources.list".

  • Não misture Debian standard com outros arquivos que não sejam Debian, como o Ubuntu em "/etc/apt/sources.list".

  • 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 ao sistema de gestão de pacotes de Debian, pelas acções referidas acima, podem deixar o seu sistema inutilizado.

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.

Despite my warnings above, I know many readers of this document may wish to run the newer testing or unstable suites.

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.

This list is targeted for the self-administered Desktop environment.

  • Use the testing suite since it is practically the rolling release automatically managed by the Debian archive QA infrastructure such as the Debian continuous integration, the source only upload practices, and the library transition tracking. The packages in the testing suite are updated frequently enough to offer all the latest features.

  • Set the codename corresponding to the testing suite (currently "bookworm") in the "/etc/apt/sources.list".

  • Manually update this codename in the "/etc/apt/sources.list" to the new one only after assessing situation by yourself for about a month after the major suite release. The Debian user and developer mailing list are good sources of information for this, too.

The use of the unstable suite isn't recommended. The unstable suite is good for debugging packages as a developer but tends to expose you to unnecessary risks for the normal Desktop usage. Even though the unstable suite of the Debian system looks very stable for most of the times, there have been some package problems and a few of them were not so trivial to resolve.

Here are some basic precautionary measure ideas to ensure quick and easy recovery from bugs in Debian packages.

  • 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

  • Install a corresponding sandboxed upstream binary package in case of trouble (see Secção 7.6, “Sandbox”)

  • Crie um chroot ou ambiente semelhante para antecipadamente correr nele o sistema mais recente (veja Secção 9.11, “Sistema virtualizado”)

[Cuidado] Cuidado

If you can not do any one of these precautionary actions, you are probably not ready for the testing and unstable suites.

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

[Dica] Dica

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

Para o típico acesso HTTP, o arquivo está especificado no ficheiro "/etc/apt/sources.list" como o seguinte exemplo para o sistema stable = bullseye atual.

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

deb http://security.debian.org/debian-security bullseye-security main contrib
deb-src http://security.debian.org/debian-security bullseye-security main contrib

Aqui uso o nome de código "bullseye" em vez do nome de suite "stable" para evitar surpresas quando a próxima stable for lançada.

O significado de "/etc/apt/sources.list" é descrito em sources.list(5) e os pontos chave são os seguintes:

  • 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 2º argumento é o nome da distribuição: seja o nome de 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.

As linhas "deb-src" pode ser omitidas (ou comentadas ao pôr um "#" no inicio da linha) se for apenas para o aptitude o qual não acede a meta-dados relacionados com a fonte. Isso acelera as atualizações dos meta-dados do arquivo. O URL pode ser "http://", "ftp://", "file://", ….

[Dica] Dica

Se for usado "sid" no exemplo em cima em vez de "bullseye", a linha "deb: http://security.debian.org/ …" para atualizações de segurança em "/etc/apt/sources.list", não é necessária. Isto porque não há arquivo de atualizações de segurança para "sid" (unstable).

Aqui está uma lista de URLs de sites de arquivo Debian e nomes das suites ou nomes de código utilizados no ficheiro de configuração.


[Cuidado] Cuidado

Apenas o puro lançamento stable com as atualizações de segurança disponibilizam a melhor estabilidade. Correr o lançamento stable misturado com alguns pacotes dos lançamentos testing ou unstable é mais arriscado que correr o lançamento unstable puro devido a versões erradas de bibliotecas e etc. Se realmente precisa da versão mais recente de alguns programas sob o lançamento stable, por favor utilize pacotes do bullseye-updates e http://backports.debian.org (veja os serviços Secção 2.7.4, “atualizações e Backports”) Estes serviços têm de ser utilizados com cuidados 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.3, “Moldar a versão candidata”).

[Dica] Dica

Para o sistema Debian com as suites stable e testing, é uma boa ideia incluir linhas com "http://security.debian.org/" em "/etc/apt/sources.list" para ativar as atualizações de segurança como no exemplo em cima.

[Nota] Nota

Os bugs de segurança do arquivo stable são corrigidos pela equipa de segurança do Debian. Esta atividade tem sido bastante rigorosa e fidedigna. Os do arquivo testing poderão ser corrigidos pela equipa de segurança de Debian testing. Por várias razões, esta atividade não é tão rigorosa como a de stable e pode necessitar de aguardar pela migração de pacotes unstable com as correcções. Os pacotes do arquivo unstable são corrigidos pelo maintainer. Os pacotes unstable mantidos activamente estão geralmente em boa forma por conterem as correcções de segurança mais recentes desde a origem. Veja a FAQ de segurança Debian para saber como Debian lida com os 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.5, “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 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, o arquivo unstable pode ser usado 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 no main depende ou recomenda pacotes do non-free ou do 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.

  • Os pacotes fora do sistema Debian são alojado em servidores Debian nas áreas non-free 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

    • Reconhecemos que alguns dos nossos utilizadores necessitam utilizar trabalhos que não estão de acordo com a Debian Free Software Guidelines. Criamos as áreas "contrib" e "non-free" no nosso arquivo para esses trabalhos. Os pacotes nessas áreas não fazem parte do sistema Debian, embora tenham sido configurados para serem utilizados com Debian. Encorajamos os fabricantes de CDs a ler as licenças dos pacotes nessas áreas e determinar se podem distribuir os pacotes nos seus CDs. Por isso, embora os trabalhos não-livres não sejam parte de Debian, suportamos a utilização deles e disponibilizamos infra-estrutura para os pacotes não-livres (tal como o nosso sistema de seguimento de bugs e listas de email).

Os utilizadores devem estar cientes dos riscos da utilização de pacotes das áreas non-free 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 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 a conter dados binários sem código-fonte tais como os listados em Secção 9.10.5, “Controladores de hardware e firmware” como não-livre. (a maioria encontra-se na secção non-free/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 das non-free e contrib é menos de 2% dos pacotes da main. ativar o acesso às áreas non-free 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:

  • "Depends"

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

  • "Pre-Depends"

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

  • "Recommends"

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

  • "Suggests"

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

  • "Enhances"

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

  • "Breaks"

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

  • "Conflicts"

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

  • "Replaces"

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

  • "Provides"

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

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 invólucro 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
N/D aptitude search '~i!~M' apt-mark showmanual lista os pacotes instalados manualmente

apt / apt-get and aptitude can be mixed without major troubles.

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.3, “Moldar a versão candidata”).

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{bullseye,bookworm,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 executar a atualização geral do sistema para um lançamento mais recente ao alterar o conteúdo do ficheiro "/etc/apt/sources.list" a apontar a um lançamento novo e a executar o comando "apt update; apt dist-upgrade".

Para atualizar de stable para testing ou unstable, substitui "bullseye" no exemplo "/etc/apt/sources.list" de Secção 2.1.4, “Básico do arquivos Debian” por "bookworm" 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" (desactiva o apt-pinning).

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

  10. atualize o ficheiro "/etc/apt/sources.list" para apontar apenas ao novo arquivo e corra "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 -plow package_name 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 for dsc file 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.4, “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 "Release" de nível de topo é verificada pela infraestrutura criptográfica chamada secure apt.

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

  • A chave do arquivo Debian público pode ser semeada em "/etc/apt/trusted.gpg";

  • O sistema secure APT verifica a integridade do ficheiro "Release" de nível de topo descarregado criptograficamente por este ficheiro "Release.gpg" a pela chave de arquivo público Debian em "/etc/apt/trusted.gpg".

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

Quando as ferramentas do APT, como o aptitude, apt-get, synaptic, apt-file, auto-apt, … são utilizadas, 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 aos nomes de distribuição, área e arquitectura especificados em "/etc/apt/sources.list" (veja Secção 2.1.4, “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 pelo "apt-get update" ou "aptitude update". Os meta-dados "Packages" são atualizados se existir a linha "deb" em "/etc/apt/sources.list". Os meta dados "Sources" são atualizados se existir a linha "deb-src" em "/etc/apt/sources.list".

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 "nome_de_pacote", 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 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!

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.6, “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.2, “Pacotes de fontes de arquivos misturados”) 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.10, “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.

[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 bullseye-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 cria o ficheiro "/etc/apt/preferences" nem precisa de se preocupar com o apt-pinning com esta abordagem manual. Mas é muito incómoda.

[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

Excepto para evitar pacotes com problemas a curto prazo, instalar pacotes binários de arquivos não suportados oficialmente é geralmente uma má ideia. Isto é verdadeiro mesmo que utilize apt-pinning (veja Secção 2.7.3, “Moldar a versão candidata”). Deve considerar o chroot ou técnicas semelhantes (veja Secção 9.11, “Sistema virtualizado”) para correr programas de arquivos diferentes.

[Atenção] Atenção

A utilização de apt-pinning por um utilizador novato é certamente pedir grandes problemas. Deve evitar utilizar o apt-pinning excepto quando necessitar absolutamente dele.

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.2, “Pacotes de fontes de arquivos misturados”), 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.

[Cuidado] Cuidado

Quando utilizar apt-pinning, 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 utilização dele não é algo que encoraje a fazer.

[Cuidado] Cuidado

Os ficheiros Release de nível de arquivo (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".

[Cuidado] Cuidado

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.4, “Recuperação com o comando dpkg” e Secção 2.7.2, “Pacotes de fontes de arquivos misturados”) 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.10, “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 do lançamento alvo pode ser definido por diferentes métodos.

  • ficheiro de configuração "/etc/apt/apt.conf" com a linha "APT::Default-Release "stable";"

  • opção de linha de comandos, p.e. "apt-get install -t testing algum-pacote"

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/ bullseye-backports/main Packages".

Existem os arquivos bullseye-updates e backports.debian.org que disponibilizam pacotes de atualização para stable (bullseye).

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/ bullseye main contrib non-free
deb http://security.debian.org/ bullseye-security main contrib
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb http://deb.debian.org/debian/ bullseye-backports main 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 bullseye-updates.

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

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

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

A utilização de apt-pinning por um utilizador novato é certamente pedir grandes problemas. Deve evitar utilizar o apt-pinning excepto quando necessitar absolutamente dele.

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 de segue o 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/ 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 arquivo testing a usar o arquivo testing atual e os pacotes que foram instalados a partir do arquivo unstable a usar o arquivo 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 de apt-pinning por um utilizador novato é certamente pedir grandes problemas. Deve evitar utilizar o apt-pinning excepto quando necessitar absolutamente dele.

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 estiver a correr um sistema unstable, não vai utilizar as atualizações automáticas, pois um dia, com certeza, irão danificar o seu sistema. Mesmo para casos de unstable, pode ainda querer descarregar os pacotes com antecedência para poupar tempo na atualização interativa 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 "0";
[Atenção] Atenção

A utilização de apt-pinning por um utilizador novato é certamente pedir grandes problemas. Deve evitar utilizar o apt-pinning excepto quando necessitar absolutamente dele.

[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.3, “Moldar a versão candidata”). 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.4, “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/ bookworm 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.