Índice
apt-get
/ apt-cache
contra o
aptitude
testing
com alguns pacotes de
unstable
unstable
com alguns pacotes de
experimental
![]() |
Nota |
---|---|
Este capítulo é escrito assumindo que o lançamento estável mais recente tem
o nome de código: |
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 seu arquivo.
O arquivo Debian é oferecido por muitos sites mirror remotos para acesso através de métodos HTTP e FTP. Também está disponível em CD-ROM/DVD.
O 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. Actualmente, existem 44893 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. Actualmente, recomendamos o seguinte:
apt-get(8) para todas as operações de linha de comandos, incluindo a instalação e remoção de pacotes, e dist-upgrade.
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 |
---|---|---|---|
apt
|
V:842, I:999 | 3724 |
Advanced Packaging Tool (APT), front-end para o dpkg que
disponibiliza os métodos "http ",
"ftp ", e "file " para acesso a arquivos
(comandos apt-get /apt-cache incluídos)
|
aptitude
|
V:232, I:991 | 4532 | Gestor de pacotes baseado em terminal interactivo com aptitude(8) |
tasksel
|
V:45, I:968 | 718 | ferramenta para seleccionar tarefas para instalação no sistema Debian (frontend para o APT) |
unattended-upgrades
|
V:73, I:455 | 343 | pacote de melhoria para o APT para activar a instalação automática de actualizações de segurança |
dselect
|
V:10, I:130 | 2620 | gestor de pacotes baseado em terminal (foi o standard anterior, frontend para o APT e outros métodos de acesso antigos) |
dpkg
|
V:918, I:999 | 6656 | sistema de gestão de pacotes para Debian |
synaptic
|
V:96, I:471 | 7672 | gestor de pacotes gráfico (frontend do GNOME para o APT) |
apt-utils
|
V:302, I:996 | 1393 | Programas utilitários do APT: apt-extracttemplates(1), apt-ftparchive(1), e apt-sortpkgs(1) |
apt-listchanges
|
V:385, I:790 | 446 | ferramenta de notificação do histórico de alterações do pacote |
apt-listbugs
|
V:8, I:13 | 520 | lista bugs críticos antes de cada instalação do APT |
apt-file
|
V:18, I:86 | 131 | Utilitário de busca de pacotes do APT - interface de linha de comandos |
apt-rdepends
|
V:1, I:8 | 64 | 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 seu 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 seu melhor para tornar a sua experiência de actualizaçã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 você activou manualmente 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ências 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. |
O administrador novato de sistemas Debian deve
manter-se com o lançamento stable
de Debian e aplicar
apenas as actualizações de segurança. Eu quero dizer que é melhor evitar
algumas das seguintes acções válidas, como uma precaução, até que você
compreenda muito bem o sistema Debian. Aqui ficam algumas lembranças.
Não inclua testing
ou
unstable
em
"/etc/apt/sources.list
".
Não misture Debian standard com outros arquivos que não sejam Debian, como o
Ubuntu em "/etc/apt/sources.list
".
Não crie "/etc/apt/preferences
".
Não altere o comportamento predefinido das ferramentas de gestão de pacotes através de ficheiros de configuração sem conhecer os seus impactos totais.
Não instale pacotes aleatórios com "dpkg -i
<qualquer_pacote>
".
Nunca instale pacotes aleatórios com "dpkg --force-all -i
<qualquer_pacote>
".
Não apague ou altere os ficheiros em "/var/lib/dpkg/
".
Não sobrescreva ficheiros do sistema ao instalar programas compilados a partir do código-fonte.
Instale-os em "/usr/local
" ou "/opt
",
se necessário.
Os efeitos não-compatíveis causados ao sistema de gestão de pacotes de Debian, pelas acções referidas acima, podem deixar o seu sistema inutilizado.
O administrador de sistema Debian sério que corre servidores de missões críticas, deve tomar precauções extra.
Não instale nenhuns pacotes incluindo as actualizações de segurança da Debian sem os testar completamente com as suas configurações particulares sob condições seguras.
Você 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ó.
Apesar dos meus avisos em cima, eu sei que muitos leitores deste documento
desejam correr as suites testing
ou
unstable
de Debian como o seu sistema principal para
ambientes de trabalho
auto-administrados. Isto porque funcionam muito bem, são
actualizadas frequentemente, e oferecem as funcionalidades mais recentes.
![]() |
Cuidado |
---|---|
Para o seu servidor de produção, é
recomendada a suite |
Não é preciso mais do que simplesmente definir a string da distribuição em
"/etc/apt/sources.list
" para o nome de suite:
"testing
" ou "unstable
"; ou o nome de
código: "stretch
" ou
"sid
". Isto fá-lo viver a vida das actualizações eternas.
O uso de testing
ou unstable
é
muito divertido mas vem com alguns
riscos. Embora a suite unstable
do sistema Debian pareça
muito estável na maior parte do tempo, tem havido alguns problemas com
pacotes nas suites testing
e unstable
do sistema Debian e alguns deles não foram triviais de resolver. Poderá ser
muito doloroso para si. Por vezes, você
pode ter um pacote danificado ou uma funcionalidade em falta por algumas
semanas.
Aqui estão algumas ideias para assegurar recuperação fácil e rápida de bugs nos pacotes Debian:
Faça um sistema de duplo arranque ao
instalar a suite stable
do sistema Debian noutra
partição.
Tenha o CD de instalação 'à mão' para o arranque de recuperação
Considere instalar o apt-listbugs
para verificar
informação do Debian Bug Tracking
System (BTS) antes das actualizações
Conheça o suficiente da infraestrutura do sistema de pacotes para contornar o problema
Crie um chroot ou ambiente semelhante para antecipadamente correr nele o sistema mais recente (veja Secção 9.10, “Sistema virtualizado”)
(Se você não conseguir fazer nenhumas destas acções de precaução,
provavelmente não está preparado para as suites testing
e
unstable
.)
O Esclarecimento com o seguinte salva uma pessoa do karma da eterna luta do inferno das actualizações e permite-lhe alcançar o nirvana de Debian.
Vamos olhar para o arquivo Debian a partir da perspectiva do utilizador do sistema.
![]() |
Dica |
---|---|
A política oficial do arquivo Debian está definida em Manual de Políticas Debian, Capítulo 2 - O Arquivo Debian. |
Para o típico acesso HTTP, o arquivo está especificado no ficheiro
"/etc/apt/sources.list
" como o seguinte exemplo para o
sistema stable
= jessie
actual.
deb http://ftp.XX.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.XX.debian.org/debian/ jessie main contrib non-free deb http://security.debian.org/ jessie/updates main contrib deb-src http://security.debian.org/ jessie/updates main contrib
Por favor note que "ftp.XX.debian.org
" tem de ser
substituído com o URL do mirror apropriado para a sua localização, para EUA
"ftp.us.debian.org
", o qual pode ser encontrado em a lista de mirrors Debian de todo o
mundo. O estado destes servidores pode ser verificado no Debian Mirror Checker.
Aqui, eu uso o nome de código "jessie
" em vez
do nome de suite "stable
" para evitar surpresas quando a
próxima stable
for lançada.
O significado de "/etc/apt/sources.list
" é descrito em
sources.list(5)
e os pontos chave são os seguintes:
A linha "deb
" define os pacotes binários.
A linha "deb-src
" define os pacotes fonte.
O 1º argumento é o URL raiz do arquivo Debian.
O 2º argumento é o nome da distribuição: seja o nome de suite ou o nome de código.
O 3º argumento e seguintes são a lista de nomes de área de arquivo válidos do arquivo Debian.
As linhas "deb-src
" pode ser omitidas (ou comentadas ao
colocar um "#" no inicio da linha) se for apenas para o
aptitude
o qual não acede a meta-dados relacionados com a
fonte. Isso acelera as actualizações dos meta-dados do arquivo. O URL pode
ser "http://
", "ftp://
",
"file://
", ….
![]() |
Dica |
---|---|
Se for usado " |
Aqui está uma lista de URLs de sites de arquivo Debian e nomes das suites ou nomes de código utilizados no ficheiro de configuração.
Tabela 2.2. Lista de sites de arquivos Debian
URL do arquivo | nome da suite (nome de código) | objectivo |
---|---|---|
http://ftp.XX.debian.org/debian/ | stable (jessie )
|
lançamento (jessie) stable |
http://ftp.XX.debian.org/debian/ | testing (stretch )
|
lançamento (stretch) testing |
http://ftp.XX.debian.org/debian/ | unstable (sid )
|
lançamento (sid) unstable |
http://ftp.XX.debian.org/debian/ |
experimental
|
pré-lançamento experimental (opcional, apenas para desenvolvedores) |
http://ftp.XX.debian.org/debian/ |
stable-proposed-updates
|
Actualizações para o próximo lançamento de ponto estável (opcional) |
http://security.debian.org/ |
stable/updates
|
actualizações de segurança para o lançamento stable (importante) |
http://security.debian.org/ |
testing/updates
|
actualizações de segurança para o lançamento testing (importante) |
http://ftp.XX.debian.org/debian/ |
jessie-updates
|
actualizações compatíveis para filtro de spam, clientes IM, etc. para jessie |
http://ftp.XX.debian.org/debian/ |
jessie-backports
|
pacotes backport mais recentes para jessie (opcional) |
![]() |
Cuidado |
---|---|
Apenas o puro lançamento |
![]() |
Cuidado |
---|---|
Basicamente você deve listar apenas uma das suites
|
![]() |
Dica |
---|---|
Para o sistema Debian com as suites |
![]() |
Nota |
---|---|
Os bugs de segurança do arquivo |
Tabela 2.3. Lista de área de arquivo Debian
área | número de pacotes | critério do componente do pacote |
---|---|---|
main
|
44118 |
em conformidade com DFSG e nenhuma dependência a non-free
|
contrib
|
266 |
em conformidade com DFSG mas com dependências a non-free
|
non-free
|
509 | não complacente com DFSG |
Aqui o número de pacotes em cima é para a arquitectura amd64. A área
main
disponibiliza o sistema Debian (veja Secção 2.1.5, “Debian é 100% software livre”).
A organização do arquivo Debian pode ser melhor estudada ao apontar o seu
explorador 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 jessie
|
nome de código = jessie
|
nome de código = stretch
|
nome de código = sid
|
após o lançamento stretch
|
nome de código = stretch
|
nome de código = buster
|
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 desenvolvedor 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 actualização importante de biblioteca ou etc., geralmente existe um anúncio na lista de email debian-devel etc.
Antes que um conjunto de pacotes seja movido pelo script de manutenção do
arquivo Debian do arquivo unstable
para o arquivo
testing
, o script de manutenção do arquivo não verifica
apenas a maturidade (cerca de 10 dias de idade) e o estado dos relatórios de
bug RC para os pacotes mas também tenta assegurar que sejam compatíveis com
o conjunto de pacotes mais recente no arquivo
testing
. Este processo torna o arquivo
testing
muito actual e utilizável.
Através do processo de congelamento gradual do arquivo liderado pela equipa
de lançamento, o arquivo testing
é amadurecido para o
tornar completamente consistente e livre de bugs com algumas intervenções
manuais. Então o novo lançamento stable
é criado ao
atribuir o nome de código do antigo arquivo testing
ao
novo arquivo stable
e criando um novo nome de código para
o novo arquivo testing
. O conteúdo inicial do novo
arquivo testing
é exactamente o mesmo que o arquivo
stable
recentemente lançado.
Ambos os arquivos unstable
e testing
podem sofrer falhas temporárias devido a vários factores:
Upload, para o arquivo, de pacotes danificados (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 você decidir utilizar estes arquivos, deverá ser capaz de corrigir ou contornar este tipo de problemas.
![]() |
Cuidado |
---|---|
Durante alguns meses após um novo lançamento de |
![]() |
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
.
Nenhum pacote no main
depende ou recomenda pacotes do
non-free
ou do contrib
.
Algumas pessoas pensam se os 2 seguintes factos se contradizem ou não.
"Debian irá manter-se 100% livre". (Primeiro termo do Debian Social Contract)
Os servidores Debian irão alojar alguns pacotes non-free
e contrib
.
Estes não se contradizem, devido ao seguinte.
O sistema Debian é 100% livre e os seus pacotes estão alojados em servidores
Debian na área main
.
Os pacotes fora do sistema Debian são alojado em servidores Debian nas áreas
non-free
e contrib
.
Isto é perfeitamente explicado nos termos 4º e 5º do Debian Social Contract:
As nossas prioridades são os nossos utilizadores e o software livre
Seremos guiados pelas necessidades dos nossos utilizadores e da comunidade de software livre. Iremos colocar o seu interesse 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 contendo o sistema Debian com outros trabalhos, sem qualquer taxa para nós. Para apoio destes objectivos, iremos disponibilizar um sistema integrado de materiais de alta qualidade sem restrições legais que previnam tais utilizações do sistema.
Trabalhos que não coincidem com os nossos standards de software livre
Nós reconhecemos que alguns dos nossos utilizadores necessitam utilizar
trabalhos que não estão de acordo com a Debian Free Software Guidelines. Nós
criamos no nosso arquivo as áreas "contrib
" e
"non-free
" para esses trabalhos. Os pacotes nessas áreas
não fazem parte do sistema Debian, embora tenham sido configurados para
serem utilizados com Debian. Nós encorajamos os fabricantes de CDs a ler as
licenças dos pacotes nessas áreas e determinar se podem distribuir os
pacotes nos seus CDs. Por isso, embora os trabalhos não-livres não sejam
parte de Debian, nós suportamos a sua utilização e disponibilizamos
infra-estrutura para os pacotes não-livres (tal como o nosso sistema de
seguimento de bugs e listas de email).
Os utilizadores devem estar cientes dos riscos da utilização de pacotes das
áreas non-free
e contrib
:
falta de liberdade para tais pacotes de software
falta de suporte Debian em tais pacotes de software (Debian não pode suportar devidamente software sem ter acesso ao seu código-fonte.)
contaminação do seu sistema Debian 100% livre
As Debian Free Software Guidelines são os standards de software livre para Debian. Debian interpreta "software" no âmbito mais amplo incluindo documentação, firmware, logo e dados artísticos no pacote. Isto torna os standards de software livre de Debian muito rigorosos.
De modo a respeitar estes restritos standards de software livre para a
main
, Debian retira a
marca Mozilla de pacotes de software tais como o Firefox,
Thunderbird e Seamonkey removendo o seu logótipo e alguns dados artísticos;
e distribui-os respectivamente como Iceweasel, Icedove e Iceape.
Tipicamente os pacotes da non-free
e da
contrib
incluem pacotes distribuídos livremente dos
seguintes tipos:
Pacotes de documentação sob a GNU
Free Documentation License com secções invariantes tais como as do
GCC e do Make. (a maioria encontra-se na secção
non-free/doc
.)
Pacotes de firmware contendo dados binários sem código-fonte tais como os
listados em Secção 9.9.6, “Controladores de hardware e firmware” como
não-livre. (a maioria encontra-se na secção
non-free/kernel
.)
Pacotes de fontes e jogos com restrições comerciais de utilização e/ou modificação de conteúdo.
Por favor note que o número de pacotes das non-free
e
contrib
é menos de 2% dos pacotes da
main
. Activar o acesso às áreas
non-free
e contrib
não turva a fonte
dos pacotes. A utilização do ecrã interactivo do
aptitude(8)
disponibiliza-lhe visibilidade e controlo total sobre que pacotes estão
instalados e a partir de qual das áreas, para manter o seu sistema livre
conforme desejar.
O sistema Debian oferece um conjunto consistente de pacotes binários através do seu mecanismo de declaração de dependências binárias com versões nos campos do ficheiro de controle. Aqui está uma definição deles um pouco simplificada:
"Depends"
Isto declara uma dependência absoluta e todos os pacotes listados neste campo têm de ser instalados ao mesmo tempo ou com antecedência.
"Pre-Depends"
Isto é como o Depends, excepto que requer a instalação completa de todos os pacotes listados com antecedência.
"Recommends"
Isto declara uma dependência forte mas não absoluta. A maioria dos utilizadores não iriam querer o pacote a menos que todos os pacotes listados neste campo estejam instalados.
"Suggests"
Isto declara uma dependência fraca. Muitos utilizadores deste pacote podem beneficiar ao instalar os pacotes listados neste campo mas podem ter as funções razoáveis sem eles.
"Enhances"
Isto declara uma dependência fraca como o Suggests mas funciona na direcção oposta.
"Breaks"
Isto declara uma incompatibilidade do pacote normalmente com alguma especificação de versão. Geralmente a resolução é actualizar 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 pode ser encontrada 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 ("aptitude
update
" ou "apt-get update
"):
Obtém meta-dados do arquivo a partir do arquivo remoto
Re-constrói e actualiza os meta-dados locais para utilização do APT
Upgrade ("aptitude
safe-upgrade
" e "aptitude full-upgrade
", ou
"apt-get upgrade
" e "apt-get
dist-upgrade
"):
Escolhe a versão candidata que geralmente é a versão mais recente disponível para todos os pacotes instalados (veja Secção 2.7.3, “Moldar a versão candidata” para excepções).
Resolve a dependência do pacote
Obtém os pacotes binários seleccionados do arquivo remoto se a versão candidata for diferente da versão instalada.
Desempacota os pacotes binários obtidos
Corre o script preinst
Instala os ficheiros binários
Corre o script postinst
Install ("aptitude install
…
" ou "apt-get install …
"):
Escolhe os pacotes listados na linha de comandos
Resolve a dependência do pacote
Obtém os pacotes binários seleccionados a partir do arquivo remoto
Desempacota os pacotes binários obtidos
Corre o script preinst
Instala os ficheiros binários
Corre o script postinst
Remove ("aptitude remove
…
" ou "apt-get remove …
"):
Escolhe os pacotes listados na linha de comandos
Resolve a dependência do pacote
Corre o script prerm
Remove os ficheiros instalados excepto os ficheiros de configuração
Corre o script postrm
Purge ("aptitude purge
…
" ou "apt-get purge …
"):
Escolhe os pacotes listados na linha de comandos
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.
Você 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 você definir a
shell como Secção 1.4.2, “Personalizar bash”, escreva o seguinte.
$ cd <nome_do_pacote> $ pager README.Debian $ mc
Você pode necessitar instalar o pacote de documentação correspondente, com o
sufixo "-doc
" no nome, para informações mais detalhadas.
Se você 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 "http://bugs.debian.org/"
|
O relatório de bug de um nome de pacote conhecido |
sensible-browser
"http://bugs.debian.org/<nome_do_pacote>"
|
O relatório de bug de um número de bug conhecido |
sensible-browser
"http://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 você criar um relatório de bug, por favor use o comando reportbug(1).
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 2 ferramentas de
gestão básica de pacotes: apt-get
/
apt-cache
e aptitude
.
Para as operações de gestão de pacotes que envolvam a instalação ou actualização de meta-dados do pacote, você necessita ter privilégios de root.
Apesar do aptitude
ser uma ferramenta interactiva muito
boa a qual o autor usa principalmente, você deve ser advertido de alguns
factos:
O comando aptitude
não é recomendado para a actualização
de sistema de lançamento-para-lançamento do sistema Debian
stable
após um novo lançamento.
O uso de "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 actualizaçã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 seleccionar "Cancelar operações pendentes" no
menu de comandos do aptitude
, terminando o
aptitude
, e usando "apt-get
dist-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 actualizaçã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 utilizando o
/etc/apt/preferences
mas é um pouco incómodo.
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
inspeccionar 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 usando 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 utilizando aptitude(8) e apt-get(8) / apt-cache(8).
sintaxe do aptitude
|
sintaxe do apt-get /apt-cache
|
descrição |
---|---|---|
aptitude update
|
apt-get update
|
actualiza os meta-dados do arquivo de pacotes |
aptitude install foo
|
apt-get install foo
|
instala a versão candidata do pacote "foo " com as suas
dependências
|
aptitude safe-upgrade
|
apt-get upgrade
|
instala as versões candidatas dos pacotes instalados sem remover quaisquer outros pacotes |
aptitude full-upgrade
|
apt-get dist-upgrade
|
instala as versões candidatas dos pacotes instalados removendo outros pacotes caso necessário |
aptitude remove foo
|
apt-get remove foo
|
remove o pacote "foo " deixando os seus ficheiros de
configuração
|
N/D |
apt-get autoremove
|
remove os pacotes auto-instalados que já não sejam necessários |
aptitude purge foo
|
apt-get purge foo
|
purga o pacote "foo " com os seus ficheiros de
configuração
|
aptitude clean
|
apt-get clean
|
limpa completamente o repositório local de ficheiros de pacotes obtidos |
aptitude autoclean
|
apt-get autoclean
|
limpa os pacotes desactualizados do repositório local dos ficheiros de pacotes recebidos |
aptitude show foo
|
apt-cache show foo
|
mostra informação detalhada acerca do pacote "foo "
|
aptitude search <regex>
|
apt-cache search <regex>
|
procura pacotes que correspondem à <expressão-regular> |
aptitude why <regex>
|
N/D | explica a razão porque o pacotes que correspondem à <expressão_regular> devem ser instalados |
aptitude why-not <regex>
|
N/D | explica a razão porque o pacotes que correspondem à <expressão_regular> não podem ser instalados |
![]() |
Nota |
---|---|
Apesar do comando |
![]() |
Nota |
---|---|
Como o |
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-cache rdepends <pacote>
".
Quando o comando aptitude
é arrancado em modo de linha de
comandos e enfrenta alguns problemas como conflitos de pacotes, você pode
mudar para modo interactivo em ecrã total, ao pressionar a tecla
"e
", mais tarde na linha de comandos.
Você 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
|
faz apenas o download e não instala/actualiza |
-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
".
![]() |
Dica |
---|---|
O pacote |
Para gestão de pacotes interactiva, arranque o aptitude
em modo interactivo a partir da linha de comandos da consola conforme se
segue:
$ sudo aptitude -u Password:
Isto actualiza a cópia local da informação do arquivo e mostra a lista de
pacotes em ecrã completo com menu. O aptitude coloca a sua configuração em
"~/.aptitude/config
".
![]() |
Dica |
---|---|
Se desejar utilizar a configuração do root em vez da do utilizador, utilize
" |
![]() |
Dica |
---|---|
O |
As combinações notáveis de teclas para explorar o estado dos pacotes e definir uma "acçã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
|
actualiza a informação de arquivo do pacote |
+
|
marca o pacote para actualizaçã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 actualizações (funciona como full-upgrade) |
g
|
começa a descarregar e a instalar os pacotes seleccionados |
q
|
sai do ecrã actual e guarda as alterações |
x
|
sai do ecrã actual 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 |
A especificação de nome de ficheiro da linha de comandos ou do aviso de menu
após pressionar "l
" e "//
" toma a
expressão regular do aptitude conforme descrito em baixo. A expressão
regular do aptitude pode corresponder explicitamente a um nome de pacote
utilizando uma string começada por "~n
e seguida do nome
do pacote.
![]() |
Dica |
---|---|
Você necessita pressionar " |
No modo de ecrã completo interactivo 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 actual" (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 actual 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 actuais (veja apt_preferences(5) e Secção 2.7.3, “Moldar a versão candidata”).
Estão disponíveis vários tipos de vistas de pacotes sob o menu
"Vistas
".
Tabela 2.9. Lista de vistas para o aptitude
vista | estado | descrição da vista |
---|---|---|
Vista de Pacote
|
Bom | veja Tabela 2.10, “A categorização das vista de pacotes standard” (predefinição) |
Recomendações de Auditoria
|
Bom | lista pacotes que são recomendados por alguns pacotes instalados mas ainda não estão instalados |
Lista de Pacotes Lisa
|
Bom | lista pacotes sem categorização (para utilizar com expressões regulares) |
Explorador de Debtags
|
Muito utilizável | lista pacotes categorizados de acordo com as suas entradas debtags |
Explorador por Categorias
|
Obsoleto |
lista pacotes categorizados de acordo com a sua categoria (utilize o
Explorador de Debtags , em vez disto)
|
![]() |
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 Actualizá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 você procurar pacotes utilizando a sua fórmula de expressões regulares.
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 interactivo:
"l
" para limitar a vista de pacotes aos pacotes
correspondentes
"/
" para procurar um pacote correspondente
"\
" para procurar um pacote correspondente voltando para
trás
"n
" para procurar o próximo
"N
" para procurar o próximo (andando para trás)
![]() |
Dica |
---|---|
A string para <nome_de_pacote> é tratada como a correspondência exacta
da string 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 da 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 |
~n<regex_name>
|
corresponde com a descrição |
~d<regex_description>
|
corresponde com nome da tarefa |
~t<regex_task>
|
corresponde com debtag |
~G<regex_debtag>
|
corresponde com o maintainer |
~m<regex_maintainer>
|
corresponde com secção do pacote |
~s<regex_section>
|
corresponde com versão do pacote |
~V<regex_version>
|
corresponde com arquivo | ~A{jessie,stretch,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 seleccionados pelo administrador) |
~i!~M
|
corresponde com pacotes instalados e com actualizaçõ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> |
~B<type>
|
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.
"~P<term>
" ==
"~Dprovides:<term>
"
"~C<term>
" ==
"~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
"PROCURANDO, LIMITANDO,E EXPRESSÕES" no "Manual do Utilizador"
"/usr/share/doc/aptitude/README
".
![]() |
Nota |
---|---|
Com a versão |
A selecção de um pacote no aptitude
não puxa apenas os
pacotes definidos na sua lista de "Dependências:
" 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.
Você pode verificar o histórico de actividade de pacotes nos ficheiros log.
Tabela 2.12. Os ficheiros log para actividades de pacotes
ficheiro | conteúdo |
---|---|
/var/log/dpkg.log
|
Log da actividade de nível do dpkg para as actividades de
todos os pacotes
|
/var/log/apt/term.log
|
Log da actividade genérica do APT |
/var/log/aptitude
|
Log da actividade 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.2.10, “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).
O seguinte comando lista pacotes com regex a condizer com nomes de pacotes.
$ aptitude search '~n(pam|nss).*ldap' p libnss-ldap - módulo NSS para usar LDAP como um serviço de nomes p libpam-ldap - Módulo de Autenticação Acoplável que permite interfaces do LDAP
Isto dá muito jeito para para encontrar o nome exacto 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
interactivamente a sua informação.
Você pode purgar todos os restantes ficheiros de configuração dos pacotes removidos.
Verifique os resultados do seguinte comando.
# aptitude search '~c'
Se achar que os pacotes listados podem ser purgados, execute o seguinte comando:
# aptitude purge '~c'
Você pode querer fazer o mesmo no modo interactivo para um controle mais preciso.
Você 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. Você pode
excluir alguns pacotes a serem purgados ao pressionar "=
"
interactivamente 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 interactivo como root.
Escreva "u
", "U
",
"f
" e "g
" para actualizar a lista de
pacotes e actualizar 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 interactivo 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 sabendo que Debian é actualizá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. Eu recomendo fazer uma configuração de duplo arranque usando partições diferentes para ter a transição mais suave. |
Você pode executar a actualização geral do sistema para um lançamento mais
recente ao alterar o conteúdo do ficheiro
"/etc/apt/sources.list
" apontando para um novo lançamento
e correndo o comando "apt-get update; apt-get
dist-upgrade
".
Para actualizar de stable
para testing
ou unstable
, você substitui
"jessie
" no exemplo
"/etc/apt/sources.list
" de Secção 2.1.4, “Básico do arquivos Debian” por
"stretch
" ou "sid
".
Na realidade, você 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 actualização, maior a probabilidade de
ter grandes problemas. Para a transição da stable
antiga
para a nova stable
após o seu lançamento, você pode ler
as suas novas Notas de Lançamento e
seguir o procedimento exacto descrito lá para minimizar problemas.
Quando você decidir mover de stable
para
testing
antes do seu lançamento formal, 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 actualização.
Você deve dar passos de precaução para a actualização total enquanto recolhe a informação mais recente da lista de mail e usando 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 actividade de actualização com o script(1).
Para prevenir a remoção aplique "unmarkauto" aos pacotes necessários, p.e.,
"aptitude unmarkauto vim
", .
Minimize o número de pacotes instalados para reduzir a hipótese de conflitos de pacotes, p.e., remova os pacotes da tarefas de ambiente de trabalho.
Remova o ficheiro "/etc/apt/preferences
" (desactiva o
apt-pinning).
Tente a actualização em passos inteligentes: oldstable
→
stable
→ testing
→
unstable
.
Actualize o ficheiro "/etc/apt/sources.list
" para apontar
apenas para o novo arquivo e corra "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 actualiza 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 actualização geral do sistema. |
Para actualizações diárias em unstable
, veja Secção 2.4.3, “Salvaguardar para problemas de pacotes.”.
Aqui está uma lista de outras operações de gestão de pacotes para as quais o
aptitude
é de demasiado alto nível ou faltam-lhe
funcionalidades necessárias.
Tabela 2.13. Lista de operações de gestão avançada de pacotes
comando | acção |
---|---|
COLUMNS=120 dpkg -l <padrão_do_nome_de_pacote>
|
lista o estado de um pacote instalado para o relatório de bug |
dpkg -L <nome_do_pacote>
|
lista o conteúdo de um pacote instalado |
dpkg -L <nome_do_pacote> | egrep
'/usr/share/man/man.*/.+'
|
lista os manuais para um pacote instalado |
dpkg -S <padrão_do_nome_de_ficheiro>
|
lista os pacotes instalados que condizem com o nome de ficheiro |
apt-file search <padrão_do_nome_de_ficheiro>
|
lista pacotes no arquivo que condizem com o nome de ficheiro |
apt-file list <padrão_do_nome_de_pacote>
|
lista os conteúdos dos pacotes que correspondem no arquivo |
dpkg-reconfigure <nome_do_pacote>
|
reconfigura o pacote exacto |
dpkg-reconfigure -p=low <nome_do_pacote>
|
reconfigura o pacote exacto com as questões mais detalhadas |
configure-debian
|
reconfigura pacotes a partir do menu de ecrã completo |
dpkg --audit
|
faz auditoria ao sistema por pacotes parcialmente instalados |
dpkg --configure -a
|
configura todos os pacotes parcialmente instalados |
apt-cache policy <nome_do_pacote_binário>
|
mostra a versão disponível, a prioridade e informação de arquivo de um pacote binário |
apt-cache madison <nome_do_pacote>
|
mostra a versão disponível e informação de arquivo de um pacote |
apt-cache showsrc <nome_do_pacote_binário>
|
mostra informação do pacote de código-fonte de um pacote binário |
apt-get build-dep <nome_do_pacote>
|
instala os pacotes necessários para compilar pacote |
aptitude build-dep <nome_do_pacote>
|
instala os pacotes necessários para compilar pacote |
apt-get source <nome_do_pacote>
|
descarrega código-fonte (do arquivo standard) |
dget <URL para ficheiro dsc>
|
descarrega um pacote de código-fonte (de outro arquivo) |
dpkg-source -x
<nome_do_pacote>_<versão>-<versão_debian>.dsc
|
constrói uma árvore de código-fonte a partir de um conjunto de pacotes de
código-fonte ("*.orig.tar.gz " e
"*.debian.tar.gz "/"*.diff.gz ")
|
debuild binary
|
compila pacote(s) a partir de uma árvore fonte local |
make-kpkg imagem_de_kernel
|
compila um pacote de kernel a partir de uma árvore fonte de kernel |
make-kpkg --initrd imagem_de_kernel
|
compila um pacote de kernel a partir de uma árvore fonte de kernel com initramfs activa |
dpkg -i
<nome_pacote>_<versão>-<versão_debian>_<arquitectura>.deb
|
instalar um pacote local no sistema |
debi
<nome_pacote>_<versão>-<versão_debian>_<arquitectura>.dsc
|
instala pacote(s) locais no sistema |
dpkg --get-selections '*' >selecção.txt
|
guarda a informação de estado de selecção a nível de pacotes do
dpkg
|
dpkg --set-selections <selecção.txt
|
define a informação de estado de selecção a nível de pacotes do
dpkg
|
echo <nome-do-pacote> hold | dpkg --set-selections
|
define o estado de selecçã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, você 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 utilizando o debconf(1) como o seu backend.
Os comandos "apt-get build-dep
", "apt-get
source
" e "apt-cache showsrc
" necessitam de
"deb-src
" em "/etc/apt/sources.list
".
Os
dget(1),
debuild(1),
e
debi(1)
necessitam do pacote devscripts
.
Veja o procedimento de (re)empacotamento utilizando "apt-get
source
" em Secção 2.7.13, “Portar um pacote para o sistema stable”.
O comando make-kpkg
necessita do pacote
kernel-package
(veja Secção 9.9, “O kernel”).
Para empacotamento em geral veja Secção 12.11, “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 debsums(1) é uma ferramenta de segurança de utilização limitada. É bom apenas para verificar modificações locais pelo administrador ou danos devido a erros de media. |
Muito utilizadores preferem seguir o lançamento unstable do sistema Debian pelas suas novas funcionalidades e pacotes. Isto torna o sistema permeável a a bugs críticos dos pacotes.
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 actualizações com o sistema APT.
A instalação do pacote apt-listchanges
disponibiliza
notícias importantes de "NEWS.Debian
" ao actualizar com o
sistema APT.
Embora hoje em dia visitar o site Debian http://packages.debian.org/ facilite a busca nos meta-dados do pacote, vamos ver modos mais tradicionais.
Os comandos grep-dctrl(1), grep-status(1) e grep-available(1) podem ser utilizados para procurar qualquer ficheiro que tenha o formato geral de um ficheiro de controle de pacote Debian.
"dpkg -S <padrão_de_nome_de_ficheiro>
" pode ser
utilizado para procurar nomes de pacotes instalados pelo
dpkg
que contenham ficheiros com o nome coincidente. Mas
isto não vê os ficheiros criados pelo script do responsável do pacote.
Se necessitar de fazer uma busca mais elaborada nos meta-dados do dpkg, você
necessita executar o comando "grep -e padrão_de_expressão_regular
*
" no directó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://ftp.us.debian.org/debian/
". A sua estrutura
de arquivo 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://ftp.us.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, você pode encontrar a minha lógica de utilizar "suite" e "nome de código" em Secção 2.1.4, “Básico do arquivos Debian”. A "distribuição" é usada quando se refere a ambos "suite" e "nome de código". Todos os nomes de "áreas" do arquivo oferecidos pelo arquivo são listados sob "Componentes". |
A integridade do ficheiro "Release
" de nível de topo é
verificada pela infraestrutura criptográfica chamada secure apt.
O ficheiro de assinatura criptográfica "Release.gpg
" é
criado a partir do ficheiro "Release
" de nível de topo
autenticado e da chave secreta do arquivo Debian.
A chave do arquivo Debian público pode ser semeada em
"/etc/apt/trusted.gpg
";
automaticamente ao instalar o chaveiro com o pacote
base-files
mais recente, ou
manualmente pela ferramenta gpg
ou
apt-key
com a chave de arquivo público mais
recente publicada em ftp-master.debian.org.
O sistema secure APT verifica a
integridade do ficheiro "Release
" de nível de topo
descarregado criptograficamente por este ficheiro
"Release.gpg
" a pela chave de arquivo público Debian em
"/etc/apt/trusted.gpg
".
A integridade de todos os ficheiros "Packages
" e
"Sources
" é verificada utilizando valores MD5sum do
ficheiro "Release
" de nível de topo. A integridade de
todos os ficheiros de pacotes é verificada utilizando 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”).
![]() |
Dica |
---|---|
Os ficheiros " |
Existem ficheiros "Release
" do nível de arquivo para
todas as localizações do arquivo especificadas pela linha
"deb
" em "/etc/apt/sources.list
", tais
como
"http://ftp.us.debian.org/debian/dists/unstable/main/binary-amd64/Release
"
ou
"http://ftp.us.debian.org/debian/dists/sid/main/binary-amd64/Release
"
conforme se segue:
Archive: unstable Origin: Debian Label: Debian Component: main Architecture: amd64
![]() |
Cuidado |
---|---|
Para a estrofe " |
Para alguns arquivos, tais como experimental
, e
jessie-backports
, que contêm pacotes que não
devem ser instalados automaticamente, existe uma linha extra, p.e.,
"http://ftp.us.debian.org/debian/dists/experimental/main/binary-amd64/Release
"
como se segue.
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.3, “Moldar a versão candidata”).
Quando as ferramentas do APT, como o aptitude
,
apt-get
, synaptic
,
apt-file
, auto-apt
, … são utilizadas,
nós precisamos de actualizar as cópias locais dos meta-dados que contêm a
informação do arquivo Debian. Estas cópias locais têm os seguintes nomes de
ficheiros correspondentes aos nomes de distribuição
,
área
, e arquitectura
especificados em
"/etc/apt/sources.list
" (veja Secção 2.1.4, “Básico do arquivos Debian”).
"/var/lib/apt/lists/ftp.us.debian.org_debian_dists_<distribuição>_Release
"
"/var/lib/apt/lists/ftp.us.debian.org_debian_dists_<distribuição>_Release.gpg
"
"/var/lib/apt/lists/ftp.us.debian.org_debian_dists_<distribuição>_<área>_binário-<arquitectura>_Packages
"
"/var/lib/apt/lists/ftp.us.debian.org_debian_dists_<distribuição>_<área>_fonte_Sources
"
"/var/cache/apt/apt-file/ftp.us.debian.org_debian_dists_<distribuição>_Contents-<arquitectura>.gz
"
(para o apt-file
)
Os primeiros 4 tipos de ficheiros são partilhados por todos os comandos APT
pertinentes e actualizados a partir da linha de comandos pelo
"apt-get update
" ou "aptitude
update
". Os meta-dados "Packages
" são
actualizados se existir a linha "deb
" em
"/etc/apt/sources.list
". Os meta dados
"Sources
" são actualizados se existir a linha
"deb-src
" em "/etc/apt/sources.list
".
Os meta-dados "Packages
" e "Sources
"
contêm a estrofe "Filename:
" que aponta para a
localização de ficheiro dos pacotes binários e de código-fonte. Actualmente,
estes pacotes estão localizados sob a árvore de directórios
"pool/
" para a transição melhorada através dos
lançamentos.
As cópias locais dos meta-dados "Packages
" podem ser
pesquisadas interactivamente 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 actualizada pelo
"apt-file update
" e a sua localização é 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 aos meta-dados obtidos remotamente, a ferramenta APT após o
lenny
armazena a sua informação de estado de instalação
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>_<epoch>:<versão_upstream>-<versão.debian>-<arquitectura>.deb
|
O pacote binário para debian-installer (a.k.a udeb )
|
<nome_de_pacote>_<epoch>:<versão_upstream>-<versão.debian>-<arquitectura>.udeb
|
O pacote de código-fonte (código-fonte da origem) |
<nome_de_pacote>_<epoch>:<versão_upstream>-<versão.debian>.orig.tar.gz
|
O pacote de código-fonte 1.0 (alterações do Debian)
|
<nome_de_pacote>_<epoch>:<versão_upstream>-<versão.debian>.diff.gz
|
O pacote de código-fonte 3.0 (quilt) (alterações do
Debian)
|
<nome_de_pacote>_<epoch>:<versão_upstream>-<versão.debian>.debian.tar.gz
|
O pacote de código-fonte (descrição) |
<nome_do_pacote>_<epoch>:<versão_upstream>-<versão.debian>.dsc
|
![]() |
Dica |
---|---|
Aqui apenas são descritos formatos de pacote fonte básicos. Veja mais em dpkg-source(1). |
Tabela 2.16. Os caracteres utilizáveis para cada componente nos nomes de pacotes Debian
componente do nome | caracteres utilizáveis (regex) | existência |
---|---|---|
<nome-do-pacote>
|
[a-z,A-Z,0-9,.,+,-]+
|
necessário |
<epoch>:
|
[0-9]+:
|
opcional |
<versão-upstream>
|
[a-z,A-Z,0-9,.,+,-,:]+
|
necessário |
<versão.debian>
|
[a-z,A-Z,0-9,.,+,~]+
|
opcional |
![]() |
Nota |
---|---|
Pode verificar a ordem da versão de pacotes com o
dpkg(1),
p.e., " |
![]() |
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
" utilizando o
debconf(1)
Instala o conteúdo do pacote no sistema (equivalente a "tar
-x
")
Executa "<nome_de_pacote>.postinst
" utilizando 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 directó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 usando
update-alternatives(8).
Por exemplo, você pode fazer o comando vi
seleccionar 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 para manter a predefinição[*], ou escreva o número da selecção: 1
O sistema de alternativas do Debian mantêm a sua selecção como links
simbólicos em "/etc/alternatives/
". O processo de
selecçã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 usando os comandos
|
![]() |
Nota |
---|---|
Eu 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 sua localização predefinida, mas para uma
localização divergida. Os uso do
dpkg-divert
destina-se aos scripts do responsável do
pacote. A sua utilização casual pelo administrador do sistema está
descontinuada.
Quando corre o sistema unstable
, espera-se que o
administrador saiba recuperar o sistema de situações de gestão de pacotes
com conflitos.
![]() |
Cuidado |
---|---|
Alguns métodos descritos aqui são acções de alto risco. Você foi avisado! |
Se um programa GUI de ambiente de trabalho ficou instável após uma actualização significante da versão original, você deve suspeitar de interferências com os ficheiros locais de configuração antigos criados por ele. Se estiver estável sob uma nova conta de utilizador criada, esta hipótese está confirmada. (Isto é um bug de empacotamento e geralmente evitado pelo empacotador.)
Para recuperar a estabilidade, você deve mover os ficheiros de configuração locais correspondentes e reiniciar o programa GUI. Você 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 utilizando as dependências do pacote. (veja Secção 2.1.6, “Dependências de pacote”).
Erros do responsável do pacote ou de implantação inconsistente de mistura de fontes de arquivos (veja Secção 2.7.2, “Pacotes de fontes de arquivos misturados”) pelo administrador do sistema podem criar situações com dependências de pacotes definidas incorrectamente. Quando você instala um pacote com ficheiros sobrepostos usando 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 desenvolvedor do pacote que são executados com privilégios de root e podem fazer o que quiserem ao seu sistema. O comando dpkg(1) apenas protege contra a sobreposição de ficheiros ao desempacotar. |
Você pode contornar tal problema de instalação ao remover primeiro o pacote
ofensivo antigo, <pacote_antigo>
.
$ sudo dpkg -P <pacote-antigo>
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 sua acção 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>
", você 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 usando as seguintes técnicas:
desactivar a linha ofensiva ao preceder um "#
"
forçar um retorno com sucesso ao acrescentar a linha ofensiva com
"|| true
"
Configurar todos os pacotes parcialmente instalados com o seguinte comando.
# dpkg --configure -a
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.
Você pode ainda encontrar cópias em cache de uma versão antiga livre de bugs
do pacote foo
no directório de cache de pacotes:
"/var/cache/apt/archives/
". (se não, você pode
descarregá-lo a partir do arquivo http://snapshot.debian.net/ ou
copiá-lo da cache de pacotes de uma máquina funcional.)
Se puder arrancar o sistema, você pode instalá-lo com o seguinte comando.
# dpkg -i /caminho/para/foo_<versão_antiga>_<arquitectura>.deb
![]() |
Dica |
---|---|
Se os danos no sistema forem menores, você pode em alternativa fazer downgrade (regredir a versão) ao sistema completo como em Secção 2.7.10, “Downgrade de emergência” usando o nível mais alto do sistema APT. |
Se o seu sistema não puder arrancar pelo disco rígido, você precisa procurar outras maneiras de arrancá-lo.
Arranque o sistema usando 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 /caminho/para/foo_<versão_antiga>_<arquitectura>.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 você necessitar realmente de fazer isto como
último recurso, você pode sobrepor a dependência utilizando a
"--ignore-depends
", "--force-depends
"
e outras opções do dpkg
. Se fizer isto, você 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, você 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 selecçã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 directório contém muitos dados importantes do
sistema .
Em caso de sérios danos eu recomendo fazer uma instalação limpa após fazer a
salvaguarda do sistema. Mesmo que tudo em "/var/
" esteja
perdido, você ainda pode recuperar alguma informação dos directórios em
"/usr/share/doc/
" para o guiar na sua nova instalação.
Reinstalar o sistema mínimo (ambiente de trabalho).
# mkdir -p /caminho/para/sistema/antigo
Monte o sistema antigo em
"/caminho/para/sistema/antigo/
".
# cd /caminho/para/sistema/antigo/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
".)
Você 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".
Quando encontrar mais de 2 pacotes semelhantes e não sabe qual deles instalar sem o esforço de "teste e erro", você deve utilizar algum senso comum. Eu 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"
Pacotes seleccionados pela dependência de pacote (p.e.,
python2.4
por python
)
Popcon: mais alto na votação e número de instalações
Changelog: actualizaçõ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: o maior número de bugs corrigidos recentemente
BTS: o menor número de bugs "não-lista-de-desejos" remanescentes
Sendo o Debian um projecto voluntário com modelo de desenvolvimento distribuído, o seu arquivo contém muitos pacotes com diferentes objectivos e qualidade. Você tem de tomar as suas próprias decisões sobre o que fazer com eles.
![]() |
Cuidado |
---|---|
Instalar pacotes de fontes misturadas de arquivos não é suportado pela
distribuição oficial Debian excepto para combinações de arquivos
oficialmente suportadas tais como a |
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
".
Você não cria o ficheiro "/etc/apt/preferences
" nem
precisa de se preocupar com o apt-pinning com esta abordagem manual. Mas é
muito incómoda.
![]() |
Cuidado |
---|---|
Quando utiliza fontes misturadas de arquivos, você tem que assegurar por si próprio a compatibilidade dos pacotes pois Debian não o garante. Se existir incompatibilidade de pacotes, você pode danificar o seu sistema. Você 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 sua utilização não é algo que eu 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 você deve verificar problemas de compatibilidade da ABI e etc. com eles. |
![]() |
Nota |
---|---|
Excepto para evitar pacotes com problemas a curto prazo, instalar pacotes binários de arquivos não suportados oficialmente é geralmente uma má ideia. Isto é verdadeiro mesmo que utilize apt-pinning (veja Secção 2.7.3, “Moldar a versão candidata”). Você deve considerar o chroot ou técnicas semelhantes (veja Secção 9.10, “Sistema virtualizado”) para correr programas de arquivos diferentes. |
Sem o ficheiro "/etc/apt/preferences
", o sistema APT
escolhe a versão disponível mais recente com a versão candidata utilizando a string 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 actualizaçõ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 você instala regularmente pacotes de uma mistura de fontes de
arquivos (veja Secção 2.7.2, “Pacotes de fontes de arquivos misturados”),
você pode automatizar estas operações complicadas ao criar o ficheiro
"/etc/apt/preferences
" com entradas apropriadas e
moldando a regra de selecção de pacotes para a versão candidata como descrito em
apt_preferences(5).
A isto chama-se apt-pinning.
![]() |
Atenção |
---|---|
A utilização de apt-pinning por um utilizador novato é certamente pedir grandes problemas. Você deve evitar utilizar o apt-pinning excepto quando necessitar absolutamente dele. |
![]() |
Cuidado |
---|---|
Quando utilizar apt-pinning, você próprio tem que assegurar a compatibilidade dos pacotes pois Debian não o garante. O apt-pinning é uma operação completamente opcional e a sua utilização não é algo que eu encoraje a fazer. |
![]() |
Cuidado |
---|---|
Os ficheiros Release de nível de arquivo (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”) são utilizados para a regra do
apt_preferences(5).
Assim o apt-pinning funciona apenas com nome de "suite" para arquivos Debian normais e arquivos Debian de segurança. (Isto é
diferente dos arquivos do Ubuntu.) Por
exemplo, você pode fazer " |
![]() |
Cuidado |
---|---|
Quando utilizar um arquivo não-Debian como parte de apt-pinning, você deve verificar ao que ele se destina e também verificar a sua credibilidade. Por exemplo, Ubuntu e Debian não se destinam a ser misturados. |
![]() |
Nota |
---|---|
Mesmo que você não crie o ficheiro
" |
Aqui está uma explicação simplificada da técnica de apt-pinning.
O sistema APT escolhe o pacote de actualizaçã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 actualização é abandonada para permitir a regressão
(veja Secção 2.7.10, “Downgrade de emergência”).
O valor Pin-Priority de cada pacote é definido por entradas "Pin-Priority"
no ficheiro "/etc/apt/preferences
" ou utiliza o seu valor
predefinido.
Tabela 2.18. Lista de valores notáveis de Pin-Priority para a técnica de apt-pinning.
Pin-Priority | efeitos do apt-pinning no pacote |
---|---|
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 |
O arquivo do lançamento alvo pode ser definido por diferentes métodos.
ficheiro de configuração "/etc/apt/apt.conf
" com a linha
"APT::Default-Release "stable";
"
opção de linha de comandos, p.e. "apt-get install -t testing
algum-pacote
"
Os arquivos NotAutomatic e ButAutomaticUpgrades são definidos pelo servidor de
arquivo que contêm no seu ficheiro Release 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 seu ficheiro Release de nível de arquivo 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 associando 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://ftp.XX.debian.org/debian/ jessie-backports/main
Packages
".
Existem os arquivos jessie-updates e backports.debian.org que disponibilizam
pacotes de actualização para stable
(jessie
).
De modo a utilizar estes arquivos, liste todos os arquivos necessários no
ficheiro "/etc/apt/sources.list
" como se segue:
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free deb http://security.debian.org/ jessie/updates main contrib deb http://ftp.us.debian.org/debian/ jessie-updates main contrib non-free deb http://ftp.us.debian.org/debian/ jessie-backports main contrib non-free
Não há necessidade de definir valores específicos de Pin-Priority no
ficheiro "/etc/apt/preferences
". Quando os novos pacotes
ficam disponíveis, a configuração predefinida disponibiliza as actualizações
mais razoáveis (veja Secção 2.5.3, “Ficheiros "Release" do nível de arquivo”).
Todos os pacotes antigos instalados são actualizados para mais recentes a
partir de jessie-updates
.
Apenas os pacotes antigos instalados manualmente a partir de
jessie-backports
são actualizados para mais
recentes a partir de jessie-backports
.
Sempre que desejar instalar um pacote chamado
"<nome-do-pacote>
" com as suas dependências a
partir do arquivo jessie-backports
manualmente, utilize o seguinte comando enquanto muda o lançamento alvo com
a opção "-t
".
$ sudo apt-get install -t jessie-backports <nome_do_pacote>
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 se segue:
Package: <package-1> Pin: version * Pin-Priority: -1 Package: <package-2> Pin: version * Pin-Priority: -1
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
actualizados regularmente enquanto de segue o
testing
. Liste todos os arquivos necessários no ficheiro
"/etc/apt/sources.list
" conforme se segue:
deb http://ftp.us.debian.org/debian/ testing main contrib non-free deb http://ftp.us.debian.org/debian/ unstable main contrib non-free deb http://security.debian.org/ testing/updates 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 <nome-do-pacote>
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
") actualiza os pacotes que foram instalados a partir
do arquivo testing
usando o arquivo
testing
actual e os pacotes que foram instalados a partir
do arquivo unstable
usando o arquivo
unstable
actual.
![]() |
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 se segue:
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, você deve ter as seguintes entradas no
ficheiro "/etc/apt/preferences
".
Package: debian-reference-pt Pin: release a=unstable Pin-Priority: 700 Package: debian-reference-common Pin: release a=unstable Pin-Priority: 700
![]() |
Dica |
---|---|
Esta técnica de apt-pinning é válida mesmo se você estiver a seguir o
arquivo |
Aqui está outro exemplo de técnica de apt-pinning para incluir pacotes de versão de
origem mais recentes encontrados em experimental
enquanto
se segue unstable
. Você lista todos os arquivos
necessários no ficheiro "/etc/apt/sources.list
" conforme
o seguinte:
deb http://ftp.us.debian.org/debian/ unstable main contrib non-free deb http://ftp.us.debian.org/debian/ experimental main contrib non-free deb http://security.debian.org/ testing/updates 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 actualização.
O pacote apt
vem com o seu próprio script de cron
"/etc/cron.daily/apt
" para suportar a descarga automática
de pacotes. Este script pode ser melhorado para executar a actualizaçã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
para as actualizações de segurança do sistema stable
. Se
o risco de danificar um sistema stable
existente pelas
actualizações automáticas for menor do que ser danificado por um intruso que
usa buracos de segurança que foram fechados por actualizações de segurança,
você deve considerar usar estas actualizações automáticas com parâmetros de
configuração como os que se seguem.
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "1";
Se estiver a correr um sistema unstable
, não vai querer
utilizar as actualizações automáticas pois um dia, com certeza, irão
danificar o seu sistema. Mesmo para casos de unstable
,
você pode ainda querer descarregar os pacotes com antecedência para poupar
tempo na actualização interactiva com parâmetros de configuração como os que
se seguem.
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "0";
Se desejar limitar a largura de banda para o APT para, por exemplo, 800Kib/sec (=100kiB/sec), deve configurar o APT e o seu parâmetro de configuração conforme o seguinte.
APT::Acquire::http::Dl-Limit "800";
![]() |
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, Você 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. |
Você pode ter sorte ao fazer o downgrade de uma arquivo recente para um
arquivo mais antigo para recuperar de uma actualização ao sistema que o
deixou danificado ao manipular a versão
candidata (veja Secção 2.7.3, “Moldar a versão candidata”). Esta é uma alternativa preguiçosa
às acções tediosas de muitos comandos "dpkg -i
<pacote-danificado>_<versão-antiga>.deb
" (veja Secção 2.6.4, “Recuperação com o comando dpkg”).
Procure as linhas no ficheiro "/etc/apt/sources.list
" que
acompanham unstable
como se segue.
deb http://ftp.us.debian.org/debian/ sid main contrib non-free
Substitua-as de modo a acompanharem testing
.
deb http://ftp.us.debian.org/debian/ stretch main contrib non-free
Altere 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. Você 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. |
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 actividade 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 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: extra Section: admin Description: Engana as dependências de pacotes Debian Este é um pacote dummy que pode ser usado para criar pacotes Debian, que apenas contêm informação de dependências.
Para actualizações parciais do sistema stable
, é
desejável reconstruir um pacote dentro do seu ambiente utilizando um pacote
de código-fonte. Isto evita actualizações maciças de pacotes devido às suas
dependências.
Adicione as seguintes entradas ao "/etc/apt/sources.list
"
de um sistema stable
.
deb-src http://http.us.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*
Actualize 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 colocar 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 tendo 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.10, “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. Você 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:1, I:1 | 4263 | servidor proxy de cache para ficheiros de arquivo Debian (programa OCaml compilado) |
apt-cacher
|
V:1, I:2 | 326 | Proxy de cache para pacotes Debian e ficheiros de código-fonte (programa Perl) |
apt-cacher-ng
|
V:3, I:5 | 1022 | Proxy de cache para distribuição de pacotes de software (programa C++ compilado) |
![]() |
Cuidado |
---|---|
Quando Debian reorganiza a estrutura do seu arquivo, 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. |
Aqui está um exemplo para criar um pequeno arquivo de pacotes público compatível com o moderno sistema secure APT (veja Secção 2.5.2, “Ficheiro "Release" de nível de topo e autenticidade:”). Vamos assumir algumas coisas:
nome da conta: "foo
"
Nome da máquina: "www.example.com
"
Pacotes necessários: apt-utils
, gnupg
,
e outros pacotes
URL: "http://www.example.com/~foo/
" ( →
"/home/foo/public_html/index.html
")
Arquitectura de pacotes: "amd64
"
Crie uma chave de arquivo APT de Foo no seu sistema servidor como o seguinte:
$ ssh foo@www.example.com $ gpg --gen-key ... $ gpg -K ... sec 1024D/3A3CB5A6 2008-08-14 uid Foo (ARCHIVE KEY) <foo@www.example.com> ssb 2048g/6856F4A7 2008-08-14 $ gpg --export -a 3A3CB5A6 >foo.public.key
Publique o ficheiro de chave de arquivo "foo.public.key
"
com o ID de chave "3A3CB5A6
" para Foo
Crie uma árvore de arquivo chamada "Origin: Foo" como o seguinte:
$ umask 022 $ mkdir -p ~/public_html/debian/pool/main $ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64 $ mkdir -p ~/public_html/debian/dists/unstable/main/source $ cd ~/public_html/debian $ cat > dists/unstable/main/binary-amd64/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Foo Label: Foo Architecture: amd64 EOF $ cat > dists/unstable/main/source/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Foo Label: Foo Architecture: source EOF $ cat >aptftp.conf <<EOF APT::FTPArchive::Release { Origin "Foo"; Label "Foo"; Suite "unstable"; Codename "sid"; Architectures "amd64"; Components "main"; Description "Public archive for Foo"; }; EOF $ cat >aptgenerate.conf <<EOF Dir::ArchiveDir "."; Dir::CacheDir "."; TreeDefault::Directory "pool/"; TreeDefault::SrcDirectory "pool/"; Default::Packages::Extensions ".deb"; Default::Packages::Compress ". gzip bzip2"; Default::Sources::Compress "gzip bzip2"; Default::Contents::Compress "gzip bzip2"; BinDirectory "dists/unstable/main/binary-amd64" { Packages "dists/unstable/main/binary-amd64/Packages"; Contents "dists/unstable/Contents-amd64"; SrcPackages "dists/unstable/main/source/Sources"; }; Tree "dists/unstable" { Sections "main"; Architectures "amd64 source"; }; EOF
Pode automatizar actualizações repetitivas do conteúdo do arquivo APT no seu
sistema servidor configurando o dupload
.
Colocar todos os ficheiros de pacotes em
"~foo/public_html/debian/pool/main/
" ao executar
"dupload -t foo changes_file
" no cliente enquanto o
"~/.dupload.conf
" contém o seguinte:
$cfg{'foo'} = { fqdn => "www.exemplo.com", method => "scpb", incoming => "/home/foo/public_html/debian/pool/main", # The dinstall on ftp-master sends emails itself dinstall_runs => 1, }; $cfg{'foo'}{postupload}{'changes'} = " echo 'cd public_html/debian ; apt-ftparchive generate -c=aptftp.conf aptgenerate.conf; apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ; rm -f dists/unstable/Release.gpg ; gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'| ssh foo@www.exemplo.com 2>/dev/null ; echo 'Arquivo pacote criado!'";
O script hook postupload inicializado pelo dupload(1) cria ficheiros de arquivo actualizados para cada upload.
Pode adicionar este pequeno arquivo público à linha de apt do sistema cliente com o seguinte:
$ sudo bash # echo "deb http://www.example.com/~foo/debian/ unstable main" \ >> /etc/apt/sources.list # apt-key add foo.public.key
![]() |
Dica |
---|---|
Se o arquivo estiver localizado no sistema de ficheiros local, então pode
utilizar antes " |
Você pode criar um cópia local do estado de selecção de pacotes e debconf com o seguinte:
# dpkg --get-selections '*' > selection.dpkg # debconf-get-selections > selection.debconf
Aqui, "*
" faz com que "selection.dpkg
"
também inclua entradas de pacotes para "purgar".
Você pode transferir estes 2 ficheiros para outro computador e instalá-los lá com o seguinte.
# dselect update # debconf-set-selections < minha_selecção.debconf # dpkg --set-selections < minha_selecção.dpkg # apt-get -u dselect-upgrade # ou dselect install
Se está a pensar em gerir muitos servidores num cluster com praticamente a
mesma configuração, você deve considerar utilizar um pacote especializado
como o fai
para gerir o sistema completo.
O
alien(1)
permite a conversão de pacotes binários disponibilizados em formatos de
ficheiro rpm
da Red Hat, slp
da
Stampede, tgz
de Slackware e pkg
de
Solaris num pacote deb
Debian.Se quiser utilizar um
pacote de outra distribuição de Linux em vez daquele que tem instalado no
seu sistema, pode utilizar o alien
para convertê-lo a
partir do seu formato de pacote preferido e instala-lo. O
alien
também suporta pacotes LSB.
![]() |
Atenção |
---|---|
O
alien(1)
não deve ser utilizado para substituir pacotes essenciais do sistema, tais
como os |
O conteúdo dos pacotes "dpkg*.deb
" pode ser extraído sem
utilizar o
dpkg(1)
em qualquer ambiente estilo Unix utilizando
os
ar(1)
e
tar(1)
standard.
# ar x /path/to/dpkg_<version>_<arch>.deb # ls total 24 -rw-r--r-- 1 bozo bozo 1320 2007-05-07 00:11 control.tar.gz -rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz -rw-r--r-- 1 bozo bozo 4 2007-05-07 00:11 debian-binary # mkdir control # mkdir data # tar xvzf control.tar.gz -C control # tar xvzf data.tar.gz -C data
Os outros conteúdos do pacote "*.deb
" podem ser extraídos
pelo comando
dpkg-deb(1)
obtido do pacote "dpkg*.deb
" como em cima; ou usando o
standard
ar(1)
e o novo
tar(1)
do GNU com o suporte de descompressão
xz(1)
de modo semelhante como em cima.
Também pode explorar o conteúdo de um pacote utilizando o comando
mc
.
Você 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-get(8), apt-config(8), apt-key(8), sources.list(5), apt.conf(5), e 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: