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.
Online examples and documentation¶
"multistrap" supports a range of permutations, see the wiki and the
emdebian website for more information and example configurations:
http://wiki.debian.org/Multistrap
http://www.emdebian.org/multistrap/
"multistrap" includes an example configuration file with a full list
of all supported config file options:
/usr/share/doc/multistrap/examples/full.conf
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.
If "markauto" is set to true, "multistrap" will request apt
to mark all packages specified in the combined "packages" list as
manually installed and all dependencies not explicitly listed as automatically
installed in the APT extended state database. "markauto" can be used
independently of "unpack".
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
Ensure that both the setupscript and the configscript are executable or
"multistrap" will ignore the script.
- Example configscript.sh
-
#!/bin/sh
set -e
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
export LC_ALL=C LANGUAGE=C LANG=C
/var/lib/dpkg/info/dash.preinst install
dpkg --configure -a
mount proc -t proc /proc
dpkg --configure -a
umount /proc
For more information, see the Wiki: http://wiki.debian.org/Multistrap
- Mounting /dev and /proc for chroot configuration
- /proc can be mounted inside the chroot, as above:
mount proc -t proc /proc
However, /dev should be mounted from outside the chroot, before running any
"configscript.sh" in the chroot:
cd /path/chroot/
sudo tar -xzf /path/multistrap.tgz
sudo mount /dev -o bind ./dev/
sudo chroot . ./configscript.sh || true
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¶
"multistrap" supports an option to explicitly set the default release
to use with apt: "aptdefaultrelease". This determines which release
apt will use for the base system packages and is not the same as pinning
(which relates to the use of apt after installation). Multistrap sets the
default-release to the wildcard * unless a release is named in the
"aptdefaultrelease" field. Any release specified here must also be
defined in a stanza referenced in the bootstrap list or apt will fail.
To install a specific version of a package from a newer release than the one
specified as default, "explicitsuite" must also be set to true if
the package exists at any version in the default release. Also, any packages
upon which that package has a strict dependency (i.e. = rather than >=)
must also be explicitly added to the packages line in the stanza for the
desired version, even though that package does not need to be listed to get it
from the default release. This is typical apt behaviour and is not a bug in
multistrap.
The combination of default release, explicit suite and apt preferences can
quickly become complex and bugs can be very hard to identify.
"multistrap" always outputs the complete apt command line, so test
this command yourself (using the files written out by "multistrap")
to see what is going on. Remember that all dependency resolution and all the
logic to determine which version of a specific package gets installed in your
"multistrap" chroot is entirely down to apt and all
"multistrap" can do is pass files and command line options to apt.
See also: apt preferences.
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
Files which do not exist or which cannot be opened will be silently ignored.
Check the results of the parsing using the "--simulate" option to
"multistrap". The preseeding files will be copied to a preseed
directory in /tmp inside the rootfs.
To use the preseeding, add a section to the configscript.sh, prior to any calls
to
dpkg --configure -a. e.g. :
#!/bin/sh
set -e
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
export LC_ALL=C LANGUAGE=C LANG=C
if [ -d /tmp/preseeds/ ]; then
for file in `ls -1 /tmp/preseeds/*`; do
debconf-set-selections $file
done
fi
dpkg --configure -a
Hooks¶
If a hook directory (hookdir=) is specified in the General section of the
"multistrap" configuration file, the hook scripts which are
executable will be run from outside the multistrap directory at the following
stages:
- 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.
Completion scripts are executable scripts in the specified hook directory
with a filename beginning with 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