Este capítulo fornece informação fundamental sobre o sistema Debian para não-desenvolvedores. Para informação oficial, consulte :
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/
:Contents-*.gz
, e
arquivos Packages.gz
ainda estão aqui.
pool/
:tools/
:doc/
:indices/
:project/
:project/experimental/
:project/orphaned/
:
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 Woody
(3.0r0), são mantidas no diretório stable
(ligação simbólica para
woody/
):
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 Sarge,
são gravadas no diretório testing
(ligação simbólica para
sarge/
) 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 :
desculpas de
atualização
problemas da
testing
bugs críticos ao
lançamento
bugs do sistema
básico
bugs em pacotes
standard e em tarefas
outros bugs e notas sobre festas de
matança de bugs
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". (O processo de lançamento
recente do Woody não criou uma ligação simbólica frozen/
, então
frozen não foi uma distribuição, mas apenas um estágio de
desenvolvimento da distribuição testing.)
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
woody/
e sarge/
, 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
woody/
e testing é uma ligação simbólica para
sarge/
. Isto significa que Woody é a atual
distribuição estável e Sarge é 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.
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 :
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 :
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(8)
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 :
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:
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 :
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.
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.
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).
Isso inclui X11, uma distribuição completa TeX e uma porção de aplicações.
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 :
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 :
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(1)
dpkg-ftp(1)
dpkg-mountable(1)
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 :
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 :
/etc/init.d/
.
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.
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(8)
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
.
Para usar carregadores de inicialização alternativos como o grub
ou o loadlin
, copie o kernel Linux compilado bzimage
para outros locais (por exemplo, para /boot/grub
ou para uma
partição MS-DOS).
A tarefa de fazer um disquete de inicialização personalizado é altamente
auxiliada pelo pacote Debian boot-floppies
, normalmente encontrado
na seção admin do repositório FTP Debian. Scripts shell neste
pacote produzem disquetes de inicialização no formato syslinux
.
Estes são disquetes formatados para MS-DOS cujos registros de inicialização
foram alterados para que os mesmos iniciem o Linux diretamente (ou qualquer que
seja o sistema operacional que tenha sido definido no arquivo
syslinux.cfg no disquete). Outros scripts nesse pacote produzem
disquetes root de emergência e podem até mesmo produzir os discos base.
Você encontrará maiores informações sobre isso no arquivo
/usr/doc/boot-floppies/README
depois de instalar o pacote
boot-floppies
.
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)
Referência Debian
CVS, Seg Abr 3 22:58:08 UTC 2005osamu@debian.org
pormenese@uol.com.br