Nome¶
multistrap - bootstraps de múltiplos repositórios
Sinopse¶
multistrap [-a ARQUITECTURA] [-d DIRECTÓRIO] -f FICHEIRO_CONFIGURAÇÃO
multistrap [--simulate] -f FICHEIRO_CONFIGURAÇÃO
multistrap -?|-h|--help|--version
Opções¶
-?|-h|--help|--version - mostra o texto de ajuda e termina com sucesso.
--dry-run - recolhe todas as definições de configuração e
gera um sumário a descoberto.
--simulate - o mesmo que --dry-run
(As seguintes opções também podem ser definidas no ficheiro de
configuração.)
-a|--arch - arquitectura dos pacotes a colocar na multistrap.
-d|--dir - directório onde o bootstrap irá ser instalado.
-f|--file - ficheiro de configuração para multistrap [necessário]
-s|--shortcut - versão curta de -f para ficheiros em localizações
conhecidas.
--tidy-up - remove dados da cache do apt, ficheiros de pacotes descarregados e a
cache de pacotes do apt. O mesmo que cleanup=true.
--no-auth - permite o uso de repositórios não autenticados. O mesmo
que noauth=true
--source-dir DIRECTÓRIO - move o conteúdo de var/cache/apt/archives/
de dentro da chroot para o directório externo especificado, depois
adiciona os pacotes fonte Debian para cada binário usado. O mesmo que
retainsources=DIRECTÓRIO, se o directório especificado não
existir, não faz nada. Requer --tidy-up de modo a calcular a lista
completa dos pacotes fonte, incluindo as dependências.
Descrição¶
multistrap disponibiliza um método tipo debootstrap baseado em apt e
estendido para disponibilizar suporte para múltiplos repositórios,
usando um ficheiro de configuração para especificar os conjuntos
relevantes, arquitectura, pacotes extra e o mirror a usar para cada bootstrap.
O objectivo é criar um sistema de ficheiros bootstrap / raiz completo com
todos os pacotes instalados e configurados, em vez de apenas o sistema base.
Na maioria dos casos, os utilizadores precisam de criar um ficheiro de
configuração para para cada utilização diferente do
multistrap.
Exemplo de configuração:
[General]
arch=armel
directory=/opt/multistrap/
# igual à opção --tidy-up se definida para true
cleanup=true
# igual à opção --no-auth se definida para true
# pacotes chaveiro listados em cada bootstrap serão
# na mesma instalados.
noauth=false
# extrai todos os arquivos descarregados (predefinição é true)
unpack=true
# se deve adicionar a /suite para especificar onde o apt
# deve procura pacotes. A predefinição é false.
explicitsuite=false
# permite MultiArch para as arquitecturas especificadas
# a predefinição é vazio
# aptsources é uma lista de secções a usar
# no /etc/apt/sources.list.d/multistrap.sources.list
# do destino. A ordem não é importante
aptsources=Debian
# a opção bootstrap determina qual o repositório
# é usado para calcular a lista de Prioridade: pacotes necessários.
# e quais os pacotes vão para rootfs.
# A ordem das secções não é importante.
bootstrap=Debian
[Debian]
packages=
source=http://ftp.pt.debian.org/debian
keyring=debian-archive-keyring
suite=lenny
Isto irá resultar num bootstrap completamente normal de Debian lenny a
partir do mirror especificado, para armel em '/opt/multistrap/'. (Esta
configuração é retida no pacote como
/usr/share/multistrap/lenny.conf)
Especifica um pacote para estender o multistrap para incluir esse pacote e todas
as dependências desse pacote.
Especifica mais repositórios para o bootstrap ao adicionar novas
secções. Os nomes das secções precisam de estar listados
na opção geral do bootstrap para que os pacotes sejam incluídos
no bootstrap.
Especifica quais os repositórios que estarão disponíveis ao
sistema final no arranque ao listar os nomes de secção na
opção geral do aptsources, ex. para excluir algumas fontes internas
ou quando se usa um mirror local quando se constrói o rootfs.
Os nomes das secções são insensíveis a
maiúsculas/minúsculas.
Todas as dependências são resolvidas apenas pelo apt, usando todos os
repositórios bootstrap, para usar apenas as dependências mais
recentes e apropriadas. Note que o multistrap desliga a Install-Recommends
portanto se o multistrap precisar de um pacote que é apenas uma
dependência recomendada, o pacote recomendado precisa de ser especificado
explicitamente na linha de pacotes. Veja "Explicit suite
specification" para mais informação sobre obter pacotes
específicos de suites específicas.
'Architecture' e 'directory' podem ser sobrepostas na linha de comandos. Algumas
das outras opções gerais também têm opções de
linha de comandos.
Atalhos¶
Num modo semelhante ao "debootstrap", o "multistrap" suporta
referir-se a ficheiros de configuração em localizações
conhecidas através de atalhos. Quando se usa a opção
"--shortcut". o "multistrap" irá procurar ficheiros
em
/usr/share/multistrap e depois em
/etc/multistrap.d/,
adicionando um sufixo '.conf' ao atalho especificado.
Estes dois comandos são equivalentes:
$ sudo multistrap -s sid
$ sudo multistrap -f /usr/share/multistrap/sid.conf
Note que o "multistrap" ainda irá falhar se o próprio
ficheiro de configuração não definir o directório da
arquitectura.
Repositórios¶
"aptsources" lista as secções que devem ser usadas para
criar as
/etc/apt/sources.list.d/multistrap.list sources do apt no
sistema final. Nem todas as "aptsources" têm de aparecer na
secção "bootstrap" se você tiver algumas sources
internas ou locais que não estão acessíveis ao sistema de
ficheiros raiz instalado.
"bootstrap" lista as secções que serão usadas para
criar o próprio multistrap. Apenas os pacotes listados em
"bootstrap" serão descarregados e desempacotados pelo
multistrap.
Certifica que "bootstrap" lista todas as secções que precisa
para o apt ser capaz de encontrar todos os pacotes a serem desempacotados para
o multistrap.
(Versões antigas do multistrap suportaram a mesma opção sob o
nome "debootstrap" - esta ortografia ainda é suportada mas os
novos ficheiros de configuração deverão ser antes
"bootstrap".
Definições gerais:¶
'arch' pode ser sobreposto na linha de comandos usando a opção
"--arch".
'directory' especifica o directório de nível de topo onde o bootstrap
irá ser criado - não é empacotado em um .tgz depois de
completo.
'bootstrap' lista as Secções que serão usadas para especificar os
pacotes que serão descarregados (e opcionalmente desempacotados) para o
bootstrap.
'aptsources' lista as Secções que serão usadas para especificar
as fontes do apt no sistema final, ex. se você precisar de usar um
repositório local para gerar a rootfs que não estará
disponível ao dispositivo em tempo de execução, lista essa
secção em "bootstrap" mas não em
"aptsources".
Se deseja que um pacote fique na rootfs, ele
tem de estar especificado na
lista "bootstrap" sob General.
A ordem dos nomes das secções em cada lista, não é
importante.
Tal como no debootstrap, o multistrap irá continuar após ocorrerem
erros, desde que o ficheiro de configuração possa ser analisado
correctamente.
O multistrap também implementa o suporte a machine:variant usado
originalmente em Emdebian Crush, apesar de ser uma implementação
diferente. Usando o suporte de configuração em cascata, podem ser
suportadas combinações particulares de machine:variant através
de alterações simples na linha de comandos.
Definir "tarballname" para verdadeiro também empacota o sistema
de ficheiros final num tarball.
Note que o multistrap ignora quaisquer opções não reconhecidas no
ficheiro de configuração - isto permite comportamento de
compatibilidade com versões anteriores assim como o sobrecarregamento dos
ficheiros de configuração do multistrap para suportar outras
ferramentas (como o pbuilder). Use a opção "--simulate"
para ver as definições de configuração combinadas.
No entanto, se o próprio ficheiro de configuração não puder
ser analisado, o multistrap irá abortar. Verifique que o ficheiro de
configuração tem uma chave e um valor para cada linha que não
seja um comentário. Os valores têm de estar todos na mesma linha que
a respectiva chave.
Definições da Secção¶
[Debian]
packages=
source=http://ftp.pt.debian.org/debian
keyring=debian-archive-keyring
suite=lenny
O nome de secção (em [] chavetas) precisa de ser único para este
ficheiro de configuração e quaisquer ficheiros de
configuração que este ficheiro inclua. Os nomes de secções
são insensíveis a maiúsculas/minúsculas (todas as
comparações acontecem após conversão para
minúsculas).
'packages' é a lista de pacotes a serem adicionados quando esta
Secção é listada no "bootstrap" - todos os nomes de
pacotes têm de ser listados numa linha única ou a análise ao
ficheiro irá falhar. Uma alternativa é definir a sua lista de
pacotes como múltiplos grupos com os pacotes separados numa base de
função / dependência, ex, base, Xorg, rede, etc. e listar cada
grupo sob 'bootstrap'.
bootstrap=base networking
[base]
packages=udev mtd-utils
source=http://www.emdebian.org/grip
keyring=emdebian-archive-keyring
suite=lenny
[networking]
packages=netbase ifupdown iproute net-tools samba
source=http://www.emdebian.org/grip
keyring=emdebian-archive-keyring
suite=lenny
Como um caso especial, o "multistrap" também suporta chaves de
pacotes múltiplos por secção, uma linha para cada. As outras
chaves não podem ser repetidas desta maneira.
[Emdebian]
packages=udev mtd-utils netbase ifupdown iproute
packages=busybox net-tools samba
source=http://www.emdebian.org/grip
keyring=emdebian-archive-keyring
suite=lenny
'source' é a fonte do apt a usar para esta Secção. Para usar uma
fonte local na mesma máquina, certifique-se de usar "
copy://" e
não "
file://", para que o apt saiba que deve copiar os pacotes
para a rootfs em vez de assumir que pode tentar descarregá-los mais tarde
- porque esse "mais tarde" nunca vai acontecer.
'keyring' lista o pacote que contém a chave usada pela fonte listada nesta
secção. Se não for especificado um chaveiro, a opção
"noauth" tem de ser definida para
true. Veja Segurança
do Apt.
'suite' é a suite a usar de esta fonte. Note que isto deve de ser a suite,
e não o nome de código.
As suites mudam de tempos a tempos: (oldstable, stable, testing, sid) O nome de
código (etch, lenny, squeeze, sid) não muda.
Segurança do Apt¶
Para usar repositórios apt autenticados, o multistrap precisa de ser capaz
de instalar um pacote chaveiro apropriado a partir das fontes apt existentes
fora do ambiente multistrap para o sistema de destino. Infelizmente, os
pacotes chaveiro não podem ser descarregados a partir dos
repositórios especificados na configuração do multistrap - isto
porque o "apt" precisa que o chaveiro seja actualizado antes de usar
repositórios anteriormente desconhecidos.
Se existirem pacotes relevantes, especifique-os na opção 'keyring'
para cada repositório. O multistrap irá então verificar se o
apt já instalou este pacote para que o repositório possa ser
autenticado antes que quaisquer pacotes sejam descarregados dele.
Note que
todos os repositórios a serem usados com multistrap
têm que ser autenticados ou o apt irá falhar. De modo semelhante,
secure apt só pode ser desactivado para todos os repositórios
(usando a opção de linha de comandos --no-auth ou definindo a
opção geral noauth no ficheiro de configuração), mesmo que
apenas um repositório não tenha disponível um chaveiro
apropriado.
O(s) pacote(s) chaveiro (keyring) serão também instalados dentro do
ambiente multistrap para coincidir com as fontes apt instaladas para o
multistrap.
Estado¶
O multistrap não tem estado - se o directório existir, irá
simplesmente prosseguir como normalmente e o apt irá tentar prosseguir de
onde ficou.
Configuração do Sistema de Ficheiros Raiz¶
o multistrap desempacota os pacotes descarregados mas não serão
tentados outros estágios da configuração do sistema. Os
exemplos incluem:
/etc/inittab
/etc/fstab
/etc/hosts
/etc/securetty
/etc/modules
/etc/hostname
/etc/network/interfaces
/etc/init.d
/etc/dhcp3
Quaisquer nós de dispositivo de dispositivo específico irá
também precisar de ser criado usando MAKEDEV ou
"device-table.pl" - um script de ajuda que pode contornar alguns dos
problemas com o MAKEDEV.
device-table.pl requer um ficheiro de tabela
de dispositivos na linha daquele no pacote fonte mtd-utils. Veja
/usr/share/doc/multistrap/examples/device_table.txt
Após o multistrap ter criado com sucesso a disposição básica
de ficheiros e oesquema de directórios, são necessários outros
scripts específicos do dispositivo antes que o sistema de ficheiros possa
ser empacotado e instalado no dispositivo de destino.
Após instalados, os próprios pacotes precisam de ser configurados
usando os scripts do responsável do pacote e "dpkg --configure
-a", a menos que isto seja um multistrap nativo.
Para que o "dpkg" funcione,
/proc e
/sysfs precisam de
estar montados (ou serem montáveis), também é recomendado
/dev/pts.
Veja também:
http://wiki.debian.org/Multistrap
Ambiente¶
Para configurar os pacotes desempacotados (seja em modo nativo ou cruzado),
são necessárias certas variáveis de ambiente:
O debconf precisa que lho digam para aceitar que a interacção com o
utilizador não é desejada:
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
O Perl precisa que lho digam para aceitar que não há locales
disponíveis dentro da chroot e não se queixar:
LC_ALL=C LANGUAGE=C LANG=C
Depois, o dpkg pode configurar os pacotes:
método de chroot (PATH = directório de topo da chroot):
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
LC_ALL=C LANGUAGE=C LANG=C chroot /PATH/ dpkg --configure -a
numa shell de login:
# export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
# export LC_ALL=C LANGUAGE=C LANG=C
# dpkg --configure -a
(Como em cima, o dpkg precisa de
/proc e
/sysfs montados
primeiro.)
Modo nativo - multistrap¶
o multistrap não foi destinado a suporte nativo, foi desenvolvido para
suporte a compilação de outras arquitecturas. De modo a se usar
múltiplos repositórios, o multistrap apenas desempacota os pacotes
seleccionados pelo apt.
Em modo nativo, é provável serem necessárias várias
operações post-multistrap que o debootstrap faria por si:
1. copiar /etc/hosts para a chroot
2. limpar o ambiente para apagar as variáveis LANGUAGE, LC_ALL e LANG
para silenciar avisos sem sentido do perl que escondem outros erros
(Uma alternativa a apagar as variáveis de localização é
adicionar locales ao seu ficheiro de configuração multistrap na
opção 'packages').
Um multistrap nativo pode ser usado directamente com a chroot, de modo a que
"multistrap" corra "dpkg --configure -a" no final do
processo multistrap, a menos que a opção
ignorenativearch
seja regulada para true na secção
General do ficheiro de
configuração.
Daemons em chroots¶
Dependendo de qual sistema você usa para disponibilizar os pacotes para o
"multistrap", as chroots nativas geralmente não devem permitir
que daemons arranquem dentro da chroot. Use o
/usr/share/multistrap/chroot.sh como o seu "setupscript" ou
inclua esse script no seu próprio script de configuração.
setupscript=/usr/share/multistrap/chroot.sh
chroot.sh coopera com sistemas que usam
sysvinit e
upstart.
Veja também
http://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt
Configuração em cascata¶
Para suportar múltiplas variantes duma configuração básica
(comum), "multistrap" permite ficheiros de configuração
para incluir outros ficheiros de configuração (mais gerais). Isto
é, o ficheiro de configuração mais detalhado / específico
é especificado na linha de comandos e esse ficheiro inclui outro ficheiro
que é partilhado por outras configurações.
Ficheiro base:
/usr/share/multistrap/crosschroot.conf
Variações:
/usr/share/multistrap/armel.conf
Especificar apenas o ficheiro armel.conf irá obter o resto das
definições de crosschroot.conf para que as alterações
comuns só precisem ser feitas num único ficheiro.
É
fortemente recomendado que quaisquer modificações nos
ficheiros de configuração envolvidas em qualquer cascata particular
sejam testadas usando a opção "--simulate" do multistrap o
que irá gerar um sumário das opções que foram definidas
após a cascata estar completa. Note que o multistrap
não o
avisa se um ficheiro de configuração conter uma opção
não reconhecida (para compatibilidade futura com configurações
backport), portanto um simples erro de escrita pode resultar numa
opção não definida.
Suporte a Machine:variant¶
As variáveis packages-conf antigas de emsandbox podem ser convertidas em
variáveis de configuração "multistrap". O suporte a
machine:variant em "multistrap" concentra-se nos scripts
config.sh e
setup.sh
Nota:
o suporte a machine:variant é provável que seja substituido
pela funcionalidade hook descrita em baixo.
Após o "multistrap" ter desempacotado os pacotes descarregados,
pode ser chamado o "setup.sh", passando a localização e
arquitectura do sistema de ficheiros raiz, para que possam ter lugar outras
afinações. Neste estágio, quaisquer operações dentro
duma rootfs de arquitectura alienígena não devem tentar executar
quaisquer binários dentro da rootfs. Como estágio final do processo
multistrap, o "config.sh" é copiado para o directório raiz
da rootfs.
Uma vantagem de usar suporte a machine:variant é que o sistema de ficheiros
raiz completo pode ser gerido por uma única chamada ao multistrap - isto
é útil quando se constrói sistemas de ficheiros raiz no
espaço do utilizador.
Para activar suporte a machine:variant, especifique o caminho para os scripts a
serem chamados no ficheiro de configuração de variantes
(secção General):
[General]
include=/caminho/para/general.conf
setupscript=/caminho/para/setup.sh
configscript=/caminho/para/config.sh
Restringindo a selecção de pacotes¶
"multistrap" inclui os pacotes necessários (Required) por
predefinição, a lista actual de pacotes na sua própria
máquina pode ser vista usando:
grep-available -FPriority 'required' -sPackage
(A lista real é calculada a partir dos ficheiros Packages descarregados e
pode diferir do resultado de "grep-available".)
Se a opção OmitRequired for definida para true, estes pacotes não
serão adicionados - embora útil, esta opção pode levar
facilmente a um rootfs inútil. Apenas os pacotes especificados
manualmente nos ficheiros de configuração serão usados nos
cálculos - as dependências desses pacotes serão adicionadas mas
mais nenhuns.
Adicionar pacotes de Priority: important¶
O "multistrap" pode imitar o "debootstrap" ao adicionar
automaticamente todos os pacotes de todas as secções onde o ficheiro
Packages descarregado liste o pacote como Priority: important. A
predefinição é não adicionar tais pacotes a menos que
sejam incluídos individualmente numa opção
"packages=" numa secção especificada nas opções
gerais do "bootstrap". Para adicionar tais pacotes, regule a
opção addimportant para verdadeiro na secção geral.
addimportant=true
Priority: important apenas pode operar para todas as secções listadas
na opção "bootstrap". Isto pode causar alguma
confusão quando se misturam suites.
Não é possível activar addimportant e omitrequired na mesma
configuração. O "multistrap" irá terminar com erro
código 7 se qualquer configuração resultar em que ambos
addimportant e omitrequired seja regulados para verdadeiro. (Isto inclui os
efeitos de incluir outros ficheiros de configuração.)
Comportamento das recomendações¶
O comportamento predefinido da Debian após o lançamento do Lenny era
considerar os pacotes recomendados como pacotes extra a serem instalados
quando qualquer um pacote era seleccionado. Os pacotes recomendados são
aqueles que o responsável considera que deverão estar presentes na
"maioria" das instalações desse pacote e permite as
Recomendações significa permitir também as
Recomendações de pacotes recomendados e por aí fora.
A predefinição do multistrap é DESLIGAR as
recomendações.
Define a opção allowrecommends para true na secção General
para usar o comportamento típico da Debian.
Lançamento predefinido¶
Se o seu sistema especificar um lançamento-predefinido para o apt, isto
pode causar problemas ao tentar criar uma bootstrap que não inclui a
suite predefinida. Tento isto em conta, o "multistrap" define uma
'wildcard' para o Lançamento Predefinido dentro da bootstrap. Veja
também: preferências do apt.
Especificação de suite específica¶
Por vezes, o apt precisa que lhe digam para obter um pacote particular de uma
suite particular, ignorando uma versão mais recente numa outra suite no
mesmo conjunto de fontes.
"multistrap" pode operar com ou sem a opção de suite
explícita, a predefinição é deixar o apt usar a
versão mais recente da colecção de fontes
bootstrap
especificadas.
A especificação de suite explícita não tem efeito no sistema
final instalado - se o seu aptsources incluir um repositório que por sua
vez inclui uma versão mais recente dos pacotes especificados
explicitamente, o próximo "apt-get upgrade" no dispositivo
irá trazer a versão mais recente.
Também, quando se especifica pacotes a obter de uma suite específica,
o apt irá também tentar assegurar que as dependências desse
pacote venham também da mesma suite e isso pode fazer com que o apt seja
incapaz de resolver o conjunto completo de dependências. Nesta
situação, ser explícito acerca de uma selecção de
pacote pode requerer ser explícito acerca de algumas (não
necessariamente de todas) das dependências desse pacote também.
Quando usar este suporte em Lenny, assegure que cada secção usa a
suite (oldstable, stable, testing, sid) e
não o nome de
código etch, lenny, squeeze, sid) no item de configuração
"suite" porque a versão do apt em Lenny e anteriores não
pode usar o nome de código.
Para testar, em Lenny, experimente:
$ sudo apt-get install apt/stable
Compare com
$ sudo apt-get install apt/lenny
Quando usar explicitsuite, tome o cuidado de usar stable-proposed-updates ou
outras localizações temporárias - se o pacote migrar para outra
suite e for removido da suite temporária (como com *-proposed-updates), o
multistrap não será capaz de encontrar o pacote.
O manuseamento de suites explícitas pode ser muito difícil de se
conseguir correctamente. Em geral, é melhor criar uma pequena chroot de
bootstrap da sua arquitectura nativa, depois fazer chroot para ela, adicionar
as fontes do apt relevantes e trabalhar exactamente quais comandos são
necessários para obter a mistura de pacotes correcta. Evite especificar
versões especificas para despistar problemas, trabalhe apenas com suites.
Aqui pode ser útil fazer 'pinning' às preferências do apt, veja
as preferências do Apt.
Preferências do Apt¶
Se um ficheiro apropriado estiver listado na opção
aptpreferences da secção
General do ficheiro de
configuração, este ficheiro será copiado para o directório
de preferências do apt do bootstrap antes do apt ser usado pela primeira
vez.
Quando um ficheiro de preferências de apt
é disponibilizado, o
comportamento "Lançamento-Predefinido" do
"multistrap" é desactivado.
Como com quaisquer outros ficheiros e scripts externos, o conteúdo do
ficheiro de preferências do apt está além do objectivo deste
manual. O "multistrap" não tenta verificar o ficheiro fornecido
para além de assegurar que este possa ser lido.
Omitir listagens deb-src¶
Alguns ambientes multistrap não precisam de acesso às fontes Debian
dos pacotes que são instalados, tipicamente isto é necessário
quando se prepara uma chroot de construção (ou construção
para outra plataforma) usando o multistrap.
Para desligar esta fonte adicional (e poupar em ambos tempo de download e
tamanho da apt-cache), use o campo omitdebsrc em cada Secção.
[Baked]
packages=
source=http://www.emdebian.org/baked
keyring=emdebian-archive-keyring
suite=testing
omitdebsrc=true
omitdebsrc é necessário quando se usa pacotes de debian-ports onde os
pacotes não têm fontes, excepto "unreleased".
fakeroot¶
Os bootstraps de arquitectura diferente podem operar sob "fakeroot"
("multistrap" está desenhado para fazer o máximo que possa
dentro de uma chamada única para facilitar isto) mas o estágio de
configuração que normalmente acontece com um bootstrap de
arquitectura nativa requer "chroot" e o próprio
"chroot" não irá operar sob "fakeroot".
Portanto, se o "multistrap" detectar que "fakeroot"
está em uso, a configuração de modo nativo é saltada com
um aviso de lembrança.
O mesmo problema aplica-se ao "apt-get install" e por isso a
instalação do pacote chaveiro no sistema anfitrião é
também saltado se for detectado o fakeroot.
Manusear pacotes problemáticos¶
Por vezes, uma pacote particular irá falhar até ao desempacotar
apropriadamente se outros pacotes ainda não foram desempacotados. Isto
pode acontecer se as diversões do dpkg não estiverem configuradas
correctamente ou se o pacote tem uma pré-dependência dum
executável de outro pacote.
Multistrap oferece dois modos de lidar com estes problemas. Um pacote pode ser
listado como "reinstall" ou como "additional". Cada
secção no ficheiro de configuração do
"multistrap" pode ter uma única listagem "reinstall"
ou "additional" ou ambas.
Reinstall significa que o pacote irá ser descarregado e desempacotado como
normal - juntamente com todos os outros pacotes, mas será depois
reinstalado no fim ao executar o script "preinst" do
responsável do pacote com o argumento "upgrade". O
"dpkg" irá então continuar o resto da
configuração desse pacote.
Additional adiciona uma segunda volta de "apt-get install" ao processo
do multistrap - após o desempacotar inicial. O pacote adicional irá
então ser descarregado e desempacotado. Se executado nativamente, o
pacote adicional é descarregado, desempacotado e configurado após
todos os pacotes restantes terem sido descarregados, desempacotados e
configurados.
Nem "reinstall" nem "additional" devem ser vistos como mais
do que apenas meios de contorno e devem ser preenchidos bugs de wishlist em
Debian contra os pacotes que requerem o uso destes mecanismos (ou dos pacotes
que iram prevenir um determinado pacote de operar normalmente).
Pré-semear Debconf¶
Adicionar uma semente debconf pode ajudar a configurar pacotes para uma
definição particular em vez da predefinição do pacote
quando se correr a configuração de modo não interactivo. Veja
http://www.debian-administration.org/articles/394 para informação
sobre como criar ficheiros semente.
Podem ser especificados múltiplos ficheiros semente usando o campo
debconfseed na secção [General], separados por espaços.
debconfseed=seed1 seed2
Os ficheiros que não existem ou não podem ser abertos serão
ignorados em silêncio. Verifique os resultados da análise usando a
opção "--simulate" para o "multistrap".
Hooks¶
Se um directório hook for especificado na secção General do
ficheiro de configuração do "multistrap", os scripts hook
que são executáveis serão executados a partir de fora do
directório multistrap nos seguintes estágios:
- hooks de download
- Executados antes do desempacotamento ser iniciado,
imediatamente após os pacotes terem sido descarregados. Os hooks de
download são scripts executáveis no directório hook
especificado com o nome de ficheiro a começar com
download.
- hooks nativos
- Os hooks nativos são executados apenas em modo nativo,
imediatamente antes de arrancar a configuração dos pacotes
descarregados e de novo após a conclusão da
configuração de pacotes. Os hooks nativos serão chamados de
o caminho absoluto e o estado de progresso actual, inicio ou fim.
Scripts nativos são scripts executáveis no directório de hook
especificado com o nome de ficheiro a começar com native.
- hooks de acabamento
- Executado imediatamente antes do tarball ser criado ou o
"multistrap" termina se não estiver configurado para criar
um tarball.
Scripts de acabamento são scripts executáveis no directório
de hook especificado com o nome de ficheiro a começar com
"completion".
Aos hooks é passado o caminho absoluto ao directório que será o
directório de nível de topo do sistema chroot ou multistrap. Os
hooks que não podem ser resolvidos usando realpath ou que não sejam
executáveis serão ignorados.
Todos os hooks de um tipo são ordenados por ordem alfabética antes de
serem executados.
Note que o "multistrap" não desfaz os efeitos dos hooks em caso
de erros. No entanto, o "multistrap" irá reportar os erros
acumulados como avisos. Se um hook termina com não-zero, esse valor
é convertido para um número positivo e adicionado à contagem
total de avisos, e reportado no final da operação.
Saída¶
O "multistrap" pode produzir imensas mensagens de saída - as
mensagens informativas aparecem no STDOUT, os erros e avisos no STDERR. As
chamadas a "apt" e "dpkg" respeitam o mesmo padrão,
portanto é simples recortar a saída combinado do
"multistrap" para apenas os erros, se desejado.
O "multistrap" acumula estados de erros de processos não fatais
dentro da operação e reporta estes como avisos no STDERR assim como
termina com o erro da contagem acumulada. Isto inclui os hooks que reportem
valores de saída a não-zero.
Bugs¶
Como o "multistrap" está a ficar mais complexo, os bugs irão
aparecer no pacote. Por favor reporte todos os bugs para o BTS do Debian
usando a ferramenta "reportbug" e
por favor anexe todos os
ficheiros de configuração. Se a sua configuração precisa
de aceder a repositórios do apt locais ou privados, por favor verifique a
sua configuração com a versão mais recente do
"multistrap" em Debian usando a opção
"--simulate" e inclua esse relatório no seu relatório de
bug.
O resultado da opção "--simulate" é regularmente
expandido para ajudar os utilizadores a depurar problemas nos ficheiros de
configuração.
Por favor verifique também (e actualize) o wiki do Multistrap em
http://wiki.debian.org/Multistrap e o conteúdo da página web do
Multistrap em
http://www.emdebian.org/multistrap/ antes de preencher bugs.
Várias pessoas na lista de mail debian-embedded@lists.debian.org e no
canal de IRC #emdebian a irc.oftc.net também podem ajudar se o seu
ficheiro de configuração não for analisado correctamente.
Você irá precisar de colocar o resultado da opção
"--simulate" num site web de colagem binária e colocar o URL na
sua mensagem.
Suporte a MultiArch¶
O suporte a Multiarch é experimental - por favor reporte problemas e
submeta bugs com os detalhes completo da sua configuração, o
ficheiro completo de configuração do multistrap e os erros
reportados.
O "multistrap" sobrepõe o suporte de multiarch existente do
sistema externo para quem sistema com capacidades de MultiArch possa ainda
criar uma chroot não-MultiArch a partir de repositórios que não
suportem todas as arquitecturas suportadas pelo dpkg externo.
Se multiarch estiver activa dentro da chroot do multistrap, o
"multistrap" escreve a lista em
/var/lib/dpkg/arch dentro da
chroot.
Para múltiplas arquitecturas, especifique a opção uma vez e use
uma lista separada por espaços para a lista de arquitecturas.
Certifique-se de incluir a que irá ser a arquitectura anfitriã da
chroot.
Veja também
http://wiki.debian.org/Multiarch/
[General]
...
multiarch=i386 armel armhf
Cada secção irá instalar pacotes da arquitectura base a menos que
a opção "Architecture" seja especificada para
secções particulares.
[Foreign]
packages=libgcc1 libc6
architecture=armel
source=http://ftp.uk.debian.org/debian
keyring=debian-archive-keyring
suite=sid
Na saída do "--simulate", a(s) arquitectura(s) especificada(s) na
opção MultiArch serão listadas sob a listagem
"Arquitecturas estrangeiras". Os pacotes para uma arquitectura
especifica serão listados como o nome do pacote seguido por "dois
pontos" e seguido pela arquitectura.
libgcc1:armel libc6:armel