Índice
apt
vs. apt-get
/
apt-cache
contra o aptitude
testing
com alguns pacotes de
unstable
unstable
com alguns pacotes de
experimental
Nota | |
---|---|
Este capítulo é escrito a assumir que o lançamento estável mais recente tem
o nome de código: The data source of the APT system is collectively refered as the source list in this document . This can be
defined anywhere in the " |
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 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) for all interactive command line operations,
including package installation, removal and dist-upgrades.
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.
Tabela 2.1. Lista de ferramentas de gestão de pacotes Debian
pacote | popcon | tamanho | descrição |
---|---|---|---|
dpkg
|
V:912, I:999 | 6388 | low level package management system for Debian (file based) |
apt
|
V:865, I:999 | 4318 | APT front-end to manage packages with CLI:
apt /apt-get /apt-cache |
aptitude
|
V:48, I:253 | 4389 | APT front-end to interactively manage packages with full screen console:
aptitude (8) |
tasksel
|
V:34, I:980 | 347 | APT front-end to install selected tasks: tasksel (8) |
unattended-upgrades
|
V:182, I:278 | 301 | pacote de melhoria para o APT para ativar a instalação automática de atualizações de segurança |
gnome-software
|
V:153, I:263 | 3085 | Software Center for GNOME (GUI APT front-end) |
synaptic
|
V:46, I:375 | 7627 | graphical package manager (GTK APT front-end) |
apt-utils
|
V:379, I:998 | 1065 | Programas utilitários do APT: apt-extracttemplates (1),
apt-ftparchive (1) e apt-sortpkgs (1) |
apt-listchanges
|
V:358, I:872 | 398 | ferramenta de notificação do histórico de alterações do pacote |
apt-listbugs
|
V:6, I:8 | 477 | lista bugs críticos antes de cada instalação do APT |
apt-file
|
V:17, I:67 | 89 | Utilitário de busca de pacotes do APT - interface de linha de comandos |
apt-rdepends
|
V:0, I:5 | 39 | lista recursivamente dependências de pacotes |
Aqui estão alguns pontos chave para a configuração de pacotes no sistema Debian.
A configuração manual feita pelo administrador do sistema é respeitada. Por outras palavras, o sistema de configuração de pacotes não faz configurações intrusivas por conveniência.
Cada pacote vem com o próprio script de configuração com a interface de
utilizador standard chamada debconf
(7) para ajudar no
processo inicial de instalação do pacote.
Os Programadores do Debian dão o melhor para tornar a sua experiência de atualização isenta de falhas com scripts de configuração de pacotes.
As funcionalidades totais do software empacotado estão disponíveis ao administrador do sistema. Mas aquelas com riscos de segurança estão desactivadas na instalação predefinida.
Se manualmente ativou um serviço com alguns riscos de segurança você é o responsável pelo confinamento de risco.
A configuração esotérica pode ser activada manualmente pelo administrador do sistema. Isto pode criar interferência com programas de ajuda genéricos populares para a configuração do sistema.
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. |
The newbie Debian system administrator should
stay with the stable
release of Debian while applying only security updates. Until you
understand the Debian system very well, you should follow the following
precautions.
Do not include testing
or unstable
in
the source list.
Do not mix standard Debian with other non-Debian archives such as Ubuntu in the source 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.
The non-compatible effects caused by violating above precautions to the Debian package management system may leave your system unusable.
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 | |
---|---|
Para o seu servidor de produção a suite
|
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
("trixie
" during the
bookworm
-as-stable
release
cycle) in the source list.
Manually update this codename in the source 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
Cuidado | |
---|---|
If you can not do any one of these precautionary actions, you are probably
not ready for the |
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.
For a system user, the Debian archive is accessed using the APT system.
The APT system specifies its data source as the
source list and it is described in
sources.list
(5).
For the bookworm
system with the typical HTTP
access, the source list in one-line-style
as the following:
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
Alternatively, the equivalent source list in deb822-style is the following.
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
Key points of the source list are followings.
One-line-style format
It's definition files are in the "/etc/apt/sources.list
"
file and "/etc/apt/sources.list.d/*.list
" files.
Each line defines the data source for the APT system.
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.
The 2nd argument is the distribution name using either the suite name or the codename.
O 3º argumento e seguintes são a lista de nomes de área de arquivo válidos do arquivo Debian.
Deb822-style format
It's definition files are in
"/etc/apt/sources.list.d/*.source
" files.
Each block of lines separated by a blank line defines the data source for the APT system.
The "Types:
" stanza defines the list of types such as
"deb
" and "deb-src
".
The "URIs:
" stanza defines the list of root URIs of the
Debian archive.
The "Suites:
" stanza defines the list of distribution
names using either the suite name or the codename.
The "Components:
" stanza defines the list of valid
archive area names of the Debian archive.
The definition for "deb-src
" can safely be omitted if it
is just for aptitude
which does not access source related
meta data. It speeds up the updates of the archive meta data.
The URL can be "https://
", "http://
",
"ftp://
", "file://
", ….
Lines starting with "#
" are comments and ignored.
Here, I tend to use codename "bookworm
" or
"trixie
" instead of suite name
"stable
" or "testing
" to avoid
surprises when the next stable
is released.
Dica | |
---|---|
If " |
Here is the list of URL of the Debian archive sites and suite name or
codename used in the configuration file after the
bookworm
release.
Tabela 2.2. Lista de sites de arquivos Debian
URL do arquivo | suite name | codename | purpose of repository |
---|---|---|---|
http://deb.debian.org/debian/ | stable |
bookworm |
Quasi-static stable release after extensive checks |
http://deb.debian.org/debian/ | testing |
trixie |
Dynamic testing release after decent checks and short
waits |
http://deb.debian.org/debian/ | unstable |
sid |
Dynamic unstable release after minimal checks and no
waits |
http://deb.debian.org/debian/ | experimental |
N/D | Pre-release experiments by developers (optional, only for developer) |
http://deb.debian.org/debian/ | stable-proposed-updates |
bookworm-proposed-updates |
Updates for the next stable point release (optional) |
http://deb.debian.org/debian/ | stable-updates |
bookworm-updates |
Subset of stable-proposed-updates suite needing urgent
updates such as timezone data (optional) |
http://deb.debian.org/debian/ | stable-backports |
bookworm-backports |
Random collection of recompiled packages mostly from the
testing release (optional) |
http://security.debian.org/debian-security/ | stable-security |
bookworm-security |
Security updates for the stable release (important) |
http://security.debian.org/debian-security/ | testing-security |
trixie-security |
This isn't actively supported nor used by the security team |
Cuidado | |
---|---|
Only pure |
Cuidado | |
---|---|
Basicamente deve listar apenas uma das suites |
Dica | |
---|---|
For the Debian system with the |
Nota | |
---|---|
The security bugs for the |
Tabela 2.3. Lista de área de arquivo Debian
área | quantidade de pacotes | critério do componente do pacote |
---|---|---|
main |
72806 | em conformidade com DFSG e nenhuma dependência a non-free |
non-free-firmware |
39 | not DFSG compliant, firmware required for reasonable system installation experience |
contrib |
356 | em conformidade com DFSG mas com dependências a non-free |
non-free |
964 | not DFSG compliant and not in non-free-firmware |
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.
Tabela 2.4. A relação entre suite e nome de código
Tempo | suite = stable |
suite = testing |
suite = unstable |
---|---|---|---|
após o lançamento bookworm |
nome de código = bookworm |
nome de código = trixie |
nome de código = sid |
após o lançamento trixie |
nome de código = trixie |
nome de código = forky |
nome de código = sid |
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.
Before a set of packages are moved by the Debian archive maintenance script
from the unstable
archive to the
testing
archive, the archive maintenance script not only
checks the maturity (about 2-10 days old) and the status of the RC bug
reports for the packages but also tries to ensure them to be compatible with
the latest set of packages in the testing
archive. This
process makes the testing
archive very current and
usable.
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 | |
---|---|
For about few months after a new |
Dica | |
---|---|
Quando se acompanha o arquivo |
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
.
No packages in main
depend nor recommend packages in
non-free
nor non-free-firmware
nor
contrib
.
Algumas pessoas pensam se os 2 seguintes factos se contradizem ou não.
"Debian irá manter-se 100% livre". (Primeiro termo do Debian Social Contract)
Debian servers host some non-free-firmware
,
non-free
and contrib
packages.
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
.
Packages outside of the Debian system are hosted by Debian servers in the
non-free
, non-free-firmware
and
contrib
areas.
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
We acknowledge that some of our users require the use of works that do not
conform to the Debian Free Software Guidelines. We have created
"non-free
", "non-free-firmware
" and
"contrib
" areas in our archive for these works. The
packages in these areas are not part of the Debian system, although they
have been configured for use with Debian. We encourage CD manufacturers to
read the licenses of the packages in these areas and determine if they can
distribute the packages on their CDs. Thus, although non-free works are not
a part of Debian, we support their use and provide infrastructure for
non-free packages (such as our bug tracking system and mailing lists). The
Debian official media may include firmware that is otherwise not part of the
Debian system to enable use of Debian with hardware that requires such
firmware.
Nota | |
---|---|
The actual text of the 5th term in the current Debian Social Contract 1.2 is slightly different from the above text. This editorial deviation is intentional one to make this user document consistent without changing the real content of the Social Contract. |
Users should be aware of the risks of using packages in the
non-free
, non-free-firmware
and
contrib
areas:
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.
Typical non-free
, non-free-firmware
and contrib
packages include freely distributable
packages of following types:
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
.)
Firmware packages containing sourceless binary data such as ones listed in
Secção 9.10.5, “Controladores de hardware e firmware” as
non-free-firmware
. (mostly found in the
non-free-firmware/kernel
section.)
Pacotes de fontes e jogos com restrições comerciais de utilização e/ou modificação de conteúdo.
Please note that the number of non-free
,
non-free-firmware
and contrib
packages
is less than 2% of that of main
packages. Enabling
access to the non-free
,
non-free-firmware
and contrib
areas
does not obscure the source of packages. Interactive full screen use of
aptitude
(8) provides you with full visibility and control
over what packages are installed from which area to keep your system as free
as you wish.
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"
This declares a weak dependency like Suggests but works in the opposite direction.
"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 | |
---|---|
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.
Update ("apt update
",
"aptitude update
" ou "apt-get
update
"):
Obtém meta-dados do arquivo a partir do arquivo remoto
Re-constrói e atualiza os meta-dados locais para utilização do APT
Upgrade ("apt upgrade
"
e "apt full-upgrade
", ou "aptitude
safe-upgrade
" e "aptitude full-upgrade
", ou
"apt-get upgrade
" e "apt-get
dist-upgrade
"):
Choose candidate version which is usually the latest available version for all installed packages (see Secção 2.7.7, “Tweaking candidate version with apt-pinning” for exception)
Resolve a dependência do pacote
Obtém os pacotes binários selecionados do arquivo remoto se a versão candidata diferir da versão instalada
Desempacota os pacotes binários obtidos
Corre o script preinst
Instala os ficheiros binários
Corre o script postinst
Instalar ("apt install
…
", aptitude install …
" ou "apt-get
install …
"):
Choose packages listed on the command line
Resolve a dependência do pacote
Obtém os pacotes binários selecionados a partir do arquivo remoto
Desempacota os pacotes binários obtidos
Corre o script preinst
Instala os ficheiros binários
Corre o script postinst
Remover ("apt remove
…
", "aptitude remove …
" ou "apt-get
remove …
"):
Choose packages listed on the command line
Resolve a dependência do pacote
Corre o script prerm
Remove os ficheiros instalados excepto os ficheiros de configuração
Corre o script postrm
Purgar ("apt purge
",
"aptitude purge …
" ou "apt-get purge
…
"):
Choose packages listed on the command line
Resolve a dependência do pacote
Corre o script prerm
Remove os ficheiros instalados incluindo os ficheiros de configuração
Corre o script postrm
Aqui, saltei intencionalmente detalhes técnicos por causa da visão geral.
Deve ler a boa documentação oficial. O primeiro documento a ler é específico
de Debian
"/usr/share/doc/package_name/README.Debian
".
Também deve ser consultada outra documentação em
"/usr/share/doc/package_name/
". Se
definir a shell como Secção 1.4.2, “Personalizar bash”, escreva o
seguinte.
$ cd package_name
$ pager README.Debian
$ mc
Pode necessitar instalar o pacote de documentação correspondente, com o
sufixo "-doc
" no nome, para informações mais detalhadas.
Se estiver a ter problemas com um pacote específico, certifique-se que verifica primeiro o Sistema de acompanhamento de bugs Debian (BTS).
Tabela 2.5. Lista de sites web chave para resolver problemas com um pacote específico
site web | comando |
---|---|
Página inicial do Sistema de acompanhamento de bugs Debian (BTS) | sensible-browser "https://bugs.debian.org/" |
O relatório de bug de um nome de pacote conhecido | sensible-browser
"https://bugs.debian.org/nome_do_pacote" |
O relatório de bug de uma quantidade de bugs conhecida | sensible-browser
"https://bugs.debian.org/número_do_bug" |
Procure no Google com palavras de busca
incluindo "site:debian.org
",
"site:wiki.debian.org
",
"site:lists.debian.org
", etc.
Quando criar um relatório de bug, por favor use o comando
reportbug
(1).
Quando encontrar mais de 2 pacotes semelhantes e não sabe qual deles instalar sem o esforço de "teste e erro", deve utilizar algum senso comum. Considero os seguintes pontos como boas indicações dos pacotes preferidos:
Essencial: sim > não
Area: main > contrib > non-free
Prioridade: required > important > standard > optional > extra
Tasks: pacotes listados em tarefas como "Ambiente de Trabalho"
Packages selected by the dependency package (e.g., gcc-10
by gcc
)
Popcon: mais alto na votação e número de instalações
Changelog: atualizações regulares feitas pelo responsável do pacote
BTS: Nenhum bug RC (nenhum crítico, nenhum grave e nenhum bug sério)
BTS: manutenção responsável dos relatórios de bugs
BTS: maior quantidade de bugs corrigidos recentemente
BTS: menor quantidade de bugs "não-lista-de-desejos" remanescentes
O Debian, que é um projecto voluntário com modelo de desenvolvimento distribuído, o arquivo dele contém muitos pacotes com diferentes objetivos e qualidade. Tem de tomar as suas próprias decisões sobre o que fazer com eles.
Whatever suite of Debian system you may decide to use, you may still wish to run versions of programs which aren't available in that suite. Even if you find binary packages of such programs in other Debian suites or in other non-Debian resources, their requirements may conflict with your current Debian system.
Although you can tweak package management system with apt-pinning technique etc. as described in Secção 2.7.7, “Tweaking candidate version with apt-pinning” to instal such out-of-sync binary packages, such tweaking approaches have only limited use cases since they may break those programs and your system.
Before brutally installing such out-of-sync packages, you should seek all available alternative safer technical solutions which are compatible with your current Debian syetem.
Install such programs using corresponding sandboxed upstream binary packages (see Secção 7.7, “Sandbox”).
Create a chroot or similar environment and run such programs in it (see Secção 9.11, “Sistema virtualizado”).
CLI commands can be executed easily under its compatible chroot (see Secção 9.11.4, “Sistema chroot”).
Multiple full desktop environments can be tried easily without reboot (see Secção 9.11.5, “Sistemas de vários ambientes de trabalho”).
Build desired versions of binary packages which are compatible with your current Debian syetem by yourself.
This is a non-trivial task (see Secção 2.7.13, “Portar um pacote ao sistema stable”).
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:
O comando aptitude
não é recomendado para a atualização
de sistema de lançamento-a-lançamento do sistema Debian
stable
após um novo lançamento.
O uso de "apt full-upgrade
" ou "apt-get
dist-upgrade
" é recomendado para isso. Veja Bug #411280.
O comando aptitude
por vezes sugere a remoção em massa de
pacotes para a atualização do sistema no sistema Debian
testing
ou unstable
.
Esta situação já assustou muitos administradores de sistemas. Não entre em pânico.
Isto parece ser causado principalmente pela torção de versões entre os
pacotes que são dependências ou recomendações de um meta-pacote tal como o
gnome-core
.
Isto pode ser resolvido ao selecionar "Cancelar operações pendentes" no menu
de comandos do aptitude
, a terminar o
aptitude
e a usar "apt full-upgrade
".
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 | |
---|---|
É recomendado aos utilizadores usarem o novo comando
|
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
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 | |
---|---|
Apesar do comando |
Pode dar opções de comando logo após "aptitude
".
Tabela 2.7. Opções de comando notáveis para o aptitude
(8)
opção de comando | descrição |
---|---|
-s |
simula o resultado do comando |
-d |
apenas descarrega e não instala/atualiza |
-D |
mostra breves explicações antes das instalações e remoções automáticas |
Para mais veja aptitude
(8) e o "Manual de utilizador do
aptitude" em "/usr/share/doc/aptitude/README
".
Para gestão de pacotes interativa, arranque o aptitude
em
modo interativo a partir da linha de comandos da consola conforme o
seguinte:
$ sudo aptitude -u Password:
Isto atualiza a cópia local da informação do arquivo e mostra a lista de
pacotes em ecrã completo com menu. O aptitude coloca a configuração dele em
"~/.aptitude/config
".
Dica | |
---|---|
Se desejar utilizar a configuração do root em vez da do utilizador, utilize
" |
Dica | |
---|---|
O |
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:
Tabela 2.8. Lista de teclas de atalho do aptitude
tecla | tecla de atalho |
---|---|
F10 ou Ctrl-t |
menu |
? |
mostra a ajuda para teclas (listagem mais completa) |
F10 → Ajuda → Manual do Utilizador |
mostra o Manual do Utilizador |
u |
atualiza a informação de arquivo do pacote |
+ |
marca o pacote para atualização ou instalação |
- |
marca o pacote para remoção (manter os ficheiros de configuração) |
_ |
marca o pacote para purgar (remover ficheiros de configuração) |
= |
coloca o pacote em retenção (hold) |
U |
marca todos os pacotes com atualizações (funciona como full-upgrade) |
g |
começa a descarregar e a instalar os pacotes selecionados |
q |
sai do ecrã atual e guarda as alterações |
x |
sai do ecrã atual e descarta as alterações |
Enter |
ver informação acerca de um pacote |
C |
ver o relatório de alterações de um pacote |
l |
altera o limite dos pacotes mostrados |
/ |
procura pela primeira correspondência |
\ |
repetir a última pesquisa |
The file name specification of the command line and the menu prompt after
pressing "l
" and "//
" take the
aptitude regex as described below. Aptitude regex can explicitly match a
package name using a string started by "~n
" and followed
by the package name.
Dica | |
---|---|
Necessita pressionar " |
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 | |
---|---|
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, “Tweaking candidate version with apt-pinning”).
Estão disponíveis vários tipos de vistas de pacotes sob o menu
"Vistas
".
Tabela 2.9. Lista de vistas para o aptitude
vista | descrição da vista |
---|---|
Vista de Pacote |
veja Tabela 2.10, “A categorização das vista de pacotes standard” (predefinição) |
Recomendações de Auditoria |
lista pacotes que são recomendados por alguns pacotes instalados mas ainda não estão instalados |
Lista de Pacotes Lisa |
lista pacotes sem categorização (para utilizar com expressões regulares) |
Explorador de Debtags |
lista pacotes categorizados de acordo com as suas entradas debtags |
Source Package View |
list packages grouped by source packages |
Nota | |
---|---|
Por favor ajude-nos a melhorar a etiquetagem de pacotes com debtags! |
A "Vista de Pacotes
standard categoriza os pacotes de
certo modo como o dselect
com algumas funcionalidades
extra.
Tabela 2.10. A categorização das vista de pacotes standard
categoria | descrição da vista |
---|---|
Pacotes atualizáveis |
lista pacotes organizados como secção →
área → pacote |
Pacotes Novos |
, , |
Pacotes Instalados |
, , |
Pacotes Não Instalados |
, , |
Pacotes Obsoletos ou Criados Localmente |
, , |
Pacotes Virtuais |
lista pacotes com a mesma função |
Tarefas |
lista pacotes com diferentes funções geralmente necessárias para uma tarefa |
Dica | |
---|---|
A vista |
O aptitude oferece várias opções para procurar pacotes a utilizar a fórmula de expressões regulares dele.
Linha de comandos da shell:
"aptitude search 'aptitude_regex'
"
para listar estado de instalação, nome do pacote e descrição curta dos
pacotes correspondentes
"aptitude show 'package_name'
" para
listar a descrição detalhada do pacote
modo de ecrã total interativo:
"l
" para limitar a vista de pacotes aos pacotes
correspondentes
"/
" para procurar um pacote correspondente
"\
" para procurar um pacote correspondente a voltar para
trás
"n
" para procurar o próximo
"N
" para procurar o próximo (a andar para trás)
Dica | |
---|---|
A cadeia para nome_de_pacote é tratada como a
correspondência exata da cadeia para o nome do pacote a menos que seja
iniciada explicitamente com " |
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 | |
---|---|
Quando regex_pattern for uma string nula, coloca
" |
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 | |
---|---|
Com a versão |
A seleção de um pacote no aptitude
não puxa apenas os
pacotes definidos na lista de "Dependências:
" dele, mas
também os definidos na lista "Recomendados:
" se o menu
"F10
→ Opções → Preferências → Manuseamento de
dependências" assim estiver definido. Estes pacotes auto-instalados são
removidos automaticamente sob o aptitude
se não forem
mais necessários.
A flag que controla o comportamento "auto install" co comando
aptitude
também pode ser manipulada a usar o comando
apt-mark
(8) do pacote apt
.
Pode verificar o histórico de atividade de pacotes nos ficheiros log.
Tabela 2.12. Os ficheiros log para atividades de pacotes
ficheiro | conteúdo |
---|---|
/var/log/dpkg.log |
Log da atividade de nível do dpkg para as atividades de
todos os pacotes |
/var/log/apt/term.log |
Log da atividade genérica do APT |
/var/log/aptitude |
Log da atividade de comandos do aptitude |
Na realidade, não é muito fácil obter rapidamente uma compreensão significativa a partir destes logs. Veja Secção 9.3.9, “Gravar alterações em ficheiros de configuração” para um modo mais fácil.
Aqui estão alguns exemplos de operações do aptitude
(8).
Pode procurar os pacotes que satisfaçam as suas necessidades com o
aptitude
a partir da descrição do pacote ou a partir da
lista "Tarefas".
O seguinte comando lista pacotes com regex a condizer com nomes de pacotes.
$ aptitude search '~n(pam|nss).*ldap' p libnss-ldap - NSS module for using LDAP as a naming service p libpam-ldap - Pluggable Authentication Module allowing LDAP interfaces
Isto dá muito jeito para encontrar o nome exato de um pacote.
a expressão regular "~dipv6
" na vista "Nova Lista de
Pacotes Simples" com o aviso "l
", limita a vista aos
pacotes com a descrição correspondente e permite-lhe explorar
interativamente a informação deles.
Pode purgar todos os restantes ficheiros de configuração dos pacotes removidos.
Verifique os resultados do seguinte comando.
# aptitude search '~c'
Se julgar que os pacotes listados podem ser purgados, execute o seguinte comando:
# aptitude purge '~c'
Pode fazer o mesmo no modo interativo para um controle mais preciso.
Fornece a expressão regular "~c
" na vista "Nova Vista de
Pacotes" com a prompt "l
". Isto limita a vista de pacotes
apenas aos pacotes correspondentes à expressão regular, isto é, "removidos
mas não purgados". Todos estes pacotes correspondentes a expressões
regulares podem ser mostrados ao pressionar "[
" nos
cabeçalhos de nível de topo.
Depois pressione "_
" em cabeçalhos de nível de topo tal
como "Pacotes Não Instalados". Apenas os pacotes correspondentes à expressão
regular sob o cabeçalho são marcados para serem purgados com isto. Pode
excluir alguns pacotes a serem purgados ao pressionar "=
"
interativamente para cada um deles.
Esta técnica é muito útil e funciona com muitas outras teclas de comando.
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.).
Arranque o aptitude
em modo interativo como root.
Escreva "u
", "U
",
"f
" e "g
" para atualizar a lista de
pacotes e atualizar os pacotes.
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.
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.
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
".
Escreva "l
" para inserir o limite de amostragem de
pacotes como "~i
" depois escreva "m
"
sobre "Tasks
" para marcar esses pacotes como instalados
manualmente.
Termina o aptitude
.
Inicie "apt-get -s autoremove|less
" como root para
verificar os que não são usados.
Reinicie o aptitude
em modo interativo e marque os
pacotes necessários como "m
".
Reinicie o "apt-get -s autoremove|less
" como root para
verificar que o REMOVED contém apenas os pacotes esperados.
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 | |
---|---|
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. |
You can perform system wide upgrade to a newer release by changing contents
of the source list pointing to a new
release and running the "apt update; apt dist-upgrade
"
command.
To upgrade from stable
to testing
or
unstable
during the
bookworm
-as-stable
release
cycle, you replace "bookworm
" in the source list example of Secção 2.1.5, “Básico do arquivos Debian” with
"trixie
" or "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.
Leia as "Notas de Lançamento" anteriores.
Faça cópia de segurança a todo o sistema (especialmente dados e informação de configuração).
Tenha um meio de arranque à mão para o caso do gestor de arranque ficar danificado.
Informe os utilizadores do sistema com bastante antecedência.
Grave a atividade de atualização com o script
(1).
Para prevenir a remoção aplique "unmarkauto" aos pacotes necessários, p.e.,
"aptitude unmarkauto vim
", .
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.
Remove the "/etc/apt/preferences
" file (disable apt-pinning).
Tente a atualização em passos inteligentes: oldstable
→
stable
→ testing
→
unstable
.
Update the source list to point to new
archive only and run "aptitude update
".
Instale, opcionalmente, os novos pacotes de
base primeiro, ex., "aptitude install perl
".
Corra o comando "apt-get -s dist-upgrade
" para avaliar o
impacto.
Corra o comando "apt-get dist-upgrade
" em último lugar.
Cuidado | |
---|---|
Não é sensato saltar grandes lançamentos de Debian quando se atualiza entre
lançamentos |
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 | |
---|---|
Para um pacote com a funcionalidade multi-arch, pode precisar de especificar o nome da
arquitectura para alguns comandos. Por exemplo, use " |
Cuidado | |
---|---|
As ferramentas de pacotes de nível mais baixo como " |
Por favor note o seguinte:
Toda a configuração do sistema e comandos de instalação necessitam ser executados pelo root.
A contrário do aptitude
, que utiliza regex (veja Secção 1.6.2, “Expressões regulares”), os outros comandos de gestão de pacotes
utilizam padrões como a shell glob (veja Secção 1.5.6, “Glob da shell”).
O apt-file
(1), é disponibilizado pelo pacote
apt-file
, tem de correr previamente "apt-file
update
".
O configure-debian
(8) disponibilizado pelo pacote
configure-debian
corre o
dpkg-reconfigure
(8) como seu backend.
O dpkg-reconfigure
(8) corre scripts de pacote a utilizar
o debconf
(1) como o backend dele.
"apt-get build-dep
", "apt-get source
"
and "apt-cache showsrc
" commands require
"deb-src
" entry in the source
list.
Os dget
(1), debuild
(1) e
debi
(1) necessitam do pacote
devscripts
.
Veja o procedimento de (re)empacotamento a utilizar "apt-get
source
" em Secção 2.7.13, “Portar um pacote ao sistema stable”.
O comando make-kpkg
necessita do pacote
kernel-package
(veja Secção 9.10, “O kernel”).
Para empacotamento em geral veja Secção 12.9, “Criar um pacote Debian”.
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 | |
---|---|
Como a base de dados MD5sum pode ser adulterada por um intruso, o
|
Many users prefer to follow the testing (or unstable) releases of the Debian system for its new features and packages. This makes the system more prone to be hit by the critical package bugs.
A instalação do pacote apt-listbugs
salvaguarda o seu
sistema contra bugs críticos ao verificar automaticamente o Debian BTS por
bugs críticos quando fizer atualizações com o sistema APT.
A instalação do pacote apt-listchanges
disponibiliza
notícias importantes de "NEWS.Debian
" ao atualizar com o
sistema APT.
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.
The "dpkg -S file_name_pattern
" can
be used to search package names which contain files with the matching name
installed by dpkg
. But this overlooks files created by
the maintainer scripts.
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.
Os ficheiros de meta-dados para cada distribuição são armazenados sob
"dist/nome-de_código
" em cada site
mirror Debian, p.e., "http://deb.debian.org/debian/
". A
estrutura de arquivo dele pode ser explorada com um navegador web. Existem 6
tipos de meta-dados chave.
Tabela 2.14. O conteúdo dos meta dados do arquivo Debian
ficheiro | localização | conteúdo |
---|---|---|
Release |
topo da distribuição | descrição do arquivo e informação de integridade |
Release.gpg |
topo da distribuição | ficheiro de assinatura para o ficheiro "Release " assinado
com a chave do arquivo |
Contents-architecture |
topo da distribuição | lista de todos os ficheiros para todos os pacotes no arquivo pertinente |
Release |
topo de cada combinação de distribuição/área/arquitectura | descrição do arquivo utilizada para a regra do
apt_preferences (5) |
Packages |
topo de cada combinação de distribuição/área/arquitectura-binário | debian/control concatenado para pacotes binários |
Sources |
topo de cada combinação de distribuição/área/fonte | debian/control concatenado para pacotes fonte |
No arquivo recente, estes meta-dados são armazenados como ficheiros diferenciais e comprimidos para reduzir o tráfego de rede.
Dica | |
---|---|
O ficheiro " |
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 | |
---|---|
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". |
The integrity of the top level "Release
" file is verified
by cryptographic infrastructure called the secure
apt as described in 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.
The public Debian archive keys are locally installed by the latest
debian-archive-keyring
package.
The secure APT system automatically
verifies the integrity of the downloaded top level
"Release
" file cryptographically by this
"Release.gpg
" file and the locally installed public
Debian archive keys.
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”).
If the source list entry specifies the
"signed-by
" option, the integrity of its downloaded top
level "Release
" file is verified using specified public
key. This is useful when the source list
contains non-Debian archives.
Dica | |
---|---|
The use of |
Also, you can manually verify the integrity of the
"Release
" file with the "Release.gpg
"
file and the public Debian archive key posted on ftp-master.debian.org using
gpg
.
Dica | |
---|---|
Os ficheiros " |
There are archive level "Release
" files for all archive
locations specified by the source list,
such as
"http://deb.debian.org/debian/dists/unstable/main/binary-amd64/Release
"
or
"http://deb.debian.org/debian/dists/sid/main/binary-amd64/Release
"
as follows.
Archive: unstable Origin: Debian Label: Debian Component: main Architecture: amd64
Cuidado | |
---|---|
Para a estrofe " |
Para alguns arquivos, tais como experimental
e
bookworm-backports
, que contêm pacotes que não
devem ser instalados automaticamente, existe uma linha extra, p.e.,
"http://deb.debian.org/debian/dists/experimental/main/binary-amd64/Release
"
como a seguir.
Archive: experimental Origin: Debian Label: Debian NotAutomatic: yes Component: main Architecture: amd64
Por favor note que para arquivos normais sem "NotAutomatic:
yes
", o valor Pin-Priority predefinido é 500, enquanto que para
arquivos especiais com "NotAutomatic: yes
", o valor
Pin-Priority predefinido é 1 (veja apt_preferences
(5) e
Secção 2.7.7, “Tweaking candidate version with apt-pinning”).
When APT tools, such as aptitude
,
apt-get
, synaptic
,
apt-file
, auto-apt
, … are used, we
need to update the local copies of the meta data containing the Debian
archive information. These local copies have following file names
corresponding to the specified distribution
,
area
, and architecture
names in
the source list (see 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
)
First 4 types of files are shared by all the pertinent APT commands and
updated from command line by "apt-get update
" or
"aptitude update
". The "Packages
"
meta data are updated if the "deb
" is specified in
the source list. The
"Sources
" meta data are updated if the
"deb-src
" is specified in the
source 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.)
Além dos meta-dados obtidos remotamente, a ferramenta APT após o
lenny
armazena a informação de estado de instalação dela
gerada localmente em "/var/lib/apt/extended_states
" que é
utilizada por todas as ferramentas do APT para seguirem todos os pacotes
auto-instalados.
Além aos meta-dados obtidos remotamente, o aptitude
armazena a sua informação de estado de instalação gerada localmente em
"/var/lib/aptitude/pkgstates
" que é usada apenas pelo
próprio.
Todos os pacotes obtidos remotamente através do mecanismo APT são
armazenados em "/var/cache/apt/archives
" até que sejam
limpos.
Esta politica de limpeza de ficheiros de cache para o
aptitude
pode ser definida em "Opções
"
→ "Preferências
" e pode ser forçada pelo seu menu
"Limpar cache de pacotes
" ou "Limpar ficheiros
obsoletos
" em "Acções
".
Ficheiros de pacotes Debian têm estruturas de nomes particulares.
Tabela 2.15. A estrutura de nomes dos pacotes Debian
tipo de pacote | estrutura de nomes |
---|---|
O pacote binário (a.k.a deb ) |
nome_de_pacote_versão_upstream-versão-debian_arquitetura.deb |
O pacote binário para debian-installer (a.k.a udeb ) |
nome_de_pacote_versão_upstream-versão-debian_arquitetura.udeb |
O pacote fonte (código-fonte atual) | nome_de_pacote_versão_upstream-versão-debian.orig.tar.gz |
O pacote de código-fonte 1.0 (alterações do Debian) |
nome_de_pacote_versão_upstream-versão-debian.diff.gz |
O pacote de código-fonte 3.0 (quilt) (alterações do
Debian) |
nome_de_pacote_versão_upstream-versão-debian.debian.tar.gz |
O pacote de código-fonte (descrição) | nome_do_pacote_versão_upstream-versão-debian.dsc |
Dica | |
---|---|
Aqui apenas são descritos formatos de pacote fonte básicos. Veja mais em
|
Tabela 2.16. Os caracteres utilizáveis para cada componente nos nomes de pacotes Debian
componente do nome | caracteres utilizáveis (ERE regex) | existência |
---|---|---|
nome-do-pacote |
[a-z0-9][-a-z0-9.+]+ |
necessário |
epoch: |
[0-9]+: |
opcional |
versão-upstream |
[-a-zA-Z0-9.+:]+ |
necessário |
versão.debian |
[a-zA-Z0-9.+~]+ |
opcional |
Nota | |
---|---|
Pode verificar a ordem da versão de pacotes com o
|
Nota | |
---|---|
O debian-installer (d-i)
utiliza |
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:
Desempacota o ficheiro deb (equivalente a "ar -x
")
Executa "nome_de_pacote.preinst
" a
utilizar o debconf
(1)
Instala o conteúdo do pacote no sistema (equivalente a "tar
-x
")
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 | |
---|---|
No ambiente do debian-installer, o
comando |
O sistema Debian tem um mecanismo para instalar programas de certa maneira
sobrepostos de um modo pacífico a usar
update-alternatives
(1). Por exemplo, pode fazer o comando
vi
selecionar o vim
para executar
enquanto instala ambos os pacotes vim
e
nvi
.
$ ls -l $(type -p vi) lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi $ sudo update-alternatives --display vi ... $ sudo update-alternatives --config vi Selection Command ---------------------------------------------- 1 /usr/bin/vim *+ 2 /usr/bin/nvi Enter to keep the default[*], or type selection number: 1
O sistema de alternativas do Debian mantêm a sua seleção como ligação
simbólica em "/etc/alternatives/
". O processo de seleção
utiliza um ficheiro correspondente em
"/var/lib/dpkg/alternatives/
".
Stat overrides disponibilizados pelo
comando dpkg-statoverride
(8) são um modo de dizer ao
dpkg
(1) para usar um dono ou modo diferente para um
ficheiro quando um pacote for
instalado. Se for especificado "--update
" e o ficheiro
existir é imediatamente definido para o novo dono e modo.
Cuidado | |
---|---|
A alteração directa do dono ou modo para um ficheiro cujo dono é o pacote a usar os comandos
|
Nota | |
---|---|
Uso a palavra ficheiro aqui, mas na
verdade pode ser qualquer objecto de sistema de ficheiros com que o
|
As diversões de ficheiros
disponibilizadas pelo comando dpkg-divert
(8) são um modo
de forçar o dpkg
(1) a não instalar um ficheiro na
localização predefinida dele, mas para uma localização divergida. Os uso do dpkg-divert
destina-se aos scripts do responsável do pacote. A utilização casual dele
pelo administrador do sistema está descontinuada.
When running testing
or unstable
system, the administrator is expected to recover from broken package
management situation.
Cuidado | |
---|---|
Alguns métodos descritos aqui são acções de alto risco. Foi avisado! |
If you force to install a package by "sudo dpkg -i ...
"
to a system without all dependency packages installed, the package
installation will fail as partially installed.
You should install all dependency packages using APT-system or
"sudo dpkg -i ...
".
Then, configure all partially installed packages with the following command.
# dpkg --configure -a
Caching errors of the package data cause intriguing errors, such as "GPG error: ... invalid: BADSIG ..." with APT.
You should remove all cached data by "sudo rm -rf /var/lib/apt/*
" and try again. (If apt-cacher-ng
is used, you
should also run "sudo rm -rf /var/cache/apt-cacher-ng/*
".)
If a desktop GUI program experienced instability after significant upstream version upgrade, you should suspect interference with old local configuration files created by it. If it is stable under a newly created user account, this hypothesis is confirmed. (This is a bug of packaging and usually avoided by the packager.)
Para recuperar a estabilidade, deve mover os ficheiros de configuração locais correspondentes e reiniciar o programa GUI. Poderá ter que ler o conteúdo dos ficheiros de configuração antigos para mais tarde recuperar informação de configuração. (Não os apague muito depressa.)
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, “Packages from mixed source of archives without 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 | |
---|---|
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
|
Pode contornar tal problema de instalação ao remover primeiro o pacote
ofensivo antigo, pacote_antigo
.
$ sudo dpkg -P old-package
Quando um comando no script do pacote retorna erro por alguma razão e o script termina com erro, o sistema de gestão de pacotes aborta a acção dele e termina com pacotes parcialmente instalados. Quando um pacote contém bugs nos seus scripts de remoção, o pacote pode tornar-se impossível de remover e isso é bastante desagradável.
Para o problema do script de pacote de
"nome_do_pacote
", deve observar os
seguintes scripts do pacote:
"/var/lib/dpkg/info/nome_do_pacote.preinst
"
"/var/lib/dpkg/info/nome_do_pacote.postinst
"
"/var/lib/dpkg/info/nome_do_pacote.prerm
"
"/var/lib/dpkg/info/nome_do_pacote.postrm
"
Editar o script do pacote ofensivo a partir de root a usar as seguintes técnicas:
desativar a linha ofensiva ao preceder um "#
"
forçar um retorno com sucesso ao acrescentar a linha ofensiva com
"|| true
"
Then, follow Secção 2.6, “Recuperação de um sistema danificado”.
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 | |
---|---|
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.
Arranque o sistema a usar o CD de instalação de Debian (debian-installer) em modo de recuperação.
Monte o sistema danificado no disco rígido em "/target
".
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 | |
---|---|
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 | |
---|---|
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. |
Se por qualquer razão o "/var/lib/dpkg/status
" ficar
corrompido o sistema Debian perde os dados de seleção de pacotes e sofre
severamente. Procure o ficheiro antigo
"/var/lib/dpkg/status
" em
"/var/lib/dpkg/status-old
" ou
"/var/backups/dpkg.status.*
".
Manter "/var/backups/
" numa partição separada pode ser
uma boa ideia porque este diretório contém muitos dados importantes do
sistema .
Em caso de sérios danos recomendo fazer uma instalação limpa após fazer a
salvaguarda do sistema. Mesmo que tudo em "/var/
" esteja
perdido, ainda pode recuperar alguma informação dos diretórios em
"/usr/share/doc/
" para guiar a sua nova instalação.
Reinstalar o sistema mínimo (ambiente de trabalho).
# mkdir -p /path/to/old/system
Monte o sistema antigo em
"/caminho/para/sistema/antigo/
".
# cd /path/to/old/system/usr/share/doc # ls -1 >~/ls1.txt # cd /usr/share/doc # ls -1 >>~/ls1.txt # cd # sort ls1.txt | uniq | less
Então ser-lhe-ão apresentados nomes de pacotes para instalar. (Podem existir
alguns nomes que não de pacotes como "texmf
".)
For simplicity, the source list examples
in this section are presented as "/etc/apt/sources.list
"
in one-line-style after the bookworm
release.
Apesar do nome do responsável listado em
"/var/lib/dpkg/available
" e
"/usr/share/doc/package_name/changelog
" fornecer alguma
informação sobre "quem está por detrás a atividade de empacotamento", quem
faz o upload real do pacote é um tanto obscuro. O
who-uploads
(1) no pacote devscripts
identifica quem foi o uploader real dos pacotes fonte Debian.
Se desejar limitar a largura de banda para o APT a, por exemplo, 800Kib/sec (=100kiB/sec), deve configurar o APT e o parâmetro de configuração dele conforme o seguinte.
APT::Acquire::http::Dl-Limit "800";
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";
If you are running an testing
or
unstable
system, you do not want to use the automatic
upgrade since it certainly breaks system some day. Even for such
testing
or unstable
case, you may
still want to download packages in advance to save time for the interactive
upgrade with configuration parameters as the following.
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "0";
There are stable-updates
("bookworm
-updates" during the
bookworm
-as-stable
release
cycle) and backports.debian.org
archives which provide upgrade packages for 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 | |
---|---|
Do not install too many packages from backports.debian.org archives. It may cause package dependency complications. See Secção 2.1.11, “How to cope with conflicting requirements” for alternative solutions. |
Atenção | |
---|---|
You should be aware that the external package gains the root priviledge to your system. You should only use the trusted external package archive. See Secção 2.1.11, “How to cope with conflicting requirements” for alternative solutions. |
You can use secure APT with Debian-compatible external package archive by
adding it to the source list and its
archive key file into the "/etc/apt/trusted.gpg.d/
"
directory. See sources.list
(5),
apt-secure
(8) and apt-key
(8).
Cuidado | |
---|---|
Installing packages from mixed source of archives is not supported by the
official Debian distribution except for officially supported particular
combinations of archives such as |
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
.
Altere o ficheiro "/etc/apt/sources.list
" temporariamente
para entrada única "unstable
".
Corra "aptitude update
".
Corra "aptitude install
nome-do-pacote
".
Recupere o ficheiro "/etc/apt/sources.list
" original para
testing
.
Corra "aptitude update
".
You do not create the "/etc/apt/preferences
" file nor
need to worry about apt-pinning with this
manual approach. But this is very cumbersome.
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.
Pacotes não-binários de ("Arquitecture: all
") são
mais seguro para instalar.
pacotes de documentação: sem requisitos especiais
pacotes de programa interpretador: tem de estar disponível interpretador compatível
Pacotes binários (não "Architecture: all
") geralmente
enfrentam muitos obstáculos e são inseguros para instalar.
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 | |
---|---|
Except to avoid broken package for a short term, installing binary packages from non-Debian archives is generally bad idea. You should seek all available alternative safer technical solutions which are compatible with your current Debian syetem (see Secção 2.1.11, “How to cope with conflicting requirements”). |
Atenção | |
---|---|
Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it. |
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 | |
---|---|
A regra de comparação da string de versão pode ser verificada com, p.e.,
" |
Quando instala regularmente pacotes de uma mistura de fontes de arquivos
(veja Secção 2.7.6, “Packages from mixed source of archives without 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.
When using apt-pinning, you must ensure compatibility of packages by yourself since the Debian does not guarantee it. The apt-pinning is completely optional operation and its use is not something I encourage you to use.
Archive level Release files (see Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”) are used for the rule of
apt_preferences
(5). Thus apt-pinning works only with "suite" name for normal Debian archives and security Debian archives. (This is
different from Ubuntu archives.) For example,
you can do "Pin: release a=unstable
" but can not do
"Pin: release a=sid
" in the
"/etc/apt/preferences
" file.
When you use non-Debian archive as a part of apt-pinning, you should check what they are intended for and also check their credibility. For example, Ubuntu and Debian are not meant to be mixed.
Nota | |
---|---|
Even if you do not create the " |
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.
Tabela 2.18. Lista de valores notáveis de Pin-Priority para a técnica de apt-pinning.
Pin-Priority | apt-pinning effects to the package |
---|---|
1001 | instala o pacote mesmo que isto constitua uma regressão na versão (downgrade) do pacote |
990 | utilizado como predefinição para o arquivo de lançamento de destino |
500 | utilizado por predefinição para o arquivo normal |
100 | utilizado como predefinição para os arquivos NotAutomatic e ButAutomaticUpgrades |
100 | utilizado para o pacote instalado |
1 | utilizado como predefinição para o arquivo NotAutomatic |
-1 | nunca instala o pacote mesmo que este seja recomendado |
The target release archive can be set by
the command line option, e.g., "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 | |
---|---|
Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it. |
Se desejar não puxar determinados pacotes automaticamente através de
"Recommends", tem de criar o ficheiro
"/etc/apt/preferences
" e listar explicitamente esses
pacotes no topo conforme a seguir:
Package: package-1 Pin: version * Pin-Priority: -1 Package: package-2 Pin: version * Pin-Priority: -1
Atenção | |
---|---|
Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it. |
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/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 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 | |
---|---|
Tenha cuidado para não remover a entrada " |
Dica | |
---|---|
Geralmente edito o ficheiro " |
Dica | |
---|---|
Se for utilizado " |
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 | |
---|---|
This apt-pinning technique is valid even
when you are tracking |
Atenção | |
---|---|
Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it. |
Aqui está outro exemplo de técnica de apt-pinning para incluir pacotes de versão de
origem mais recentes encontrados em experimental
enquanto
segue unstable
. Lista todos os arquivos necessários no
ficheiro "/etc/apt/sources.list
" conforme o seguinte:
deb http://deb.debian.org/debian/ unstable main contrib non-free deb http://deb.debian.org/debian/ experimental main contrib non-free deb http://security.debian.org/ testing-security main contrib
O valor Pin-Priority predefinido para o arquivo
experimental
é sempre 1 (<<100) porque é um arquivo
NotAutomatic (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”). Não é necessário definir o valor
Pin-Priority explicitamente no ficheiro
"/etc/apt/preferences
" apenas para usar o arquivo
experimental
a menos que deseje seguir pacotes
particulares nele automaticamente para a próxima atualização.
Atenção | |
---|---|
Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it. |
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, “Tweaking candidate version with 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 | |
---|---|
É 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. |
Se vai compilar um programa a partir do código-fonte para substituir um
pacote Debian, o melhor é torná-lo num pacote local realmente 'debianizado'
(*.deb
) e utilizar um arquivo privado.
Se escolher compilar um programa de fonte e instalá-lo sob
"/usr/local
", pode necessitar de utilizar o
equivs
como último recurso para satisfazer as
dependências em falta para o pacote.
Package: equivs Priority: optional Section: admin Description: Circumventing Debian package dependencies This package provides a tool to create trivial Debian packages. Typically these packages contain only dependency information, but they can also include normal installed files like other packages do. . One use for this is to create a metapackage: a package whose sole purpose is to declare dependencies and conflicts on other packages so that these will be automatically installed, upgraded, or removed. . Another use is to circumvent dependency checking: by letting dpkg think a particular package name and version is installed when it isn't, you can work around bugs in other packages' dependencies. (Please do still file such bugs, though.)
Cuidado | |
---|---|
There is no gurantee for the procedure descried here to work without extra manual efforts for system differences. |
Para atualizações parciais do sistema stable
, é desejável
reconstruir um pacote dentro do ambiente dele a utilizar um pacote de
código-fonte. Isto evita atualizações maciças de pacotes devido às suas
dependências.
Adicione as seguintes entradas ao "/etc/apt/sources.list
"
num sistema stable
.
deb-src http://deb.debian.org/debian unstable main contrib non-free
Instale os pacotes necessários para a compilação e descarregue o pacote de código-fonte conforme o seguinte:
# apt-get update # apt-get dist-upgrade # apt-get install fakeroot devscripts build-essential # apt-get build-dep foo $ apt-get source foo $ cd foo*
atualize alguns pacotes de correntes de ferramentas como o
dpkg
e o debhelper
a partir de pacotes
de backport se forem necessários para o "backporting".
Execute o seguinte.
$ dch -i
Aumentar a versão do pacote, p.e. um com "+bp1
"
acrescentado em "debian/changelog
"
Compile os pacotes e instale-os para o sistema com o seguinte:
$ debuild $ cd .. # debi foo*.changes
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.
Tabela 2.19. Lista de ferramentas proxy especiais para arquivos Debian
pacote | popcon | tamanho | descrição |
---|---|---|---|
approx
|
V:0, I:0 | 7124 | servidor proxy de cache para ficheiros de arquivo Debian (programa OCaml compilado) |
apt-cacher
|
V:0, I:0 | 266 | Proxy de cache para pacotes Debian e ficheiros de código-fonte (programa Perl) |
apt-cacher-ng
|
V:4, I:4 | 1816 | Proxy de cache para distribuição de pacotes de software (programa C++ compilado) |
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. |
Pode aprender mais sobre a gestão de pacotes a partir das seguintes documentações.
Documentações principais sobre a gestão de pacotes:
aptitude
(8), dpkg
(1),
tasksel
(8), apt
(8),
apt-get
(8), apt-config
(8),
apt-secure
(8), sources.list
(5),
apt.conf
(5), and apt_preferences
(5);
"/usr/share/doc/apt-doc/guide.html/index.html
" e
"/usr/share/doc/apt-doc/offline.html/index.html
" do
pacote apt-doc
; e
"/usr/share/doc/aptitude/html/en/index.html
" do pacote
aptitude-doc-en
.
Documentações oficiais e detalhadas no arquivo Debian:
Tutorial para construir um pacote Debian para utilizadores de Debian: