Scroll to navigation

MULTISTRAP(1) User Contributed Perl Documentation MULTISTRAP(1)

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=jessie

This will result in a completely normal bootstrap of Debian Jessie from the specified mirror, for armel in '/opt/multistrap/'. (This configuration is retained in the package as /usr/share/multistrap/jessie.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=jessie

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://http.debian.net/debian
 keyring=debian-archive-keyring
 suite=jessie
 [networking]
 packages=netbase ifupdown iproute net-tools samba
 source=http://http.debian.net/debian
 keyring=debian-archive-keyring
 suite=jessie

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://http.debian.net/debian
 keyring=debian-archive-keyring
 suite=jessie

»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.

Suites change from time to time: (oldstable, stable, testing, sid) The codename (squeeze, wheezy, jessie, sid) does not change.

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.

 #!/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

/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 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:

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 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.

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
2020-03-22 perl v5.30.0