Navn¶
multistrap - bootstraps for flere arkiver
Synopsis¶
multistrap [-a ARKITEKTUR] [-d MAPPE] -f KONFIGURATIONSFIL
multistrap [--simulate] -f KONFIGURATIONSFIL
multistrap -?|-h|--help|--version
Indstillinger¶
-?|-h|--help|--version - vis denne hjælpetekst og afslut.
--dry-run - indsaml konfigurationsopsætningen og vis et referat.
--simulate - svarer til --dry-run
(De følgende indstillinger kan også angives i
konfigurationsfilen.)
-a|--arch - arkitektur for pakkerne der skal placeres i multistrap.
-d|--dir - mappe hvor bootstrapen vil blive installeret.
-f|--file - konfigurationsfil for multistrap [krævet]
-s|--shortcut - kort version af -f for filer på kendte placeringer.
--tidy-up - fjern apt cache-data, hentede pakkefiler og pakkemellemlageret for
apt. Svarer til cleanup=true.
--no-auth - tillad brug af arkiver som ikke er godkendte. Svarer til noauth=true
--source-dir MAPPE - flyt indholdet af var/cache/apt/archives/ fra det
indvendige af chrooten til den angivne eksterne mappe, tilføj så
kildepakker for Debian hvor hver brugt binær fil. Svarer til
retainsources=MAPPE. Der gøres ikke noget, hvis den angivne mappe ikke
findes. Kræver --tidy-up for at kunne beregne den fulde liste af
kildepakker, inklusiv afhængigheder.
Beskrivelse¶
multistrap tilbyder en debootstrap-lignende metode baseret på apt og
udvidet til at yde understøttelse af flere arkiver, ved brug af en
konfigurationsfil til at angive de relevante programpakker, arkitekturer,
ekstra pakker og spejlet, som skal bruges for hver bootstrap.
Formålet er at oprette et fuldstændigt bootstrap-/rootfilsystem
med alle pakker installeret og konfigureret, i stedet for bare det
grundlæggende system.
I de fleste tilfælde skal brugerne oprette en konfigurationsfil for hver
forskellig brug af multistrap.
Eksempel på konfiguration:
[General]
arch=armel
directory=/opt/multistrap/
# svarer til indstillingen --tidy-up hvis denne er angivet til true (sand)
cleanup=true
# svarer til indstillingen --no-auth hvis denne er angivet til true (sand)
# nøgleringspakker vist i hver bootstrap vil
# stadig blive installeret.
noauth=false
# udtræk alle hentede arkiver (standard er true)
unpack=true
# hvorvidt /suite skal være eksplicit om hvor apt
# skal kigge efter pakker. Standard er false (falsk).
explicitsuite=false
# aktiver Multiarch for de angivne arkitekturer
# standard er tom
multiarch=
# aptsources er en liste af afsnit, som skal bruges
# af /etc/apt/sources.list.d/multistrap.sources.list
# for målet. Rækkefølgen er ikke vigtig
aptsources=Debian
# denne indstilling i bootstrap afgør hvilket arkiv der bruges
# til at beregne listen af Priority: required-pakker
# og hvilke pakker, som skal i rootfs.
# Rækkefølgen af afsnit er ikke vigtig.
bootstrap=Debian
[Debian]
packages=
source=http://ftp.uk.debian.org/debian
keyring=debian-archive-keyring
suite=lenny
Dette vil resultere i en fuldstændig normal bootstrap af Debian lenny fra
det angivne spejl, for armel i »/opt/multistrap/«. (Denne
konfiguration er bevaret i pakken som
/usr/share/multistrap/lenny.conf)
Angiv en pakke så at multistrap udvides med denne pakke og alle
afhængigheder af denne pakke.
Angiv flere arkiver for bootstrapen ved at tilføje nye afsnit.
Afsnitsnavne skal være angivet i bootstraps generelle indstilling for
at pakkerne bliver inkluderet i bootstrapen.
Angiver hvilke arkiver som vil være tilgængelige i det endelige
system ved opstart ved at angive afsnitsnavnene i aptsources' generelle
indstilling, f.eks. at ekskludere nogle interne kilder eller når der
bruges et lokalt spejl under bygning af rootfs.
Der er forskel på store/små bogstaver i afsnitsnavne.
Alle afhængigheder løses kun af apt, der bruger alle
bootstrap-arkiver, for at sikre at kun de nyeste og bedst egnede
afhængigheder bruges. Bemærk at multistrap slukker for
Install-Recommends så hvis multistrap har brug for en pakke, som kun er
en anbefalet afhængighed, skal den anbefalede pakke angives specifikt i
pakkelinjen. Se "Explicit suite specification" for yderligere
information om at hente specifikke pakker fra specifikke programpakker.
»Architecture« (arkitektur) og »directory« (mappe)
kan overskrives på kommandolinjen. Andre generelle indstillinger har
også kommandolinjetilvalg.
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
Genveje¶
På samme måde som "debootstrap" så
understøtter "multistrap" reference til konfigurationsfiler
på kendte placeringer for genveje. Når der bruges tilvalget
"--shortcut" så vil "multistrap" kigge efter filer
i
/usr/share/multistrap og så
/etc/multistrap.d/,
tilføjende en ».conf-endelse« til den angivne genvej.
Disse to kommandoer har ens betydning:
$ sudo multistrap -s sid
$ sudo multistrap -f /usr/share/multistrap/sid.conf
Bemærk at "multistrap" stadig vil fejle hvis selve
konfigurationsfilen ikke angiver mappen eller arkitekturen.
Arkiver¶
"aptsources" viser afsnittene, som skal bruges til at oprette
apt-kilderne
/etc/apt/sources.list.d/multistrap.list i det endelige
system. Ikke alle "aptsources" skal fremgå i afsnittet
"bootstrap", hvis du har nogle interne eller lokale kilder, som ikke
er tilgængelige for det installerede rodfilsystem.
"bootstrap" viser afsnittene, som vil blive brugt til at oprette selve
multistrap. Kun pakker vist i "bootstrap" vil blive hentet og
udpakket af multistrap.
Vær sikker på at "bootstrap" viser alle afsnit, du skal
bruge for at apt kan finde alle pakkerne, som skal udpakkes for multistrap.
(ældre versioner af multistrap understøtter den samme indstilling
under navnet "debootstrap" - denne stavning er stadig
understøttet, men nye konfigurationsfiler bør i stedet for
indeholde "bootstrap".
Generel opsætning:¶
»arch« (arkitektur) kan overskrives på kommandolinjen med
tilvalget "--arch".
»directory« (mappe) angiver den øverste niveaumappe, hvor
bootstrap vil blive oprettet - den er ikke pakket i en .tgz, når den
først er færdig.
»bootstrap« viser afsnittene, som vil blive brugt til at angive
pakkerne, som vil blive hentet (og valgfrit udpakket) i bootstrap.
»aptsources« (apt-kilder) viser afsnittene, som vil blive brugt
til at angive apt-kilderne i det endelige system, f.eks. hvis du skal bruge et
lokalt arkiv til at oprette rootfs, som ikke vil være
tilgængelig på kørselstidspunktet, angiv dette afsnit i
"bootstrap" men ikke i "aptsources".
Hvis du ønsker at en pakke skal være i rootfs, så skal
must være angivet i listen "bootstrap" under generelt.
Rækkefølgen for afsnitsnavn i begge lister er ikke vigtig.
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".
Som med debootstrap vil multistrap fortsætte efter fejl, så
længe at konfigurationsfilen kan blive korrekt fortolket.
multistrap implementerer også understøttelse af machine:variant
som oprindeligt blev brugt i Emdebian Crush, dog i en anden implementering.
Brug af konfigurationsunderstøttelse af kaskade, specielt kombinationer
af machine:variant kan understøttes med simple ændringer
på kommandolinjen.
Angivelse af "tarballname" til true (sand) pakker også det
endelige filsystem ned i en tarball.
Bemærk at multistrap ignorerer alle indstillinger, den ikke genkender i
konfigurationsfilen - dette tillader bagglæns kompatibilitet samt
overbelastning af multistraps konfigurationsfiler for understøttelse af
andre værktøjer (såsom pbuilder). Brug indstillingen
"--simulate" for at se den kombinerede
konfigurationsopsætning.
Multistrap vil dog afbryde såfremt at selve konfigurationsfilen ikke kan
fortolkes. Kontroller at konfigurationsfilen har en nøgle og en
værdi for hver linje, udover kommentarer. Værdier skal alle
være på den samme linje som nøglen.
Afsnitsindstillinger¶
[Debian]
packages=
source=http://ftp.uk.debian.org/debian
keyring=debian-archive-keyring
suite=lenny
Afsnitsnavnet (i []-parenteser) skal være unikke for denne
konfigurationsfil og i enhver konfigurationsfil som denne fil inkluderer. Der
er ikke forskel på store og små bogstaver i afsnitsnavne (alle
sammenligninger sker efter konvertering til små bogstaver).
»packages« (pakker) er listen over pakker, der skal
tilføjes når dette afsnit er vist i "bootstrap" - alle
pakkenavne skal befinde sig på en enkelt linje ellers vil filen ikke
kunne fortolkes. Et alternativ er at definere din pakkeliste som flere grupper
med pakker adskilt via funktion eller afhængighed, f.eks. base, Xorg,
netværk etc. og vise hver gruppe under »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
Som et specielt tilfælde så understøtter
"multistrap" også flere pakkenøgler per afsnit, en
linje for hver. Andre nøgler kan ikke gentages på denne
måde.
[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« (kilde) er apt-kilden, der skal bruges for dette afsnit.
For at bruge en lokal kilde på den samme maskine, så sikr dig at
du bruger "
copy://" ikke "
file://", så at apt
får besked om at kopiere pakkerne til rootfs i stedet for at antage at
den kan forsøge at hente dem senere - da dette »senere«
aldrig vil ske.
»keyring« (nøglering) viser pakken som indeholder
nøglen brugt af kilden angivet i dette afsnit. Hvis ingen
nøglering er angivet, så skal indstillingen "noauth"
være angivet til
true. Se Secure Apt.
»suite« (programpakke) er programpakken der skal bruges fra denne
kilde. Bemærk at dette skal være programpakken og ikke
kodenavnet.
Programpakker ændrer sig fra gang til gang: (oldstable, stable, testing,
sid). Kodenavnet (etch, lenny, squeeze, sid) ændrer sig ikke.
Secure Apt¶
For at bruge godkendte apt-arkiver, skal multistrap enten kunne installere en
passende nøgleringspakke fra de eksisterende apt-kilder
udenfor
multistrap-miljøet til destinationssystemet. Desværre kan
nøgleringspakker ikke hentes fra arkiverne angivet i konfigurationen af
multistrap - dette skyldes at "apt" kræver
nøgleringen, der skal opdateres, før den kan bruge arkiver, der
ikke tidligere er kendt.
Hvis relevante pakker findes så angiv dem i tilvalget
»keyring« for hvert arkiv. multistrap vil så tjekke, at
apt allerede har installeret denne pakke, så at arkivet kan blive
godkendt før nogen pakke hentes fra det.
Bemærk at
all-arkiver, som skal bruges med multistrap, skal
godkendes ellers vil apt fejle. På lignende vis kan secure apt kun
deaktiveres for alle arkiver (ved at bruge kommandolinjeindstillingen
--no-auth eller sætte den generelle noauth-indstilling i
konfigurationsfilen), selv hvis kun et arkiv ikke har en egnet
nøglering tilgængelig.
Nøgleringpakkerne vil også blive installeret i
multistrap-miljøet for at matche de installerede apt-kilder for
multistrap.
Tilstand¶
multistrap er tilstandsløs - hvis mappen findes vil den simpelthen
fortsætte som normalt og apt vil forsøge at fortsætte
hvor den slap.
Konfiguration af rodfilsystem¶
multistrap udpakker de hentede pakker, men andre stadier af
systemkonfigurationen bliver ikke gennemført. Eksempler inkluderer:
/etc/inittab
/etc/fstab
/etc/hosts
/etc/securetty
/etc/modules
/etc/hostname
/etc/network/interfaces
/etc/init.d
/etc/dhcp3
Alle enhedsspecifikke enhedsknuder vil også skulle oprettes med brug af
MAKEDEV eller "device-table.pl" - et hjælpeskript som kan
omgå nogle af problemerne med MAKEDEV.
device-table.pl
kræver en enhedstabelfil, der ligner den i kildepakken mtd-utils. Se
/usr/share/doc/multistrap/examples/device_table.txt
Når først multistrap har oprettet det grundlæggende fil- og
mappelayout, er andre enhedsspecifikke skripter krævet, før
filsystemet kan pakkes ud og installeres på målenheden.
Når først installeret skal pakkerne konfigureres med
pakkevedligeholdelsesskripter og "dpkg --configure -a", med mindre
dette er en standardmultistrap.
For at "dpkg" virker skal
/proc og
/sysfs monteres
(eller være monterbare),
/dev/pts anbefales også.
Se også:
http://wiki.debian.org/Multistrap
Miljø¶
For at konfigurere de ikke pakkede pakker (enten i standard eller
krydstilstand), er bestemte miljøvariabler krævet:
Debconf skal have information om. at brugerinteraktion ikke er ønsket for
at acceptere dette:
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
Perl skal have at vide, at ingen sprog er tilgængelige inden i chroot og
at den ikke skal beklage sig:
LC_ALL=C LANGUAGE=C LANG=C
Så kan dpkg konfigurere pakkerne:
chroot-metode (STI = øverste mappe i chroot):
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
LC_ALL=C LANGUAGE=C LANG=C chroot /PATH/ dpkg --configure -a
ved en logindskal:
# export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
# export LC_ALL=C LANGUAGE=C LANG=C
# dpkg --configure -a
(Som ovenstående kræver dpkg at
/proc og
/sysfs er
monteret først.)
Standardtilstand - multistrap¶
multistrap er ikke ment som systemets egen understøttelse, det blev
udviklet for understøttelse af flere arkitekturer. For at flere arkiver
kan bruges, udpakker multistrap kun de pakker, som er valgt af apt.
I standardtilstand vil forskellige post-multistrap-handlinger sandsynligvis
være krævet, som debootstrap ellers ville udføre for dig:
1. kopier /etc/hosts til chroot
2. ryd miljøet for at fjerne valg af LANGUAGE, LC_ALL og LANG
for at fjerne irriterende perladvarsler som forvirrer i forhold til andre fejl
(Et alternativ til at fjerne valg af sprogvariabler er at tilføje sprog
til din konfigurationsfil i multistrap under indstillingen
»packages«.
En standardmultistrap kan bruges direkte med chroot, så
"multistrap" kører "dpkg --configure -a" i
slutningen af multistrap-processen, med mindre indstillingen
ignorenativesearch er angivet til true (sand) i afsnittet
General i konfigurationsfilen.
Dæmoner i chrooter¶
Afhængig af hvilket system du bruger til at tilbyde pakkerne for
"multistrap", så skal standardchrooter normalt ikke tillade
dæmoner at starte inden i chrooten. Brug
/usr/share/multistrap/chroot.sh som din "setupscript" eller
inkluder dette skript i dit eget opsætningsskript.
setupscript=/usr/share/multistrap/chroot.sh
chroot.sh håndterer systemer der bruger
sysvinit og
upstart.
Se også
http://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt
Kaskadekonfiguration¶
For at understøtte forskellige varianter af en grundlæggende
(fælles) konfiguration, tillader "multistrap" at
konfigurationsfiler inkluderer andre (mere generelle) konfigurationsfiler. Det
vil sige, at den mest detaljerede/specifikke konfigurationsfil er angivet
på kommandolinjen og den fil inkluderer en anden fil, som deles af
andre konfigurationer.
Basisfil:
/usr/share/multistrap/crosschroot.conf
Variationer:
/usr/share/multistrap/armel.conf
Angivelse af kun filen armel.conf vil gøre at resten af indstillingerne
vil komme fra crosschroot.conf, så at almindelige ændringer kun
skal foretages i en enkel fil.
Det anbefales
stærkt at alle ændringer til
konfigurationsfilerne involveret i alle kaskader testes med brug af tilvalget
"--simulate" i multistrap som vil vise et referat af
indstillingerne, som har været angivet når først kaskaden
er færdig. Bemærk at multistrap ikke
advarer dig hvis en
konfigurationsfil indeholder et tilvalg, som ikke bliver genkendt (for
fremtidig kompatibilitet med backported-konfigurationer), så en simpel
tastefejl kan resultere i at et tilvalg ikke bliver angivet.
Understøttelse af Machine:variant¶
De gamle packages.conf-variabler fra emsandbox kan alle konverteres til
"multistrap"-konfigurationsvariabler. Understøttelsen af
machine:variant i "multistrap" koncentrerer sig om skripterne,
config.sh og
setup.sh
Bemærk:
machine:variant-understøttelse vil sandsynligvis blive
erstattet af hook-funktionaliteten som beskrevet nedenfor.
Når "multistrap" har udpakket de hentede pakker, kan
"setup.sh" kaldes og videresende placeringen og arkitekturen
på rodfilsystemet, så en anden fintuning kan udføres.
På dette stadie, må ingen handlinger i rootfs forsøge at
køre binære filer inden i rootfs. Som det endelige stadie i
multistrapprocessen kopieres "config.sh" ind i rodmappen på
rootfs'erne.
En af fordelene ved at bruge understøttelse af machine:variant er at hele
rodfilsystemet kan håndteres ved et enkelt kald til multistrap - dette
er brugbart, når der bygges rodfilsystemer i brugerrum.
For at aktivere understøttelse af machine:variant så angiv stien
til skripterne, som skal kaldes i variantkonfigurationsfilen (Generelt
afsnit):
[General]
include=/path/to/general.conf
setupscript=/path/to/setup.sh
configscript=/path/to/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
Begrænsning af pakkevalg¶
"multistrap" inkluderer »Required packages« som
standard, den aktuelle liste af pakker på din maskine kan ses med:
grep-available -FPriority 'required' -sPackage
(Den aktuelle liste beregnes fra de hentede pakkefiler og kan være
forskellig fra resultatet af "grep-available".)
Hvis tilvalget OmitRequired er angivet som true (sand), så vil disse
pakker ikke blive tilføjet - selvom brugbart kan dette tilvalg nemt
føre til en ubrugelig rootfs. Kun pakkerne, som manuelt er angivet i
konfigurationsfilerne, vil blive brugt i beregningerne - afhængigheder
af disse pakker vil blive tilføjet men ingen andre.
Tilføjelse af »Priority: important packages«¶
"multistrap" kan imitere "debootstrap" ved automatisk at
tilføje alle pakker fra alle afsnit hvor den hentede pakkeliste viser
pakken som »Priority: important«. Standarden er ikke at
tilføje sådanne pakker med mindre individuelt inkluderet i en
indstilling for "packages=" i et afsnit angivet i den generelle
indstilling "bootstrap". For at tilføje alle sådanne
pakker, så sæt indstillingen addimportant til true (sand) i det
generelle afsnit.
addimportant=true
»Priority: important« kan kun fungere for alle afsnit angivet i
indstillingen "bootstrap". Dette kan medføre lidt forvirring,
når programpakker blandes.
Det er ikke muligt at aktivere addimportant og omitrequired i den samme
konfiguration. "multistrap" vil afslutte med fejlkoden 7 hvis en
konfiguration resulterer i at addimportant og omitrequired begge er sat til
true (sand). (Dette inkluderer effekterne af inkludering af andre
konfigurationsfiler).
Anbefalet opførsel¶
Standardopførelsen for Debian efter Lenny-udgivelsen var at overveje
anbefalede pakker som ekstra pakker, der skulle installeres når en
anden pakke er valgt. Anbefalede pakker er dem som vedligeholderen forventer
at se på de "fleste" installationer af den pakke og
tilladelse af anbefalede betyder tilladelse af anbefalinger af anbefalede
pakker og så videre.
Standarden for multistrap er et slå anbefalinger OFF (FRA).
Sæt indstillingen allowrecommends til true (sand) i det generelle afsnit
for at bruge typisk Debianopførsel.
Standardudgivelse¶
"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.
Explicit suite specification¶
Undertiden har apt behov for at få at vide, at den skal hente en specifik
pakke fra en bestemt programpakke, og dermed ignorere en nyere version i en
anden programpakke i det samme sæt af kilder.
"multistrap" kan fungere med eller uden den eksplicitte
programpakkeindstilling, standarden er at lade apt bruge den nyeste version
fra samlingen af angivne
bootstrap-kilder.
Explicit suite specification has no effect on the final installed system - if
your aptsources includes a repository which in turn includes a newer version
of the package(s) specified explicitly, the next "apt-get upgrade"
on the device will bring in the newer version.
Also, when specifying packages to get from a specific suite, apt will also try
and ensure that the dependencies for that package are also from the same suite
and this can cause apt to be unable to resolve the complete set of
dependencies. In this situation, being explicit about one package selection
may require being explicit about some (not necessarily all) of the
dependencies of that package as well.
When using this support in Lenny, ensure that each section uses the suite
(oldstable, stable, testing, sid) and
not the codename (etch, lenny,
squeeze, sid) in the "suite" configuration item as the version of
apt in Lenny and previous cannot use the codename.
For at teste - på Lenny - så prøv:
$ sudo apt-get install apt/stable
Sammenlign med
$ sudo apt-get install apt/lenny
When using explicitsuite, take care in using stable-proposed-updates or other
temporary locations - if the package migrates into another suite and is
removed from the temporary suite (as with *-proposed-updates), multistrap will
not be able to find the package.
Explicit suite handling can be very hard to get right. In general, it is best to
create a small bootstrap chroot of your native arch, then chroot into it, add
the relevant apt sources and work out exactly what commands are necessary to
get the correct mix of packages. Avoid specifying explicit versions to sort
out problems, work with suites only. Apt preferences / pinning may be useful
here, see Apt preferences.
Apt-præferencer¶
If a suitable file is listed in the
aptpreferences option of the
General section of the configuration file, this file will be copied
into the apt preferences directory of the bootstrap before apt is first used.
When an apt preferences file
is provided, the "Default-Release"
behaviour of "multistrap" is disabled.
As with other external scripts and files, the content of the apt preferences
file is beyond the scope of this manpage. "multistrap" does not try
to verify the supplied file other than ensuring that it can be read.
Udeladelse af deb-src-visninger¶
Some multistrap environments do not need access to the Debian sources of
packages being installed, typically this is required when preparing a build
(or cross-build) chroot using multistrap.
To turn off this additional source (and save both download time and apt-cache
size), use the omitdebsrc field in each Section.
[Baked]
packages=
source=http://www.emdebian.org/baked
keyring=emdebian-archive-keyring
suite=testing
omitdebsrc=true
omitdebsrc er nødvendig når der bruges pakker fra debian-ports
hvor pakker ikke har kilder, undtagen »unreleased«.
fakeroot¶
Bootstraps for fremmede arkitekturer kan fungere under "fakeroot"
("multistrap" er designet til at gøre så meget som
muligt med et enkelt kald for at gøre dette nemmere) men
konfigurationsstadiet som normalt foregår med en standardarkitektur for
bootstrap kræver "chroot" og "chroot", den vil ikke
selv fungere under "fakeroot".
Hvis "multistrap" detekterer at "fakeroot" er i brug,
så springes den normale tilstandskonfiguration over med en advarsel.
Det samme problem gælder for "apt-get install" og derfor
springes installationen af nøgleringspakken på
værtssystemet også over hvis fakeroot detekteres.
Håndtering af problematiske pakker¶
Undertiden vil en specifik pakke fejle i endda at blive udpakket korrekt hvis
andre pakker ikke allerede er blevet pakket ud. Dette kan ske hvis
dpkg-diversioner ikke er sat korrekt op eller hvis pakken
forhåndsafhænger af en køre fil i en anden pakke.
Multistrap tilbyder to måder at håndtere disse problemer. En pakke
kan vises som "reinstall" eller som "additional". Hvert
afsnit i konfigurationsfilen "multistrap" kan have en enkelt
"reinstall"- eller "additional"-visning eller begge.
Geninstallation betyder at pakken vil blive hentet og udpakket som normalt -
sammen med alle de andre pakker, men vil så blive geninstalleret i
slutningen ved at køre vedligeholderskriptet "preinst" med
argumenet "upgrade". "dpkg" vil så fortsætte
resten af konfigurationen for den pakke.
»Additional« tilføjer en anden runde af "apt-get
install" til multistrapprocessen - efter den første udpakning. Den
yderligere pakke vil så blive hentet og udpakket. Hvis kørt
standardmæssigt, så hentes den øvrige pakke, udpakkes og
konfigureres efter at resten af pakkerne er blevet hentet, udpakket og
konfigureret.
Hverken "reinstall" eller "additional" skal ses som andet
end omgåelser og wishlist-fejlrapporter bør udarbejdes i Debian
mod pakker som kræver brug af disse mekanismer (eller pakkerne som
forhindrer den omtalte pakke i at fungere normalt).
Debconfs forudindstillinger¶
Tilføjelse af en forudindstilling for debconf kan hjælpe med at
konfigurere pakker til en bestemt indstilling i stedet for pakkestandarden,
når konfigurationen køres uden interaktion. Se
http://www.debian-administration.org/articles/394 for information om hvordan
du oprette indstillingsfiler (seed files).
Flere indstillingsfiler (seed files) kan angives med brug af feltet debconfseed
i afsnittet [General], adskilt af mellemrum:
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:
- hentede hooks
- Køres før udpakning er startet, umiddelbart efter at
pakkerne er blevet hentet. Hentede hooks er kørbare skripter i den
angivne hook-mappe med et filnavn der begynder med download.
- native hooks
- Native hook-skripter køres kun i tilstanden native, umiddelbart
før start af konfigurationen af hentede pakker og igen efter
færdiggørelse af pakkekonfigurationen. Native hooks vil
blive kaldt den absolutte sti og den aktuelle fremgangstilstand, start
eller slut.
Native skripter er kørbare skripter i den angivne hook-mappe med et
filnavn der begynder med native.
- completion hooks
- Køres umiddelbart før at tarballen oprettes eller hvis
"multistrap" ikke er konfigureret til at oprette en tarball.
Completion scripts are executable scripts in the specified hook directory
with a filename beginning with completion.
Ophænginger (hooks) får den absolute sit til mappen, som vil
være på det øverste mappeniveau for chroot- eller
multistrapsystemet. Ophængninger som ikke kan slås op med
realpath, eller som ikke kan køres, vil blive ignoreret.
Alle ophængninger af ens type sorteres i alfabetisk
rækkefølge før de køres.
Bemærk at "multistrap" ikke ruller effekterne af
ophængninger (hooks) tilbage i tilfælde af fejl.
"multistrap" vil dog rapportere de opsamlede fejl som advarsler.
Hvis en ophængning findes som andet end nul, så konverteres
afslutningsværdien til et positivt tal og tilføjes til det
samlede antal advarsler, rapporteret til sidste i operationen.
Uddata¶
"multistrap" kan lave en masse uddata - informative beskeder vises
på STANDARDUD, fejl og advarsler på STANDARDFEJL. Kald til
"apt" og "dpk" respekterer det samme mønster,
så det er simpelt at trimme de kombinerede uddata for
"multistrap" til kun fejlene, hvis det ønskes.
"multistrap" opsamler fejltilstande fra processer der ikke er fatale
under operationen og rapporterer disse som advarsler på STANDARDFEJL
samt afslutter med det opsamlede antal fejl. Dette inkluderer
ophænginger (hooks) som rapporter afslutningsværdier forskellige
fra nul.
Fejl¶
Efterhånden som "multistrap" bliver mere kompleks, så
vil fejl snige sig ind i pakken. Rapporter venligst alle fejl til Debian BT
med værktøjet "reportbug" og
venligst
vedhæft alle konfigurationsfiler. Hvis din konfiguration skal
tilgå lokale eller private apt-arkiver, så kontroller venligst
konfigurationen med den seneste version af "multistrap" i Debian med
tilvalget "--simulate" og inkluder den rapport i din fejlrapport.
Tilvalget "--simulate" udvides løbende for at hjælpe
brugerne med at fejlsøge problmer i konfigurationsfilerne.
Kontroller venligst også (og opdater) Multistraps wiki på
http://wiki.debian.org/Multistrap og internetsidens indhold på
http://www.emdebian.org/multistrap/ før du indsender fejlrapporter.
Forskellige personer på postlisten debian-embedded@lists.debian.org og
IRC-kanalen #emdebian på irc.oftc.net kan også hjælpe
hvis din konfigurationsfil ikke fortolker korrekt. Du skal placere resultatet
af "--simulate" på en pastebin-internetside og placere
adressen i din besked.
Understøttelse af flere arkitekturer¶
Understøttelse af flere arkitekturer er eksperimentelt - rapporter
venligst problemer og indsend fejlrapporter med alle detaljer om din
opsætning, hele konfigurationsfilen for multistrap og de fejl der
registreres.
"multistrap" overskriver den eksisterende understøttelse af
flere arkitekturer på det eksterne system, så at et sytem der er
opmærksom på MultiArch kan stadig oprette en ikke-MultiArch
chroot fra arkiver, som ikke understøtter alle arkitekturerne
understøttet af den eksterne dpkg.
Hvis flere arkitekturer er aktiveret i multistrap chroot, så udskriver
"multistrap" listen i
/var/lib/dpkg/arch inden i chroot.
For flere arkitekturer så angiv tilvalget en gang og bruge en
mellemrumsadskilt liste for arkitekturlisten. Sikr dig at du inkluderer hvad
der vil være værtsarkitekturen for chroot.
Se også
http://wiki.debian.org/Multiarch/
[General]
...
multiarch=i386 armel armhf
Hvert afsnit vil installere pakker fra basisarkitekturen med mindre
indstililngen "Architecture" er angivet for bestemte afsnit.
[Foreign]
packages=libgcc1 libc6
architecture=armel
source=http://ftp.uk.debian.org/debian
keyring=debian-archive-keyring
suite=sid
In the "--simulate" output, the architecture(s) specified in the
MultiArch option will be listed under the "Foreign architectures"
listing. Packages for a specific architecture will be listed as the package
name followed by a colon followed by the architecture.
libgcc1:armel libc6:armel