multistrap(1) bootstrap avec plusieurs dépôts

Synopsis

multistrap [-a ARCH] [-d RÉPERTOIRE] -f FICHIER_CONFIG multistrap [--simulate] -f FICHIER_CONFIG multistrap -?|-h|--help|--version

Options

-?|-h|--help|--version - afficher le texte d'aide et quitter correctement.

--dry-run - examiner tous les paramètres de configuration et afficher un bref sommaire.

--simulate - identique à --dry-run

(Les options suivantes peuvent également être définies dans le fichier de configuration.)

-a|--arch - architecture des paquets à insérer dans le multistrap.

-d|--dir - répertoire dans lequel le bootstrap sera installé.

-f|--file - fichier de configuration pour multistrap [requis]

-s|--shortcut - version raccourcie de -f pour les fichiers dans des endroits connus.

--tidy-up - supprimer les données du cache d'apt, les fichiers Packages téléchargés et le cache des paquets apt. Identique à cleanup=true.

--no-auth - autoriser l'utilisation de dépôts non authentifiés. Identique à noauth=true

--source-dir RÉP - déplacer le contenu de var/cache/apt/archives/ de l'intérieur du chroot vers le répertoire extérieur spécifié, puis ajouter les sources des paquets Debian pour chaque binaire utilisé. Identique à retainsources=RÉP. Si le répertoire indiqué n'existe pas, rien ne sera fait. --tidy-up est requis pour calculer la liste complète des paquets source en incluant les dépendances.

Description

multistrap fournit une méthode semblable à debootstrap, basée sur apt et permettant la gestion de dépôts multiples, en utilisant un fichier de configuration pour indiquer les versions de distribution, l'architecture, les paquets supplémentaires et le miroir à utiliser pour chaque bootstrap.

Le but est de créer un système de fichiers racine / bootstrap complet avec tous les paquets installés et configurés, plutôt que de créer uniquement le système de base.

Dans la plupart des cas, les utilisateurs devront créer un fichier de configuration pour chaque utilisation différente de multistrap.

Exemple de configuration :

[General]
 arch=armel
 directory=/opt/multistrap/
 # identique à l'option --tidy-up si définie à vrai
 cleanup=true
 # identique à l'option --no-auth si définie à vrai
 # les paquets « keyring » indiqués dans chaque bootstrap seront
 # toujours installés.
 noauth=false
 # extraire toutes les archives téléchargées (vrai par défaut)
 unpack=true
 # ajouter ou non la /suite pour rendre explicite l'endroit où apt
 # doit chercher les paquets. (faux par défaut)
 explicitsuite=false
 # activer MultiArch pour les architectures indiquées
 # vide par défaut
 # aptsources est une liste de sections à utiliser
 # le fichier /etc/apt/sources.list.d/multistrap.sources.list
 # de la cible. L'ordre n'est pas important
 aptsources=Debian
 # l'option bootstrap détermine quel dépôt
 # est utilisé pour calculer la liste des priorités : paquets nécessaires
 # et quels paquets vont dans le système de fichiers racine (rootfs).
 # L'ordre des sections n'est pas important
 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)

Indiquez un paquet pour étendre le multistrap afin d'inclure ce paquet et toutes les dépendances de ce paquet.

Indiquez des dépôts supplémentaires pour le bootstrap en ajoutant de nouvelles sections. Les noms de sections doivent figurer dans les options générales de boostrap pour les paquets à inclure dans le bootstrap.

Veuillez indiquer quels dépôts seront disponibles pour le système final lors du boot, en indiquant les noms de section dans les options générales de aptsource, par exemple pour exclure des sources internes ou quand vous utilisez un mirroir local pour compiler le système de fichiers racine.

La casse des lettres n'est pas importante dans les noms de section.

Toutes les dépendances sont résolues uniquement par apt, en utilisant tous les dépôts bootstrap, pour utiliser uniquement les dépendances les plus récentes et les plus appropriées. Notez que multistrap désactive Install-Recommands. Si le multistrap a besoin d'un paquet qui est seulement recommandé, ce paquet devra donc être indiqué explicitement à la ligne des paquets. Voir "Spécifications explicites des versions de distributions" pour obtenir plus d'informations sur la façon d'obtenir des paquets spécifiques depuis des versions de distribution spécifiques.

« arch » et « directory » peuvent être outrepassés en ligne de commande. D'autres options générales peuvent aussi être indiquées en ligne de commande.

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

Raccourcis

De la même manière que "debootstrap", "multistrap" gère la référence à des fichiers de configuration à des endroits connus par des raccourcis. Quand l'option "--shortcut" est utilisée, "multistrap" cherchera des fichiers dans /usr/share/multistrap puis dans /etc/multistrap.d/, ajoutant un suffixe « .conf » au raccourci indiqué.

Ces deux commandes sont équivalentes :

 $ sudo multistrap -s sid
 $ sudo multistrap -f /usr/share/multistrap/sid.conf

Veuillez noter que "multistrap" échouera à chaque fois si le fichier de configuration lui même n'indique pas le répertoire ou l'architecture.

Dépôts

"aptsources" liste les sections qui devraient être utilisées pour créer les /etc/apt/sources.list.d/multistrap.list sources apt du système final. Tous les "aptsources" ne doivent pas obligatoirement apparaître dans la section "bootstrap" s'il y a des sources internes ou locales inaccessibles par le système de fichiers racine installé.

"bootstrap" liste les sections qui seront utilisées pour créer le multistrap lui-même. Seuls les paquets indiqués dans "bootstrap" seront téléchargés et dépaquetés par multistrap.

Il faut s'assurer que "bootstrap" liste toutes les sections nécessaires afin que apt puisse trouver tous les paquets devant être dépaquetés pour le multistrap.

(Les anciennes versions de multistrap utilisaient la même option sous le nom "debootstrap" - cette écriture est toujours possible mais les nouveaux fichiers de configuration devraient plutôt être "bootstrap".

Paramètres généraux :

« arch » peut être outrepassé en ligne de commande en utilisant l'option "--arch".

« directory » indique le répertoire au sommet de l'arborescence dans lequel le debootstrap sera créé - il n'est pas empaqueté en un .tgz une fois terminé.

« bootstrap » liste les sections qui seront utilisées pour indiquer les paquets qui seront téléchargés (et éventuellement dépaquetés) dans le bootstrap.

« aptsources » liste les Sections qui seront utilisées pour indiquer les sources d'apt dans le système final. Par exemple, si vous avez besoin d'un miroir local pour générer le système de fichiers racine qui ne sera pas disponible au démarrage, indiquez cette section dans "bootstrap" et pas dans "aptsources".

Si vous souhaitez qu'un paquet soit dans le système de fichiers racine, il doit être indiqué dans la liste de "bootstrap" sous Général.

L'ordre des noms de section n'est pas important quelle que soit la liste.

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

Comme pour debootstrap, multistrap continuera après des erreurs aussi longtemps que le fichier de configuration peut être correctement interprété.

multistrap implémente également la gestion des variantes machines utilisée initialement dans Emdebian Crush, bien que l'implémentation soit différente. Utiliser la gestion de configuration en cascade (« cascading configuration ») permet des combinaisons de variantes machines spécifiques gérées par de simples changements sur la ligne de commande.

Définir "tarballname" à vraie empaquette également le système de fichiers final dans un tarball.

Veuillez noter que multistrap ne tient pas compte des options non reconnues dans le fichier de configuration - cela permet de garder une rétrocompatibilité ainsi que de surcharger les fichiers de configuration de multistrap pour gérer d'autres outils (comme pbuilder). Utilisez l'option "--simulate" pour voir les différentes combinaisons de paramètres.

Néanmoins, si le fichier de configuration ne peut être lu, multistrap abandonnera. Vérifiez que le fichier de configuration possède une clé et une valeur pour chaque ligne, en dehors des commentaires. Les valeurs doivent toutes se trouver sur la même ligne que la clé.

Paramètres de la section

 [Debian]
 packages=
 source=http://ftp.uk.debian.org/debian
 keyring=debian-archive-keyring
 suite=jessie

Le nom de section (entre [] crochets) doit être unique pour ce fichier de configuration et tous les fichiers de configuration que ce fichier comporte. Les noms de section ne sont pas sensibles à la casse (toutes les comparaisons sont faites après la conversion en minuscules).

« packages » est la liste des paquets devant être ajoutés quand la Section est indiquée dans "bootstrap" — tous les noms de paquets doivent être indiqués sur une seule ligne ou le fichier ne pourra être lu. Une alternative consiste à définir votre liste de paquets en groupes multiples avec les paquets séparés selon une base de dépendances fonctionnelles, comme Xorg, networking, etc. et indiqué chaque groupe sous « 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

Exceptionnellement, "multistrap" prend aussi en charge plusieurs clés pour les paquets, chacune sur une ligne. Les autres clés ne peuvent être définies de la même manière.

 [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 » est la source apt à utiliser pour cette Section. Pour utiliser une source locale sur la même machine, assurez-vous d'utiliser "copy://" et pas "file://", de manière à dire à apt de copier les paquets dans le système de fichiers racine plutôt que d'essayer de les télécharger plus tard - parce que ce « plus tard » n'arrivera certainement jamais.

« keyring » liste les paquets qui contiennent la clé utilisée par la source indiquée dans la Section. Si aucune clé n'est indiquée, l'option "noauth" doit être mise à actif. Voir Securiser Apt.

« suite » est la suite à utiliser depuis cette source. Veuillez noter qu'il s'agit de la suite et non du nom de code.

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

Apt sécurisé

Pour utiliser des dépôts apt signés, multistrap doit pouvoir installer un paquet trousseau adéquat à partir des sources apt existantes en dehors de l'environnement multistrap, dans le système de destination. Malheureusement, les paquets de trousseau ne peuvent pas être téléchargés depuis les dépôts indiqués dans la configuration multistrap — ceci parce que "apt" nécessite que le trousseau soit mis à jour avant de pouvoir utiliser des dépôts non connus précédemment.

Si ces paquets existent, indiquez-les dans l'option « keyring » pour chaque dépôt. multistrap vérifiera alors que apt a déjà installé ce paquet : ainsi le dépôt pourra être authentifié avant de télécharger des paquets.

Notez que tous les dépôts devant être utilisés avec multistrap doivent être authentifiés sinon apt échouera. De même, la sécurisation d'apt ne peut être désactivée que pour tous les dépôts (en utilisant l'option --no-auth en ligne de commande ou en définissant l'option générale noauth dans le fichier de configuration), même s'il n'existe qu'un seul dépôt sans trousseau de clés convenable.

Les paquets de trousseau de clés seront également installés à l'intérieur de l'environnement du multistrap pour correspondre avec les sources apt installées pour le multistrap.

État

multistrap est sans-état - si le répertoire existe, il procédera tout simplement de manière ordinaire et apt essaiera de reprendre là où il s'était arrêté.

Configuration du système de fichiers racine

multistrap décompresse les paquets téléchargés, mais d'autres étapes de la configuration du système ne sont pas tentées. Par exemple :

 /etc/inittab
 /etc/fstab
 /etc/hosts
 /etc/securetty
 /etc/modules
 /etc/hostname
 /etc/network/interfaces
 /etc/init.d
 /etc/dhcp3

Tous les noeuds de périphériques doivent également être créés avec MAKEDEV ou "device-table.pl" - un script d'aide pouvant résoudre certains problèmes de MAKEDEV. device-table.pl nécessite un fichier contenant une table de périphériques suivant les lignes de celui contenu dans les sources du paquet mtd-utils. Voir /usr/share/doc/multistrap/examples/device_table.txt

Une fois que multistrap a réussi à créer la structure de base pour les fichiers et les répertoires, d'autres scripts spécifiques aux périphériques sont nécessaires avant que le système de fichiers puisse être installé sur le périphérique cible.

Une fois installés, les paquets doivent eux-mêmes être configurés en utilisant les scripts du responsable du paquet et "dpkg --configure -a", à moins qu'il ne s'agisse d'un multistrap natif.

Pour que "dpkg" puisse fonctionner, /proc et /sysfs doivent être montés (ou être montables), /dev/pts est également recommandé.

Voir aussi : http://wiki.debian.org/Multistrap

Environnement

Pour configurer les paquets dépaquetés (que ce soit en mode croisé ou natif), certaines variables d'environnement sont nécessaires :

Il est nécessaire de signaler à Debconf que l'interaction utilisateur n'est pas souhaitée :

 DEBIAN_FRONTEND=noninteractif DEBCONF_NONINTERACTIVE_SEEN=true

Il est nécessaire de signaler à Perl qu'aucune locale n'est disponible l'intérieur du chroot et de ne pas se plaindre :

 LC_ALL=C LANGUAGE=C LANG=C

Puis, dpkg peut configurer les paquets :

méthode chroot (PATH = le répertoire de base du chroot) :

 DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
 LC_ALL=C LANGUAGE=C LANG=C chroot /PATH/ dpkg --configure -a

dans un interpréteur de commandes de connexion :

 # export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
 # export LC_ALL=C LANGUAGE=C LANG=C 
 # dpkg --configure -a

(Comme ci-dessus, dpkg a besoin que /proc et /sysfs soient montés en premier.)

mode natif - multistrap

multistrap n'était pas prévu pour le mode natif, il fut développé pour la gestion de plusieurs architectures. Pour que de multiples dépôts puissent être utilisés, multistrap dépaquette uniquement les paquets sélectionnés par apt.

En mode natif, diverses opérations post-multistrap que debootstrap ferait pour vous sont probablement nécessaires :

 1. copiez /etc/hosts dans le chroot
 2. nettoyez l'environnement pour détruire LANGUAGE, LC_ALL and LANG
    pour passer sous silence les nuisances des avertissements cachant d'autres erreurs

(Une alternative pour détruire les variables de localisation est d'ajouter locales à votre fichier de configuration multistrap dans l'option « paquets ».

Un multistrap natif peut être directement utilisé avec chroot, ainsi "multistrap" exécute "dpkg --configure -a" à la fin du processus du multistrap à moins que l'option ignorenativearch soit réglée sur true dans la section General du fichier de configuration.

Démons dans les chroots

En fonction du système que vous utilisez pour fournir les paquets pour "multistrap", les chroots natifs n'autorisent généralement pas les démons à démarrer au sein du chroot. Utilisez le /usr/share/multistrap/chroot.sh comme votre "setupscript" ou incluez ce script dans votre propre script d'installation.

 setupscript=/usr/share/multistrap/chroot.sh

chroot.sh sait fonctionner avec les systèmes utilisant sysvinit et upstart.

Voir également

 http://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt

Configuration en cascade

Pour assurer les multiples variantes d'une configuration de base, "multistrap" permet d'inclure des fichiers de configuration (plus généraux) dans des fichiers de configuration : le fichier de configuration le plus spécifique ou détaillé doit être indiqué à la ligne de commande et ce fichier inclut un fichier qui est partagé avec d'autres configurations.

Fichier de base :

 /usr/share/multistrap/crosschroot.conf

Variations :

 /usr/share/multistrap/armel.conf

En indiquant uniquement le fichier armel.conf, le reste des paramètres sera obtenu à partir du fichier crosschroot.conf afin que les modifications communes ne doivent être réalisées que dans un seul fichier.

Il est fortement recommandé pour toutes modifications dans les fichiers de configuration impliqués dans n'importe quelle cascade de les tester avec l'option "--simulate" de multistrap qui produira en sortie un résumé des options définies une fois la cascade effectuée. Il faut noter que multistrap n'avertit pas si un fichier de configuration contient une option non reconnue (afin d'assurer la compatibilité future avec les configurations rétroportées). Ainsi une simple faute de frappe peut être à l'origine d'une option non définie.

Gestion des variantes de Machines

Toutes les anciennes variables de packages.conf de emsandbox peuvent être converties en variables de configuration "mulistrap". L'assistance des variantes machines dans "multistrap" se concentre sur les scripts, config.sh et setup.sh

Remarque : la prise nen charge de machine:variant sera vraisemblablement remplacée par le déclencheur décrit ci-dessous

Une fois que "multistrap" a dépaqueté les paquets téléchargés, "setup.sh" peut être appelé, en passant l'emplacement et l'architecture du système de fichiers racine, pour que d'autre réglages fins puissent être effectués. À cette étape, aucune opération à l'intérieur d'un système de fichiers racine étranger (rootfs) ne doit tenter d'exécuter de binaires dans le rootfs. À la dernière étape du processus multistrap, "config.sh" est copié vers le répertoire root du système de fichiers racine.

Un des avantages d'utiliser la gestion des variantes machines est que la totalité du système de fichiers racine peut être gérée par un seul appel à multistrap - ceci est utile lors de la création de systèmes de fichiers racines dans l'espace utilisateur.

Pour activer les variantes machines, il faut indiquer le chemin vers les scripts devant être appelés dans le fichier de configuration variant (Section Générale) :

 [General]
 include=/chemin/vers/general.conf
 setupscript=/chemin/vers/setup.sh
 configscript=/chemin/vers/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

Restriction de la sélection des paquets

"multistrap" inclut les paquets requis par défaut, la liste actuelle des paquets sur votre machine personnelle peut être visualisée en utilisant :

 grep-available  -FPriority 'required' -sPackage

(La véritable liste est calculée à partir des paquets téléchargés et peut différer de la sortie de "grep-available".)

Si l'option OmitRequired est définie à vrai, ces paquets ne seront pas ajoutés - bien qu'utile, cette option peut facilement conduire à un rootfs inutilisable. Seuls les paquets indiqués manuellement dans les fichiers de configuration seront utilisés dans les calculs - les dépendances de ces paquets seront également ajoutées mais aucun autre.

Ajout des paquet de priorité « important »

"multistrap" peut imiter "debootstrap" en ajoutant automatiquement tous les paquets depuis toutes les sections où le fichier des paquets téléchargés indique les paquets de priorité « important ». Le comportement par défaut est de ne pas ajouter de tels paquets tant qu'ils ne sont pas individuellement inclus dans une option "packages=", dans une section indiquée dans les options générales de "bootstrap". Pour ajouter tous ces paquets, réglez l'option addimportant sur vrai dans la section générale.

 addimportant=true

La priorité « important  ne peut être appliquée qu'aux sections indiquées dans l'option de "bootstrap". Cela pourrait entraîner de la confusion lors de mélanges de suites.

Il n'est pas possible d'activer addimportant et omitrequired dans la même configuration. "multistrap" s'arrêtera avec le code d'erreur 7 s'il est trouvé dans n'importe quelle configuration les options addimportant et omitrequired réglées sur vrai. (Ceci inclut les effets dûs à l'inclusion d'autres fichiers de configuration.)

Comportements recommandés

Après la version Lenny, le comportement par défaut de Debian était de prendre en compte les paquets recommandés comme des paquets supplémentaires quant au moins un paquet était sélectionné. Les paquets recommandés sont ceux que le mainteneur considère comme devant être présents dans la "plupart" des installations de ce paquet et autoriser les paquets recommandés signifie autoriser les recommandés des paquets eux-mêmes recommandés et ainsi de suite.

Le comportement par défaut de multistrap est de désactiver les paquets recommandés.

Placez l'option allowrecommands (autoriser les paquets suggérés) à true (oui) dans la section générale pour utiliser ce comportement usuel de Debian.

Default release

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

Spécification claire de la version de la distribution

Quelque fois, il faut dire explicitement à apt d'aller prendre un paquet en particulier depuis une version spécifique, en ignorant une version plus récente d'une autre version de la distribution dans la même liste de sources.

"multistrap" peut fonctionner avec et sans la spécification explicite de la version de la distribution, le paramètre par défaut est de laisser apt utiliser la version la plus récente du catalogue des sources bootstrap indiquées.

La spécification d'une version de distribution n'a pas d'effet sur le système final installé - si vos sources apt incluent un dépôt disposant d'une nouvelle version du paquet explicitement indiqué, le prochain "apt-get upgrade" sur la machine installera la nouvelle version.

De même, quand vous indiquez des paquets à prendre depuis une version spécifique de la distribution, apt essaie de s'assurer que les dépendances pour ce paquet viennent également de cette même version, ce qui peut occasionner des problèmes à apt pour résoudre l'ensemble de ces dépendances. Dans ce cas, indiquer explicitement un paquet peut entrainer le fait d'indiquer quelques (pas nécessairement toutes) dépendances de ce paquet également.

Lors de l'utilisation de suite explicite, assurez-vous d'utiliser stable-proposed-updates ou d'autres emplacements temporaires - si le paquet migre dans une autre suite et est supprimé de la suite temporaire (comme avec *-proposed-updates), multistrap ne pourra pas trouver le paquet.

La manipulation de suite explicite peut être difficile à faire fonctionner. En général, il vaut mieux créer un petit chroot bootstrap de l'architecture native, puis faire un chroot dedans, ajouter les bonnes sources apt pour trouver les commandes nécessaires et suffisantes pour obtenir le mélange de paquets adéquat. Évitez d'indiquer des versions explicites pour contourner les problèmes, travaillez avec les suites uniquement. L'épinglage avec l'utilisation d'un fichier de préférences apt peut être utile ici, consultez préférences apt.

Préférences apt

Si un fichier adéquat est indiqué dans l'option aptpreferences de la section General du fichier de configuration, il sera copié dans le répertoire des préférences de apt du bootstrap avant d'utiliser apt.

Quand un fichier de préférences apt est fourni, le comportement "Default-Release" de "multistrap" est désactivé.

Comme avec d'autres scripts et fichiers extérieurs, le contenu du fichier de préférences apt sort du cadre de ce manuel. "multistrap" ne tente pas de vérifier le fichier fourni mais s'assure juste qu'il peut être lu.

Omission de la lecture de deb-src

Certains environnements multistrap ne nécessitent pas l'accès aux sources des paquets Debian durant l'installation, cela est typiquement nécessaire lors de la préparation d'une compilation (ou compilation croisée) chroot utilisant multistrap.

Pour désactiver la source additionnelle (et raccourcir le temps de téléchargement et la taille du cache de apt), utilisez le champ omitdebsrc dans chaque Section.

 [Baked]
 packages=
 source=http://www.emdebian.org/baked
 keyring=emdebian-archive-keyring
 suite=testing
 omitdebsrc=true

omitdebsrc est nécessaire en cas d'utilisation de paquets en provenance de debian-ports où les paquets n'ont pas de sources, à l'exception de « non-délivrée ».

fakeroot

Les architectures bootstrap différentes peuvent fonctionner sous "fakeroot" ("multistrap" est conçu pour en faire le maximum qu'il peut au sein d'un même appel pour faciliter cette tâche) mais le niveau de configuration qui est normalement appliqué avec une architecture bootstrap native requiert "chroot" et "chroot" en lui-même ne fonctionnera pas sous "fakeroot".

Donc, si "multistrap" détecte que "fakeroot" est en cours d'utilisation, le mode de configuration natif est sauté avec un message de rappel.

Le même problème apparaît avec "apt-get install" et donc l'installation du paquet trousseau sur le système hôte est également sauté si fakeroot est détecté.

Gestion des paquets problématiques

Quelquefois, un paquet en particulier échouera même à se dépaqueter proprement si les autres paquets n'ont pas encore été dépaquetés. Cela peut arriver si les contournements de dpkg ne sont pas correctement configurés ou si les Pre-Depends du paquet dépendent d'un exécutable se trouvant dans un autre paquet.

Multistrap offre deux façons de gérer ces problèmes. Un paquet peut être indiqué comme "reinstall" ou comme "additional". Chaque section dans le fichier de configuration de "multistrap" peut être indiqué seulement en tant que "reinstall" ou "additional" ou bien les deux.

Reinstall signifie que le paquet sera téléchargé et dépaqueté normalement - aux côtés de tous les autres paquets, mais sera alors réinstallé à la fin en lançant le script du mainteneur "preinst" avec l'argument "upgrade". "dpkg" continuera alors le reste de la configuration de ce paquet.

Additional ajoute un second tour de "apt-get install" au processus multistrap - après le dépaquetage initial. Le paquet additionnel sera alors téléchargé et dépaqueté. Lancé nativement, le paquet additionnel est téléchargé, dépaqueté et configuré après que tout le reste des paquets aient été téléchargés, dépaquetés et configurés.

Ni "reinstall" ni "additional" ne devraient être considérés mieux que de simples astuces et les bogues devant figurer sur la liste des souhaits devraient être remplis dans Debian pour des paquets qui nécessiteraient de tels mécanismes (ou les paquets qui empêcheraient le paquet en particulier de se comporter normalement).

Préconfiguration Debconf

Ajouter une préconfiguration Debconf peut aider à configurer des paquets sur un comportement en particulier au lieu de celui par défaut, lors de configuration en mode non-interactif. Voir http://www.debian-administration.org/articles/394 pour des informations sur comment créer des fichiers de préconfiguration.

Il est possible d'indiquer des fichiers de préconfiguration multiples en utilisant le champ debconfseed dans la section [General], séparés par des espaces :

 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

Détournements

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:
Déclencheurs téléchargés
Exécutés avant le démarrage du dépaquetage, immédiatement après que les paquets aient été téléchargés. Les déclencheurs téléchargés sont des scripts exécutables dans le répertoire de déclencheurs indiqué, avec un nom de fichier commençant par download.
Déclencheurs natifs.
Les scripts de déclencheurs natifs sont exécutés uniquement dans le mode natif, juste avant de démarrer la configuration des paquets téléchargés et encore une fois après la fin de la configuration du paquet. Les déclencheurs natifs seront appelés avec le chemin absolu et l'état de progression actuel, démarré ou arrêté.

Les scripts natifs sont exécutables dans le répertoire de déclencheurs indiqué avec un nom de fichier commençant par native.

Déclencheurs de complétion
Exécutés juste avant que l'archive (« tarball ») soit créée ou que "multistrap" quitte s'il n'est pas configuré pour la créer.

Completion scripts are executable scripts in the specified hook directory with a filename beginning with completion.

Les déclencheurs sont passés avec le chemin absolu dans le répertoire qui sera le niveau parent du chroot ou du système multistrap. Les déclencheurs ne pouvant être résolus en utilisant realpath ou qui ne sont pas exécutables seront ignorés.

Tous les déclencheurs d'une même sorte sont triés par ordre alphabétique avant d'être lancés.

Veuillez noter que "multistrap" ne fait pas de retour arrière des effets des déclencheurs en cas d'erreur. Cependant, "multistrap" signalera les erreurs accumulées sous forme d'avertissement. Si un déclencheur quitte sur autre chose que zéro, la valeur de sortie est convertie vers un nombre positif et ajoutée à la somme totale des avertissements, affichée à la fin de l'opération.

Sortie

"multistrap" peut produire beaucoup de sorties - les messages d'information apparaissent sur STDOUT, les erreurs et les avertissement sur STDERR. Les appels vers "apt" et "dpkg" respectent le même modèle, pour qu'il soit simple d'ajuster la sortie combinée de "multistrap" sur les erreurs seulement, si désiré.

"multistrap" accumule les états d'erreur des processus non fatals au sein de l'opération et les rapporte comme des avertissements sur STDERR en même temps que quitter avec le décompte des erreurs accumulées. Cela comprend les déclencheurs qui signalent des valeurs de retour différentes de zéro.

Bogues

Comme "multistrap" devient plus complexe, des bogues s'insinuent dans le paquet. Veuillez signaler ces bogues sur le BTS Debian en utilisant l'outil "reportbug" en incluant s'il vous plait les fichiers de configuration. Si votre configuration nécessite d'accéder à des dépôts apt locaux ou privés, veuillez vérifier votre configuration avec les dernières versions de "multistrap" dans Debian en utilisant l'option "--simulate" et inclure ce rapport dans votre rapport de bogue.

La sortie de l'option "--simulate" est régulièrement enrichie pour aider les utilisateurs à pister les problèmes dans les fichiers de configuration.

Veuillez également vérifier (et mettre à jour) le wiki de Multistrap à http://wiki.debian.org/Multistrap et le contenu de la page Internet de Multistrap à http://www.emdebian.org/multistrap/ avant de remplir des bogues. Plusieurs personnes sur la liste de diffusion [email protected] et sur le canal IRC #emdebian sur irc.oftc.net peuvent également aider si votre fichier de configuration ne peut être parcouru correctement. Vous devrez alors poster la sortie de "--simulate" sur un site Internet de copier-coller (« pastebin ») et indiquer l'adresse dans votre message.

Prise en charge multiarchitecture

La prise en charge multiarchitecture est expérimentale — veuillez signaler les problèmes et soumettre des rapports de bogues avec tous les détails de votre installation, le fichier de configuration complet de multistrap et les erreurs signalées.

"multistrap" outrepasse la prise en charge multiarchitecture du système externe pour qu'un système prêt pour le multiarchitecture puisse toujours créer un chroot non multiarchitecture depuis des dépôts qui ne permettent pas d'utiliser toutes les architectures compatibles avec le dpkg externe.

Si multiarch est activé au sein du chroot multistrap, "multistrap" écrit la liste dans /var/lib/dpkg/arch à l'intérieur du chroot.

Pour les architectures multiples, veuillez indiquer l'option une fois et utilisez une liste séparée par des espaces pour la liste des architectures. Assurez-vous d'avoir inclus ce qui constituera l'architecture hôte du chroot.

Consultez aussi : http://wiki.debian.org/Multiarch

 [General]
 ...
 multiarch=i386 armel armhf

Chaque section installera les paquets depuis l'architecture de base tant que l'option "Architecture" n'est pas indiquée dans des sections particulières.

 [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