[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ próximo ]
Este capítulo fornece informação fundamental sobre o sistema Debian para não-desenvolvedores. Para informação oficial, consulte :
Manual de Políticas Debian
Referência do Desenvolvedor Debian
Guia do Novo Desenvolvedor Debian
listados em Referências, Seção 15.1.
Caso você esteja procurando por explicações "como-fazer" menos detalhadas, pule diretamente para Gerenciamento de pacotes Debian, Capítulo 6 ou para outros capítulos relevantes.
Este capítulo é baseado em documentos obtidos da "FAQ Debian", altamente reorganizados para permitir que o administrador de sistemas Debian comum possa começar.
O software que foi empacotado para o Debian está disponível em uma das diversas
árvores de diretórios em cada site espelho Debian
através de
FTP ou HTTP.
Os seguintes diretórios podem ser encontrados em cada site espelho Debian sob o diretório debian :
dists/
:
Este diretório contém as "distribuições" e era a maneira canônica de
acessar pacotes atuais disponíveis nas distribuições e pré-distribuições
Debian. Alguns pacotes antigos, arquivos Contents-*.gz
, e
arquivos Packages.gz
ainda estão aqui.
pool/
:A nova localização física para todos os pacotes das distribuições e pré-distribuições Debian.
tools/
:Utilitários DOS para criação de discos de partida, particionamento de seu disco, compactação/descompactação de arquivos e inicialização do Linux.
doc/
:A documentação básica do Debian, como o FAQ, instruções do sistema de relatos de bugs, etc.
indices/
:O arquivo Maintainers e os arquivos override.
project/
:em sua maioria materiais somente para desenvolvedores, como :
project/experimental/
:Este diretório contém pacotes e ferramentas que ainda estão sendo desenvolvidos, e ainda estão em estágio alpha. Os usuários não deveriam estar usando pacotes daqui porque os mesmos podem ser perigosos e causarem danos mesmo para os mais experientes.
project/orphaned/
:Pacotes que foram abandonados por seus antigos mantenedores e retirados da distribuição.
Nomalmente existem três distribuições Debian no diretório dists
.
Elas são nomeadas a distribuição stable, a distribuição
testing e a distribuição unstable. Algumas vezes
existe também uma distribuição frozen. Cada distribuição é
definida como uma ligação simbólica para a diretório real com um codinome no
diretório dists
.
As entradas de pacotes para a distribuição stable, Debian Sarge
(3.1r0), são mantidas no diretório stable
(ligação simbólica para
sarge/
):
stable/main/
: Este diretório contém os pacotes que formalmente
constituem a versão lançada mais recente do sistema Debian.
Estes pacotes todos seguem as Linhas Guias Debian
para o Software Livre (DFSG)
(também disponível como
/usr/share/doc/debian/social-contract.txt
instalado por
debian-doc
) e são todos livremente utilizáveis e livremente
distribuídos.
stable/non-free/
: Este diretório contém pacotes da distribuição
que são restritos de alguma forma que requer que os distribuidores tenham
cuidado especial com requerimentos de direitos de cópia especificados.
Por exemplo, alguns pacotes possuem licenças que proíbem sua distribuição comercialmente. Outros podem ser redistribuídos mas são de fato shareware e não software livre. As licenças de cada um desses pacotes devem ser estudadas, e possivelmente negociadas, antes que estes pacotes possam ser incluídos em qualquer redistribuição (por exemplo, em um CD-ROM).
stable/contrib/
: Este diretório contém pacotes que atendem aos
requerimentos da DFSG e podem ser livremente distribuídos, mas
de alguma forma dependem de um pacote que não é livremente
distribuível e portanto disponível somente na seção non-free.
Agora, além das localizações acima, os pacotes físicos novos são localizados
sob o diretório pool
(O diretório
pool
, Seção 2.1.10).
O estado atual dos bugs da distribuição stable é relatado na
página web Problemas da
Stable
.
As entradas de pacotes para a distribuição testing, Debian Etch,
são gravadas no diretório testing
(ligação simbólica para
etch/
) depois que os mesmos tenham passado por um certo nível de
testes na unstable. Agora, além das localizações acima, novos
pacotes físicos estão localizados sob o diretório pool
(O diretório pool
, Seção 2.1.10). Existem
também os subdiretótios main
, contrib
, e
non-free
na testing
, que têm as mesmas funções como
na stable.
Estes pacotes devem estar sincronizados em todas as arquiteturas onde eles
foram compilados e não devem ter dependências que façam com que não seja
possível instalá-los; eles também têm que possuir menos bugs críticos ao
lançamento do que as versões atualmente na unstable. Dessa forma,
esperamos que a testing esteja sempre perto de ser uma candidata
ao lançamento. Maiores detalhes sobre o mecanismo da testing estão disponíveis
em http://www.debian.org/devel/testing
.
O último estado da distribuição testing está relatado nestes sites :
As entradas de pacotes para a distribuição unstable, sempre com o
codinome "Sid", são gravadas no diretório unstable
(ligação simbólica para sid/
) depois que é feito o upload dos
mesmos para o repositório Debian, e permanecem por lá até que são movidos para
testing/
. Novos pacotes físicos estão localizados sob o diretório
pool
(O diretório pool
, Seção
2.1.10). Existem também subdiretórios main
,
contrib
e non-free
em unstable/
, que têm
as mesmas funções como na stable/
.
A distribuição unstable contém um snapshot do sistema de desenvolvimento mais recente. Os usuários podem usar e testar estes pacotes, mas são alertados de seu estado de preparação. A vantagem de usar a distribuição unstable é que você está sempre em dia no projeto de software Debian — mas se ele quebra, você tem que arrumar as coisas você mesmo :-)
O estado atual dos bugs da distribuição unstable é relatado na
página web Problemas da
Unstable
.
Quando a distribuição testing está madura o bastante, ela é
congelada, o que significa que nenhum código novo é aceito, somente correções
de bugs, caso necessário. Uma nova árvore testing também é criada no diretório
dists
e lhe é atribuído um novo nome. A distribuição frozen passa
por alguns meses de testes, com atualizações intermitentes e congelamentos
profundos chamados "ciclos de testes".
Mantemos um registro dos bugs na distribuição frozen que podem atrasar o lançamento de um pacote ou bugs que possam atrasar o lançamento por completo. Uma vez que essa contagem de bugs seja minimizada até um valor aceitável, a distribuição frozen se torna estável, é lançada, e a distribuição stable anterior se torna obsoleta (e é movida para o repositório).
Nomes físicos de diretórios no diretório dists/
, como
sarge/
e etch/
, são somente "codinomes".
Quando uma distribuição Debian está no estágio de desenvolvimento, ela não
possui número de versão e sim um codinome. O propósito destes codinomes é
tornar o espelhamento das distribuições Debian mais fácil (caso um diretório
como unstable
seja de repente mudado para stable/
, o
download de uma porção de coisas teria que ser feito de novo
desnecessariamente).
Atualmente, stable
é uma ligação simbólica para
sarge/
e testing é uma ligação simbólica para
etch/
. Isto significa que Sarge é a atual
distribuição estável e Etch é a atual distribuição de testes.
unstable
é uma ligação simbólica permanente para
sid/
, uma vez que Sid é sempre a distribuição instável.
Outros codinomes que já foram usados são : "Buzz" para a versão 1.1, "Rex" para a versão 1.2, "Bo" para as versões 1.3.x, "Hamm" para a versão 2.0, "Slink" para a versão 2.1, "Potato" para a versão 2.2, "Woody" para a versão 3.0, e "Sarge" para a versão 3.1.
Até agora eles foram personagens tirados do filme Toy Story feito pela Pixar.
Buzz (Buzz Lightyear) era o homem do espaço,
Rex era o tiranossauro,
Bo (Bo Peep) era a garota que cuidava do rebanho,
Hamm era o porquinho cofre,
Slink (Slinky Dog) era o cachorro de brinquedo,
Potato era, claro, o Sr. Cabeça de Batata,
Woody era o cowboy,
Sarge era o líder dos Homens do Exército de Plástico Verde,
Etch (Etch-a-Sketch) era o blackboard,
Sid era o garoto da porta ao lado que destruía os brinquedos.
pool
Historicamente, os pacotes eram mantidos em um subdiretório de
dists
correspondendo à distribuição que os continha. Isso acabou
trazendo vários problemas, como um alto consumo de banda nos espelhos quando
mudanças maiores eram feitas.
Os pacotes são agoras mantidos em uma grande "piscina" (pool), estruturada de acordo com o nome do pacote fonte. Para que isso seja gerenciável, a piscina é subdividida por seções (main, contrib e non-free) e pela primeira letra do nome do pacote fonte. Estes diretórios contêm diversos arquivos: os pacotes binários para cada arquitetura, e os pacotes fontes a partir dos quais os pacotes binários foram gerados.
Você pode descobrir onde cada pacote é colocado executando um comando como
apt-cache showsrc nomemeupacote e olhando na linha
"Directory:". Por exemplo, os pacotes do apache
estão
armazenados em pool/main/a/apache/
. Como há muitos pacotes
lib*, esses são tratados especialmente: por exemplo, os pacotes
libpaper
estão armazenados em
pool/main/libp/libpaper/
.
Os diretórios dists
ainda são usados pelos arquivos de índice
usados por programas como o apt
. Além disso, no momento que
escrevo, distribuições antigas não foram convertidas para usar piscinas
portanto você verá caminhos contendo nomes de distribuições como
potato ou woody no campo "Diretório" do
cabeçalho.
Normalmente, você não terá que se preocupar com isto, uma vez que o novo
apt
e provavelmente o antigo dpkg-ftp (consulte Métodos para atualizar um sistema Debian, Seção
2.3.1) irão gerenciar isso sem problemas. Caso você queira mais
informações, veja a RFC:
implementation of package pools
.
Quando a atual Sid não existia, a organização do site do repositório Debian
tinha uma grande falha: existia uma pressuposição de que quando uma arquitetura
era criada no unstable/
atual, ela seria lançada quando esta
distribuição virasse a nova stable. Para muitas arquiteturas esse
não era o caso, e como resultado todos aqueles diretórios tiveram de ser
movidos na época de lançamento. Isto era impraticável pois a movimentação
comeria muita banda.
Os administradores do repositório resolveram este problema por diversos anos
colocando binários para arquiteturas não lançadas em um diretório especial
chamado sid
. Para aquelas arquiteturas ainda não lançadas, a
primeira vez que as mesmas foram lançadas existia uma ligação do atual
stable/
para sid/
, e a partir de então elas eram
criadas dentro da árvore unstable/
como de costume. Este layout
era de certa forma confuso para os usuários.
Com o advento das piscinas de pacotes (consulte O diretório
pool
, Seção 2.1.10) durante o desenvolvimento da distribuição
Woody, pacotes binários começaram a ser armazenados em uma localização canônica
na piscina, não importando a distribuição, assim lançar uma distribuição não
mais causava grade consumo de banda nos espelhos (existe, porém, uma porção de
consumo gradual de banda durante o processo de desenvolvimento).
incoming/
Os pacotes enviados estão primeiro localizados em http://incoming.debian.org/
antes
de serem checados para assegurar que eles realmente vieram de um desenvolvedor
Debian (e são colocados no subdiretório DELAYED
caso tenham sido
enviados por um não-desenvolvedor (Non-Mantainer Upload - NMU)). Uma vez por
dia, eles são movidos de incoming/
para unstable/
.
Em uma emergência, você pode querer instalar pacotes de incoming/
antes que eles atinjam unstable/
.
Enquanto a maioria das distribuições Debian atuais são mantidas sob o diretório
debian
em cada site
espelho Debian
, repositórios para distribuições Debian mais antigas
como a Slink são mantidos em http://archive.debian.org/
ou sob
o diretório debian-archive
em cada site espelho Debian.
Os pacotes antigos da testing e da unstable podem ser
encontrados em http://snapshot.debian.net/
.
Dentro de cada árvore maior de diretórios (dists/stable/main
,
dists/stable/contrib
, dists/stable/non-free
,
dists/unstable/main/
, etc.), as entradas do pacote binário residem
em subdiretórios cujos nomes indicam a arquitetura do chip para o qual eles
foram compilados.
binary-all/
, para pacotes que são independentes de arquitetura.
Estes incluem, por exemplo, scripts Perl ou documentação pura.
binary-plataforma/
, para pacotes que executam em uma
plataforma binária particular.
Por favor note que os pacotes binários atuais para a testing e
unstable não mais residem nestes diretórios, mas em um diretório
de alto nível pool
. Os arquivos de índice (Packages
e Packages.gz
) foram mantidos, porém, para compatibilidade
anterior.
Para conhecer as arquiteturas binárias suportadas atualmente, consulte as Notas
de Lançamento para cada distribuição. Elas podem ser localizadas nos sites das
Notas de Lançamento para a stable
e
para a testing
.
O código-fonte está incluído para tudo no sistema Debian. Além disso, os termos das licenças da maioria dos programas no sistema requerem que o código-fonte seja distribuído junto com os programas, ou que uma oferta para fornecer o código-fonte acompanhe os programas.
Normalmente o código-fonte é distribuído nos diretórios source
, os
quais são paralelos a todos os diretórios de binários para arquiteturas
específicas ou, mais recentemente, no diretório pool (consulte O diretório pool
, Seção 2.1.10). Para obter o
código-fonte sem ter estar familiarizado com a estrutura do repositório Debian
, tente um comando como apt-get source meunomedepacote.
Alguns pacotes, notavelmente pine
, estão somente disponíveis como
pacotes fonte devido a suas limitações de licenciamento. (Recentemente o
pacote pine-tracker
foi fornecido para facilitar a instalação do
Pine.) Os procedimentos descritos em Portar um pacote para o sistema
stable, Seção 6.4.10 e Empacotamento, Seção 13.9 fornecem
meios para construir um pacote manualmente.
O código-fonte pode ou não estar disponível para pacotes nos diretórios
contrib
e non-free
, os quais não são formalmente
parte do sistema Debian.
Pacotes geralmente contêm todos os arquivos necessários para implementar um conjunto de comandos relacionados ou recursos. Existem dois tipos de pacotes Debian :
Pacotes binários, os quais contém executáveis, arquivos de configuração, páginas de manual/info, informação de copyright e outra documentação. Estes pacotes são distribuídos em um formato de arquivo específico Debian (consulte Formato de pacotes Debian, Seção 2.2.2); eles são normalmente identificados por terem uma extensão de arquivo .deb. Pacotes binários podem ser desempacotados usando o utilitário Debian dpkg; detalhes são dados em sua página de manual.
Pacotes fonte, os quais consistem de um arquivo .dsc descrevendo o pacote fonte (incluindo os nomes dos arquivos a seguir), um arquivo .orig.tar.gz que contém o fonte original não modificado em formato tar e compactado com o gzip, e normalmente um arquivo .diff.gz que contém as mudanças específicas do Debian feitas em relação ao fonte original. O utilitário dpkg-source empacota e desempacota arquivos fonte Debian; detalhes são fornecidos em sua página de manual.
A instalação de software pelo sistema de pacotes utiliza
"dependências" que são cuidadosamente especificadas pelos
mantenedores dos pacotes. Estas dependências estão documentadas no arquivo
control
associado a cada pacote. Por exemplo, o pacote contendo o
compilador GNU C (gcc
) "depende" do pacote
binutils
que inclui o ligador e o montador. Caso um usuário tente
instalar o gcc
sem ter instalado primeiro o binutils
,
o sistema de gerenciamento de pacotes (dpkg) emitirá uma mensagem de erro
dizendo que ele precisa também do binutils
e parará de instalar o
gcc
. (Porém, esta facilidade pode ser circulada pelo usuário
insistente, consulte dpkg(8)
.) Para detalhes adicionais, consulte
Dependências de pacotes, Seção 2.2.8 abaixo.
As ferramentas de empacotamento Debian podem ser usadas para :
manipular e gerenciar pacotes ou partes de pacotes,
auxiliar o usuário na separação de pacotes que devem ser transmitidos através de uma mídia de tamanho limitado, como disquetes,
auxiliar desenvolvedores na construção de repositórios de pacotes, e
auxiliar usuários na instalação de pacotes que se encontram em um site repositório Debian.
Um "pacote" Debian, ou um arquivo Debian, contém os arquivos executáveis, bibliotecas e documentação associada a um programa em particular ou a uma suíte ou conjunto de programas relacionados. Normalmente, um arquivo Debian tem um nome de arquivo finalizando em .deb. [1]
Os detalhes do formato de pacote binário Debian estão descritos na página de
manual deb(5)
. Devido a este formato interno estar sujeito a
mudanças (entre versões maiores do Debian), sempre utilize o
dpkg-deb(1)
para manipular arquivos .deb.
Pelo menos para a distribuição Sarge, todos os arquivos Debian são manipuláveis
pelos comandos Unix padrões ar
e tar, mesmo quando
comandos dpkg não estão disponíveis.
Os nomes de arquivos de pacotes Debian seguem a seguinte convenção :
foo_NúmeroDeVersão-NúmeroDeRevisãoDebian.deb
onde foo representa o nome do pacote. Como uma checagem, pode-se determinar o nome do pacote associado a um arquivo Debian em particular (arquivo .deb) em uma das seguintes maneiras :
inspecione o arquivo "Packages" no diretório onde o mesmo foi armazenado em um site repositório Debian . Este arquivo contém uma estrofe descrevendo cada pacote; o primeiro campo de cada estrofe é o nome formal do pacote.
use o comando dpkg --info foo_VVV-RRR.deb (onde VVV e RRR são a versão e a revisão do pacote em questão, respectivamente). Isto exibe, entre outras coisas, o nome do pacote do arquivo sendo desempacotado.
O componente VVV é o número de versão especificado pelo desenvolvedor original (upstream). Não existem padrões ditando números de versão, portanto eles podem ter formatos tão diferentes como "19990513" e "1.3.8pre1".
O componente RRR é um número de revisão Debian e é especificado pelo
desenvolvedor Debian (ou um usuário individual caso o mesmo escolha construir o
pacote ele mesmo). Este número corresponde ao nível de revisão do pacote
Debian; portanto, um novo nível de revisão geralmente significa mudanças no
Makefile Debian (debian/rules
), no arquivo de controle Debian
(debian/control
), nos scripts de instalação ou remoção
(debian/p*
) ou nos arquivos de configuração usados pelo pacote.
A preservação dos arquivos configuráveis pelo usuário é habilitada através do
mecanismo "conffiles" do Debian. Arquivos de configuração do usuário
(normalmente colocados em /etc/
) são especificados no
conffiles
dentro do sistema de pacotes Debian. O sistema de
gerenciamento de pacotes garante a não sobreescrita destes arquivos quando o
pacote é atualizado.
Para determinar exatamente quais arquivos são preservados durante uma atualização, execute :
dpkg --status pacote
e olhe em "Conffiles:".
Detalhes sobre o conteúdo de um arquivo confffiles Debian são fornecidos no Manual de Políticas Debian, seção 11.7 (consulte Referências, Seção 15.1).
Os scripts de manutenção Debian são scripts executáveis que são automaticamente
executados antes ou depois que um pacote é instalado. Junto com um arquivo de
nome control
, todos esses arquivos são parte da seção
"control" de um arquivo Debian.
Os arquivo individuais são:
Este script é executado antes que seu pacote seja desempacotado de seu arquivo Debian (.deb). Muitos scripts "preinst" param serviços para os pacotes que estão sendo atualizados até que sua instalação ou atualização esteja completa (seguindo a execução com sucesso do script "postinst").
Este script tipicamente completa qualquer configuração requerida de um pacote uma vez que o mesmo tenha sido desempacotado de seu arquivo Debian (.deb). Geralmente, scripts 'postinst' fazem perguntas aos usuários e/ou avisam o usuário que caso o mesmo aceite valores padrões ele deverá se lembrar de voltar e reconfigurar o pacote conforme a necessidade. Muitos scripts "postinst" executam então quaisquer comandos necessários para iniciar ou reiniciar um serviço uma vez que o novo pacote foi instalado ou atualizado.
Este script tipicamente pára quaisquer daemons que estão associados com um pacote. Ele é executado antes da remoção de arquivos associados com um pacote.
Este script tipicamente modifica ligações ou outros arquivos associados com um pacote e/ou remove arquivos criados pelo pacote. (Consulte também Pacotes virtuais, Seção 2.2.7.)
Atualmente todos os arquivos de controle podem ser encontrados no
/var/lib/dpkg/info
. Os arquivos relevantes ao pacote
foo iniciam com o nome "foo" e possuem extensões de
arquivos "preinst", "postinst", etc, de acordo. O arquivo
foo.list neste diretório lista todos os arquivos que foram
instalados com o pacote foo. (Note que a localização destes
arquivos é algo interno do dpkg, e pode estar sujeita a mudanças.)
A cada pacote Debian é atribuído uma prioridade pelos mantenedores da distribuição, como um auxílio ao sistema de gerenciamento de pacotes. As prioridades são :
Pacotes Required são necessários para o funcionamento correto do sistema.
Isso inclui todas as ferramentas necessárias para reparar defeitos no sistema. Você não deve remover esses pacotes ou seu sistema pode vir a se tornar completamente quebrado e você poderá provavelmente não ser capaz de usar o dpkg para colocar as coisas de volta em seus lugares. Sistemas somente com pacotes Required são provavelmente inutilizáveis para muitos propósitos, mas possuem funcionalidade o suficiente para permitir que o administrador do sistema inicie o sistema e instale mais software.
Pacotes Important devem ser encontrados em qualquer sistema parecido com Unix.
Outros pacotes sem os quais o sistema não funcionará bem ou não será muito útil se encaixam aqui. Isso não inclui o Emacs ou X11 ou TeX ou quaisquer outras grandes aplicações. Esses pacotes constituem somente a infraestrutura mínima.
Pacotes Standard são padrão em qualquer sistema Linux, incluindo um sistema em modo caracter razoavelmente pequeno mas não muito limitado.
Isso é o que será instalado por padrão caso os usuários não selecionem mais nada. Isso não inclui muitas grandes aplicações, mas inclui o Emacs (ele é mais uma peça da infraestrutura do que uma aplicação) e um subconjunto razoável do Tex e LaTeX (caso isso seja possível sem o X).
Pacotes Optional incluem todos aqueles pacotes que você poderia razoavelmente querer instalar mesmo caso não esteja familiarizado com eles e caso você não possua requerimentos especializados.
Isso inclui X11, uma distribuição completa TeX e uma porção de aplicações.
Pacotes Extra são pacotes que conflitam com outros pacotes com prioridades mais altas provavelmente, terão pouco uso para usuários que não são familiarizados a eles, ou têm requerimentos especiais que não os deixam ser encaixados em "Optional".
Um pacote virtual é um nome genérico que se aplica a qualquer um de um grupo de
pacotes, todos os quais oferecem funcionalidade básica similar. Por exemplo,
os programas tin
e trn
são leitores de notícias e
devem portanto satisfazer quaisquer dependências de um programa que requer um
leitor de notícias no sistema para que funcione ou seja útil. É portanto dito
que eles fornecem um "pacote virtual" chamado
news-reader
.
Similarmente, o exim
e o sendmail
oferecem ambos a
funcionalidade de um agente de transporte de mensagens, É portanto dito que
eles fornecem o pacote virtual mail-transport-agent
. Caso um dos
dois esteja instalado, então qualquer programa que depende da instalação de um
agente de transporte de mensagens estará satisfeito pela existência desse
pacote virtual.
O Debian possui um mecanismo que, se mais de um pacote que fornece o mesmo
pacote virtual estiver instalado em um sistema, o administrador do sistema pode
definir um como o pacote preferido. O comando relevante é
update-alternatives
e é descrito mais adiante em Comandos alternativos, Seção
6.5.3.
O sistema de pacotes Debian possui uma faixa de "dependências" de pacotes que é desenvolvida para indicar (com uma sinalização única) o nível no qual o Programa A pode operar independentemente da existência do Programa B em um dado sistema :
O Pacote A depende do Pacote B se B precisar absolutamente estar instalado para que A possa ser executado. Em alguns casos, A depende não somente de B, mas de uma versão específica de B. Nestes casos, a dependência da versão é normalmente um limite mínimo, no sentido de que A depende em qualquer versão de B mais recente do que alguma versão especificada.
O Pacote A recomenda o Pacote B caso o mantenedor do pacote julgue que a maioria dos usuários não iriam querer A sem também ter a funcionalidade fornecida por B.
O Pacote A sugere o Pacote B caso B contenha arquivos que estejam relacionados a (e normalmente melhorem) a funcionalidade de A.
O Pacote A conflita com o Pacote B quando A não funciona caso B esteja instalado no sistema. Na maioria das vezes, conflitos são casos onde A contém arquivos que são uma melhora daqueles em B. "Conflicts" (conflita) são normalmente combinados com "replaces" (substitui).
O Pacote A substitui o Pacote B quando arquivos instalados por B são removidos e (em alguns casos) sobrescritos por arquivos em A.
O Pacote A fornece o Pacote B quando todos os arquivos e as funcionalidades de B estão incorporadas em A. Este mecanismo oferece uma maneira para usuários com pouco espaço em disco obterem somente aquela parte do pacote A que realmente precisam.
Informação mais detalhada sobre o uso de cada um desses termos pode ser encontrada no Manual de Empacotamento e no Manual de Políticas.
Note que o dselect
possui um controle mais refinado sobre os
pacotes especificados por recomendações e
sugestões do que o apt-get
, o qual simplesmente
pega todos os pacotes especificados como dependências e deixa
para trás os pacotes especificados como recomendados e
sugestões. Ambos os programas em sua forma moderna usam o APT
como motor.
"Pre-depends" (pré-dependências) é uma dependência especial. No caso
de um pacote comum, o dpkg
irá desempacotar seu arquivo (ou seja,
seu arquivo .deb) independentemente dos arquivos dos quais este
depende existirem ou não no sistema. Desempacotar significa que o
dpkg
irá extrair os arquivos de seu arquivo que foi criado para
ser instalado em seu sistema e colocá-los nos lugares. Caso estes pacotes
dependam da existência de outros pacotes em seu sistema, o
dpkg
se recusará a completar a instalação (executando sua ação
"configure") até que os outros pacotes sejam instalados.
Porém, para alguns pacotes, o dpkg
se recusará até mesmo a
desempacotá-los até que certas dependências estejam resolvidas. É dito que
tais pacotes "pré-dependem" da presença de outro(s) pacote(s). O
projeto Debian forneceu este mecanismo para suportar a atualização segura do
formato a.out para o formato ELF, onde a ordem na
qual os pacotes eram desempacotados era crítica. Existem outras situações de
grandes atualizações onde este método é útil, por exemplo, para pacotes com
prioridade "required" e sua dependência libc.
Novamente, informação mais detalhada sobre isso pode ser encontrada no Manual de Empacotamento.
O estado do pacote pode ser "unknow", "install",
"remove", "purge" ou "hold". Estas flags
"want" dizem o que o usuário quis fazer com o pacote (como indicado
pelas ações do usuário na seção "Selecionar" do dselect
ou pelas invocações diretas do dpkg
).
Seus significados são :
unknown - o usuário nunca indicou se ele queria o pacote.
install - o usuário quer o pacote instalado ou atualizado.
remove - o usuário quer o pacote removido, mas não quer remover quaisquer arquivos de configuração.
purge - o usuário quer que o pacote seja removido completamente, incluindo os arquivos de configuração.
hold - o usuário quer que esse pacote não seja processado, ou seja, ele quer manter a versão atual no estado atual seja este qual for.
Existem dois mecanismos para evitar que pacotes sejam atualizados : através do
dpkg
ou, começando no Woody, através do APT.
Com o dpkg
, exporte primeiro a lista de seleções de pacotes :
dpkg --get-selections \* > selections.txt
Edite então o arquivo resultante selections.txt
mudando
a linha contendo o pacote que você desejaria evitar que fosse atualizado, por
exemplo, libc6
, disso:
libc6 install
para isso :
libc6 hold
Salve o arquivo e recarregue-o na base de dados do dpkg
usando :
dpkg --set-selections < selections.txt
Ou, caso você conheça o nome do pacote a ser mantido (hold), simplesmente execute :
echo libc6 hold | dpkg --set-selections
Este processo mantém pacotes no processo de instalação de cada arquivo de pacote.
O mesmo efeito pode ser obtido através do dselect
. Simplesmente
entre na tela [S]elecionar, encontre o pacote que você deseja manter em seu
estado atual e pressione a tecla `=' (ou `H'). As modificações serão válidas
imediatamente depois que você sair da tela [S]elecionar.
O sistema APT na distribuição Woody possui um novo mecanismo alternativo para
manter pacotes durante o processo de obtenção do arquivo usando
Pin-Prioriry. Consulte a página de manual
apt_preferences(5)
, e também http://www.debian.org/doc/manuals/apt-howto/
ou o pacote apt-howto
; Visão geral do arquivo
/etc/apt/preferences
, Seção 6.2.8 também contém uma explicação
breve.
Pacotes fonte são distribuídos em um diretório chamado source
e
você pode fazer o download dos mesmos manualmente ou use
apt-get source foo
para obtê-los (consulte a página de manual apt-get(8)
para maiores
informações sobre como configurar o APT para fazer isso).
Para um pacote foo, você precisará de todos os arquivos
foo_*.dsc
, foo_*.tar.gz
e
foo_*.diff.gz
para compilar o fonte (nota: não existe
.diff.gz para um pacote nativo Debian).
Uma vez que você os tenha, caso você possua o pacote dpkg-dev
instalado, o comando
dpkg-source -x foo_versão-revisão.dsc
irá extrair o pacote em um diretório chamado foo-versão.
Execute os seguintes comandos para criar o pacote binário:
$ cd foo-versão $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc
E então,
# su -c "dpkg -i ../foo_versão-revisão_arquit.deb"
para instalar o novo pacote construído. Veja Portar um pacote para o sistema stable, Seção 6.4.10.
Para uma descrição mais detalhada, leia o Guia dos Novos Mantenedores,
disponível no pacote maint-guide
ou em http://www.debian.org/doc/manuals/maint-guide/
.
Um dos objetivos do Debian é oferecer um caminho de atualização consistente e um processo de atualização seguro, e nós sempre fazemos o máximo possível para que uma nova versão seja facilmente atualizável para quem atualiza da versão anterior. Pacotes irão alertar o usuário quando existirem notícias importantes durante o processo de atualização e irão frequentemente oferecer uma solução para um possível problema.
Você deve também ler as Notas de Lançamento, o documento que descreve os
detalhes de atualizações específicas, fornecido em todos os CDs Debian e
disponível na WWW em http://www.debian.org/releases/stable/releasenotes
ou http://www.debian.org/releases/testing/releasenotes
.
Um guia prático para atualizações está disponível em Gerenciamento de pacotes Debian, Capítulo 6. Esta seção descreve os detalhes fundamentais.
É possível simplesmente executar uma chamada FTP anônima ou usar o
wget
em um repositório Debian, procurar atentamente até que seja
encontrado o arquivo desejado, fazer o download do mesmo e finalmente
instalá-lo usando o dpkg
. Note que o dpkg
irá
instalar arquivos de atualização em seus lugares, mesmo em um sistema em
execução. Algumas vezes, um pacote revisado irá requerer a instalação de uma
nova versão revisada de outros pacotes e neste caso a instalação irá falhar até
que/a menos que os outros pacotes sejam instalados.
Muitas pessoas acham que este método consome muito tempo, uma vez que o Debian se desenvolve tão rapidamente — tipicamente, uma dúzia ou mais pacotes são disponibilizados toda semana. Este número é maior logo antes de um lançamento de uma versão maior. Para lidar com esta avalanche, muitas pessoas preferem usar um programa automatizado para atualizar. Diversas ferramentas de gerenciamento de pacotes especializadas estão disponíveis para este propósito.
O sistema de gerenciamento de pacotes possui dois objetivos : a manipulação do
arquivo de pacote propriamente dito e obtenção de arquivos de pacotes do
repositório Debian. O dpkg
executa a primeira tarefa e o APT e o
dselect
a última.
dpkg
Este é o principal programa para manipular arquivos de pacotes; leia
dpkg(8)
para um descrição completa.
O dpkg
é fornecido com diversos programas suplementares
primitivos.
dpkg-deb: Manipula arquivos .deb. dpkg-deb(1)
dpkg-ftp: Um antigo comando de obtenção de arquivos de pacotes.
dpkg-ftp(1)
dpkg-mountable: Um antigo comando de obtenção de arquivos de pacotes.
dpkg-mountable(1)
dpkg-split: Divide um pacote grande em arquivos menores.
dpkg-split(1)
O dpkg-ftp
e dpkg-mountable
ficaram obsoletos com a
introdução do sistema APT.
O APT (Advanced Packaging Tool) é uma avançada interface para o sistema de
gerenciamento de pacotes Debian, consistindo de vários programas cujos nomes
tipicamente começam com "apt-". O apt-get
,
apt-cache
e o apt-cdrom
são ferramentas de linha de
comando para gerenciar pacotes. Eles também funcionam como programas
"back-end" do usuário para outras ferramentas, como o
dselect
e o aptitude
.
Para maiores informações, instale o pacote apt
e leia
apt-get(8)
, apt-cache(8)
, apt-cdrom(8)
,
apt.conf(5)
, sources.list(5)
,
apt_preferences(5)
(Woody), e
/usr/share/doc/apt/guide.html/index.html
.
Uma fonte alternativa de informação é o APT HOWTO
. Este
pode ser instalado pelo pacote apt-howto
em
/usr/share/doc/Debian/apt-howto/
.
apt-get upgrade e apt-get dist-upgrade instalam
apenas os pacotes listados em "Depends:" e ignoram os pacotes
listados em "Recommends:" e "Suggests:". Para evitar isso
use o dselect
.
dselect
Este programa é uma interface de usuário baseada em menus para o sistema de
gerenciamento de pacotes Debian. Ele é particularmente útil para primeiras
instalações e atualizações em larga escala. Veja dselect
, Seção 6.2.3
Para maiores informações, instale o pacote install-doc
e leia
/usr/share/doc/install-doc/dselect-beginner.en.html
ou Documentação
para Iniciantes do dselect
.
O kernel (sistema de arquivos) em sistemas Debian suporta a troca de arquivos mesmo quando estes estão sendo usados.
Oferecemos também um programa chamado start-stop-daemon
que é
usado para iniciar daemons em tempo de inicialização da máquina ou para parar
daemons quando o nível de execução do kernel é mudado (exemplo, de multiusuário
para usuário único ou para halt). O mesmo programa é usado pelos scripts de
instalação quando um novo pacote contendo um daemon é instalado, para parar
daemons em execução, e reiniciá-los quando necessário.
Note que o sistema Debian não requer o uso do modo de usuário único para atualizar um sistema em execução.
Caso você tenha feito o download de arquivos para seu disco (o que não é
absolutamente necessário, veja acima a descrição de dpkg-ftp
ou
APT), depois de instalar os pacotes você pode removê-los de seu sistema.
Caso o APT seja usado, esses arquivos são colocados em cache no diretório
/var/cache/apt/archives/
. Você pode apagá-los depos da instalação
(apt-get clean) ou copiá-los para o diretório
/var/cache/apt/archives/
de outra máquina para economizar tempo de
download durante instalações subseqüentes.
O dpkg
mantém um registro dos pacotes que foram desempacotados,
configurados, removidos e/ou expurgados, mas não mantém (atualmente) um log da
atividade do terminal que ocorreu enquanto um pacote esteve sendo manipulado.
A maneira mais simples de contornar isso é executar suas sessões
dpkg
, dselect
, apt-get
, etc., dentro do
programa script(1)
.
init
Como todos os Unices, o Debian inicia executando o programa init
.
O arquivo de configuração para o init
(que é
/etc/inittab
) especifica que o primeiro script a ser executado
deve ser o /etc/init.d/rcS. Esse script executa todos os scripts
em /etc/rcS.d/
através do source ou fork de subprocessos,
dependendo de sua extensão de arquivo, para executar a inicialização como a
checagem e a montagem de sistemas de arquivos, carregamento de módulos, início
de serviços de rede, configuração do relógio, etc. Então, por compatibilidade,
ele também executa os arquivos (exceto aqueles com um `.' em seu nome) em
/etc/rc.boot . Quaisquer scripts no diretório posterior são
normalmente reservados para o uso do administrador do sistema e usá-los em
pacotes é obsoleto. Veja Inicialização do sistema, Seção 9.1
e Níveis de
execução de Sistema e scripts init.d
no Manual de Políticas Debian
para maiores informações.
Depois de completar o processo de inicialização, o init
executa
todos os scripts de inicialização em um diretório especificado pelo nível de
execução padrão (este nível de execução é dado pela entrada para o
id em /etc/inittab
. Como a maioria dos Unices
compatíveis com System V, o Linux possui 7 níveis de execução :
0 (parar o sistema),
1 (modo de usuário único),
2 through 5 (vários modos multiusuário), e
6 (reinicia o sistema).
Sistemas Debian vêm com o valor id=2, o que indica que o nível de execução padrão será 2 quando o estado multiusuário for iniciado e que os scripts em /etc/rc2.d/ serão executados.
De fato, os scripts em quaisquer dos diretórios em
/etc/rcN.d/
são apenas ligações simbólicas que apontam
para scripts em /etc/init.d/
. Porém, os nomes
dos arquivos em cada um dos diretórios /etc/rcN.d/
são
selecionados para indicar a maneira que os scripts em
/etc/init.d/
serão executados. Especificamente, antes de entrar
em qualquer nível de execução, todos os scripts iniciados com `K' são
executados; esses scripts matam (param) serviços. Então todos os scripts
iniciados com `S' são executados; esses scripts iniciam serviços. O número de
dois dígitos seguido de `K' ou `S' indica a ordem na qual o script é executado.
Scripts de menor valor numérico são executados primeiro.
Esse método funciona porque todos os scripts em /etc/init.d/
aceitam um argumento que pode ser "start" (iniciar), "stop"
(parar), "reload" (recarregar), "restart" (reiniciar) ou
"force-reload" (forçar-recarregar) e irão portanto cumprir a tarefa
indicada pelo argumento. Esses scripts podem ser usados mesmo depois que um
sistema tenha sido iniciado para controlar vários processos.
Por exemplo, com o argumento "reload" o comando
# /etc/init.d/exim4 reload
envia ao daemon exim4 um sinal para que o mesmo releia seu arquivo de configuração.
O Debian não utiliza o diretório rc.local no estilo BSD para personalizar o processo de inicialização; ao invés disso ele fornece o seguinte mecanismo de personalização.
Suponha que um sistema precisa executar o script foo na inicialização da máquina ou ao entrar em um nível de execução (System V) em especifíco. O administrador do sistema deverá então :
Colocar o script foo dentro do diretório
/etc/init.d/
.
Executar o comando Debian update-rc.d
com os argumentos
apropriados para criar as ligações entre os diretórios (especificados na linha
de comando) rc?.d e /etc/init.d/foo
.
Aqui, ? é um número de 0 a 6 que corresponde a um dos níveis de
execução System V.
Reiniciar o sistema.
O comando update-rc.d criará as ligações entre os arquivos nos
diretórios rc?.d e o script em
/etc/init.d/
. Cada ligação iniciará com um `S' ou um `K', seguido
por um número, seguido pelo nome do script. Quando o sistema entra em um nível
de execução N, scripts que iniciam com `K' em
/etc/rcN.d/
são executados com stop como
seu argumento, seguido por aqueles começando com `S' em
/etc/rcN.d
com start como seu argumento.
Alguém poderia, por exemplo, fazer com que o script foo seja
executado na inicialização do sistema colocando-o em /etc/init.d/
e instalando as ligações com o comando update-rc.d foo defaults
19. O argumento defaults se refere aos níveis de execução
padrões, que são do nível 2 até o nível 5. O argumento 19
assegura que foo seja chamado antes de quaisquer scripts contendo
números 20 ou superiores.
O Debian suporta diversas maneiras de acomodar os desejos do administrador do sistema sem prejudicar o sistema.
dpkg-divert
, veja O
comando dpkg-divert
, Seção 6.5.1.
equivs
, veja O pacote
equivs
, Seção 6.5.2.
update-alternative
, veja Comandos alternativos, Seção
6.5.3.
make-kpkg
pode acomodar muitos gerenciadores de inicialização.
Consulte make-kpkg(1)
e Método Debian padrão, Seção
7.1.1.
Quaisquer arquivos sob /usr/local/
pertencem ao administrador do
sistema e o Debian não irá tocá-los. A maioria (ou todos) dos arquivos sob
/etc
são conffiles e o Debian não irá sobrescrevê-los
em atualizações a menos que o administrador do sistema explicitamente peça
isso.
O sistema Debian é internacionalizado e oferece suporte para a exibição e entrada de caracteres em muitos idiomas, seja no console ou sob o X. Muitos documentos, páginas de manual e mensagens do sistema foram traduzidos para um número crescente de idiomas. Durante a instalação o Debian pede ao usuário para escolher um idioma para ser usado na instalação (e algumas vezes o variante local do idioma).
Caso seu sistema instalado não suporte todos os recursos do idioma que você precisa ou caso você precise mudar entre idiomas ou instalar um teclado diferente para suportar seu idioma, consulte Localização, Seção 9.7.
Consulte O kernel Linux no Debian, Capítulo 7.
Você precisa entender o política Debian em relação a cabeçalhos.
As bibliotecas C Debian são construídas com as versões estáveis mais atuais dos cabeçalhos do kernel.
Por exemplo, a versão Debian-1.2 usou a versão 5.4.13 dos cabeçalhos. Esta
prática contrasta com os pacotes fontes do kernel Linux distribuídos em todos
os repositórios de sites FTP Linux, que usam as versões mais recentes até mesmo
dos cabeçalhos. Os cabeçalhos do kernel distribuídos com os fontes do kernel
estão localizados em /usr/include/linux/include/
.
Caso você precise compilar um programa com cabeçalhos de kernel que sejam mais
novos do que aqueles fornecidos pelo pacote lib6-dev
, você deve
então adicionar -I/usr/src/linux/include/ a sua linha de comando
quando compilar. Isto ocorreu em um momento, por exemplo, com o empacotamento
do daemon automounter (amd
). Quando novos kernels mudaram
internamente em relação a lidar com NFS, o amd
precisava saber
disso. Para isso foi necessário incluir os últimos cabeçalhos do kernel.
Usuários que desejam (ou precisam) construir um kernel personalizado são
encorajados a fazer o download do pacote kernel-package
. Este
pacote contém o script para construir o pacote do kernel e oferece a capacidade
de criar um pacote kernel-image Debian somente executando o comando
# make-kpkg kernel_image
no diretório de nível principal dos fontes do kernel. Ajuda é fornecida executando o comando
# make-kpkg --help
e através da página de manual make-kpkg(1)
e O kernel Linux no Debian, Capítulo 7.
Os usuários devem fazer o download separadamente do código fonte do kernel mais
atual (ou o kernel de sua escolha) a partir de seu site repositório Linux
favorito, a menos que um pacote kernel-source-versão esteja
disponível (onde versão significa a versão do kernel). O script de
inicialização initrd
Debian requer um patch de kernel especial
chamado initrd
; consulte http://bugs.debian.org/149236
.
Informações detalhadas para o uso do pacote kernel-package
são
fornecidas no arquivo /usr/doc/kernel-package/README
.
O pacote Debian modconf
oferece um script shell
(/usr/sbin/modconf
) que pode ser usado para personalizar a
configuração dos módulos. Este script apresenta uma interface baseada em
menus, perguntando ao usuário por detalhes sobre os controladores de
dispositivos carregáveis em seu sistema. As respostas são usadas para
personalizar o arquivo /etc/modules.conf
(que lista apelidos e
outros argumentos que devem ser usados em conjunto com outros módulos) através
de arquivos em /etc/modutils/
e /etc/modules
(que
listam os módulos que devem ser carregados em tempo de inicialização da
máquina).
Como os (novos) arquivos Configure.help
que estão agora
disponíveis para suportar a construção de kernels personalizados, o pacote
modconf
vem com uma série de arquivos de ajuda (em
/usr/share/modconf/
) que oferecem informações detalhadas para cada
um dos módulos. Consulte O
kernel 2.4 modularizado, Seção 7.2 para ver exemplos.
O script kernel-image-NNN.prerm
checa se o kernel que
está em execução atualmente é o mesmo que o kernel que você está tentando
desinstalar. Portanto você pode remover pacotes de imagens kernel indesejáveis
com segurança usando esse comando :
# dpkg --purge --force-remove-essential kernel-image-NNN
(É claro, substitua NNN pela versão de seu kernel e seu número de revisão)
[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ próximo ]
Referência Debian
CVS, Qui Jan 18 11:53:12 UTC 2007osamu#at#debian.org
pormenese#at#uol.com.br