NOM
multistrap - bootstraps multi-dépôts
SYNOPSIS
multistrap [-a ARCH] [-d REPERTOIRE] -f FICHIER_CONFIG
multistrap [--simulate] -f FICHIER_CONFIG
multistrap -?|-h|--help|--version
multistrap fournit une méthode similaire à debootstrap(8), basée sur
apt & Co., afin de prendre en charge de multiples dépôts. A cette fin,
multistrap utilise un fichier de configuration où sont spécifiés
les architectures, les paquets supplémentaires, le miroir à utiliser
par bootstrap, etc.
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.
Exemple de configuration :
[General]
arch=armel
directory=/opt/multistrap/
# same as --tidy-up option if set to true
cleanup=true
# same as --no-auth option if set to true
# keyring packages listed in each bootstrap will
# still be installed.
noauth=false
# extract all downloaded archives (default is true)
unpack=true
# whether to add the /suite to be explicit about where apt
# needs to look for packages. Default is false.
explicitsuite=false
# aptsources is a list of sections to be used
# the /etc/apt/sources.list.d/multistrap.sources.list
# of the target. Order is not important
aptsources=Debian
# the bootstrap option determines which repository
# is used to calculate the list of Priority: required packages
# and which packages go into the rootfs.
# The order of sections is not important.
bootstrap=Debian
[Debian]
packages=
source=http://ftp.uk.debian.org/debian
keyring=debian-archive-keyring
suite=lenny
This will result in a completely normal debootstrap of Debian lenny
from the specified mirror, for armel in '/opt/multistrap/'. (This
configuration is retained in the package as
/usr/share/multistrap/lenny.conf)
Specify a package to extend the multistrap to include that package and
all dependencies of that package.
Specify more repositories for the bootstrap by adding new sections.
Section names need to be listed in the bootstrap general option for the
packages to be included in the bootstrap.
Specify which repositories will be available to the final system at
boot by listing the section names in the aptsources general option,
e.g. to exclude some internal sources or when using a local mirror when
building the rootfs.
La casse des lettres n'est pas importante dans les noms de section.
All dependencies are resolved only by apt, using all bootstrap
repositories, to use only the most recent and most suitable
dependencies. Note that multistrap turns off Install-Recommends so if
the multistrap needs a package that is only a Recommended dependency,
the recommended package needs to be specified in the packages line
explicitly. See "Explicit suite specification" for more information on
getting specific packages from specific suites.
'Architecture' and 'directory' can be overridden on the command line.
Some other general options also have command line options.
OPTIONS
-?|-h|--help|--version - affiche l'aide.
--dry-run - examine tous les paramètres de configuration et génère 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 à inclure dans le multistrap.
-d|--dir - répertoire dans lequel le bootstrap sera installé.
-f|--file - fichier de configuration pour le multistrap [requis].
--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 DIR - move the contents of var/cache/apt/archives/ from
inside the chroot to the specified external directory, then add the
Debian source packages for each used binary. Same as retainsources=DIR
If the specified directory does not exist, nothing is done. Requires
--tidy-up in order to calculate the full list of source packages,
including dependencies.
DEPOTS
"aptsources" liste les sections qui devraient être utilisées pour créer
le /etc/apt/sources.list.d/multistrap.list aptsources 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 lists 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.
(Older versions of multistrap supported the same option under the
"debootstrap" name - this spelling is still supported but new
configuration files should be "bootstrap" instead.
PARAMETRES GENERAUX
'arch' can be overridden on the command line using the "--arch" option.
'directory' specifies the top level directory where the bootstrap will
be created - it is not packed into a .tgz once complete.
'bootstrap' lists the Sections which will be used to specify the
packages which will be downloaded (and optionally unpacked) into the
bootstrap.
'aptsources' lists the Sections which will be used to specify the apt
sources in the final system, e.g. if you need to use a local repository
to generate the rootfs which will not be available to the device at
runtime, list that section in "bootstrap" but not in "aptsources".
If you want a package to be in the rootfs, it must be specified in the
"bootstrap" list under General.
The order of section names in either list is not important.
As with debootstrap, multistrap will continue after errors, as long as
the configuration file can be correctly parsed.
multistrap implémente également le support pour les variantes machines
utilisées initialement dans Emdebian Crush, bien que pour une
implémentation différente. Using the cascading configuration support,
particular machine:variant combinations can be supported by simple
changes on the command line.
Positionner "tarballname" à true (vrai) empaquette également le système de fichiers
final dans un tarball.
Note that multistrap ignores any unrecognised options in the config
file - this allows for backwards-compatible behaviour as well as
overloading the multistrap config files to support other tools (like
pbuilder). Use the "--simulate" option to see the combined
configuration settings.
SECTIONS
[Debian]
packages=
source=http://ftp.uk.debian.org/debian
keyring=debian-archive-keyring
suite=lenny
The section name (in [] brackets) needs to be unique for this
configuration file and any configuration files which this file
includes. Section names are case insensitive (all comparisons happen
after conversion to lower case).
'packages' is the list of packages to be added when this Section is
listed in "bootstrap".
'source' is the apt source to use for this Section. (To use a local
source on the same machine, ensure you use "copy://" not "file://", so
that apt is told to copy the packages into the rootfs instead of
assuming it can try to download them later - because that "later" will
never actually happen.
'keyring' lists the package which contains the key used by the source
listed in this Section. If no keyring is specified, the "noauth" option
must be set to true. See Secure Apt.
'suite' is the suite to use from this source. Note that this must be
the suite, not the codename.
Suites change from time to time: (oldstable, stable, testing, sid) The
codename (etch, lenny, squeeze, sid) does not change.
APT SECURISE
To use authenticated apt repositories, multistrap either needs to be
able to install an appropriate keyring package from the existing apt
sources outside the multistrap environment or have the relevant keys
already configured using apt-key(8) on the host system.
Si ces paquets existent, spécifiez-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.
Note that all repositories to be used with multistrap must be
authenticated or apt will fail. Similarly, secure apt can only be
disabled for all repositories (by using the --no-auth command line
option or setting the general noauth option in the configuration file),
even if only one repository does not have a suitable keyring available.
Not all packages need keyring packages, if you configure apt-key
appropriately.
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
installs du multistrap.
Toute configuration de apt-key(8) doit être faite pour la machine exécutant
multistrap.
ETAT
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 SYSTEME DE FICHIER ROOT
multistrap décompresse les paquets téléchargés, mais d'autres étapes de
la configuration du système ne sont pas tentées. Les exemples incluent:
/etc/inittab
/etc/fstab
/etc/hosts
/etc/securetty
/etc/modules
/etc/hostname
/etc/network/interfaces
/etc/init.d
/etc/dhcp3
Any device-specific device nodes will also need to be created using
MAKEDEV or "device-table.pl" - a helper script that can work around
some of the issues with MAKEDEV. device-table.pl requires a device
table file along the lines of the one in the mtd-utils source package.
See /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'environnements sont nécessaires :
Il est nécessaire de signaler à debconf(1) que l'interaction
utilisateur n'est pas souhaitée :
DEBIAN_FRONTEND=noninteractive 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(1) 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 afin de dé-positionner LANGUAGE, LC_ALL et
LANG ; ceci pour neutraliser des nuisances de Perl (trop
d'avertissements, qui de fait cachent d'autres erreurs plus
significatives).
(Une possibilité pour dé-positionner les variables de localisation est
d'ajouter des informations "locales" à votre fichier de configuration
multistrap dans l'option "packages")
Un multistrap natif peut être directement utilisé avec chroot, afin que
multistrap exécute "dpkg --configure -a" à la fin du processus
multistrap.
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. C'est-à-dire que le
fichier de configuration le plus spécifique/détaillé doit être spécifié
à 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 spécifiant 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.
SUPPORT DES VARIANTES DE MACHINES
Toutes les anciennes variables de packages.conf de emsandbox peuvent
être converties en variables de configuration "multistrap".L'assistance
des variantes machines dans "multistrap" se concentre sur les scripts,
config.sh et setup.sh
Once multistrap has unpacked the downloaded packages, the "setup.sh"
can be called, passing the location and architecture of the root
filesystem, so that other fine tuning can take place. At this stage,
any operations inside the rootfs must not try to execute any binaries
within the rootfs. As the final stage of the multistrap process,
"config.sh" is copied into the root directory of the rootfs.
Un des avantages d'utiliser le support des variantes machines est que
la totalité du système de fichiers racine peut être géré par un seul appel
à multistrap - ceci est utile lors de la création de systèmes de fichiers
racines dans l'espace utilisateur.
Pour permettre le support des variantes machines, il faut spécifier le
chemin vers les scripts devant être appelés dans le fichier de
configuration variant (Section Générale) :
[General]
include=/path/to/general.conf
setupscript=/path/to/setup.sh
configscript=/path/to/config.sh
RESTRICTION DE LA SELECTION DES PAQUETS
multistrap inclut les paquets requis par défaut, la liste actuelle des
paquets peut être visualisée en utilisant :
grep-available -FPriority 'required' -sPackage
Si l'option OmitRequired est définie à true (vrai), ces paquets ne seront
pas ajoutés - bien qu'utile, cette option peut facilement conduire à un
rootfs inutile. Seuls les paquets spécifié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.
Packages with Priority: important or standard are never included by
"multistrap" unless specifically included in a "packages=" option in a
section specified in the "bootstrap" general option.
COMPORTEMENT QUANT AUX PAQUETS RECOMMANDES
The Debian default behaviour after the Lenny release was to consider
recommended packages as extra packages to be installed when any one
package is selected. Recommended packages are those which the
maintainer considers that would be present on "most" installations of
that package and allowing Recommends means allowing Recommends of
recommended packages and so on.
The multistrap default is to turn recommends OFF.
Set the allowrecommends option to true in the General section to use
typical Debian behaviour.
CHOIX DE PAQUET EXPLICITE
Sometimes, apt needs to be told to get a particular package from a
particular suite, ignoring a more recent version in another suite in
the same set of sources.
multistrap can operate with and without the explicit suite option,
the default is to let apt use the most recent version from the
collection of specified bootstrap sources.
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.
To test, on Lenny, try:
$ sudo apt-get install apt/stable
Compare with
$ sudo apt-get install apt/lenny
OMETTRE LES LISTES deb-src
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
FAKEROOT
Foreign architecture bootstraps can operate under fakeroot(1)
(multistrap is designed to do as much as it can within a single call
to make this easier) but the configuration stage which normally happens
with a native architecture bootstrap requires chroot(8) and chroot
itself will not operate under fakeroot.
Therefore, if multistrap detects that fakeroot is in use, native
mode configuration is skipped with a reminder warning.
The same problem applies to "apt-get install" and therefore the
installation of the keyring package on the host system is also skipped
if fakeroot is detected.
VOIR AUSSI
debootstrap(8), apt(8), apt-get(8), dpkg(1), debconf(1), debconf(7),
chroot(8), fakeroot(1), sudo(8)
http://wiki.debian.org/Multistrap