multistrap

Autres langues

Langue: pt

Version: 2010-10-01 (ubuntu - 25/10/10)

Section: 1 (Commandes utilisateur)

Nome

multistrap - multiple repository bootstraps

Sinopse

  multistrap [-a ARQUITECTURA] [-d DIRECTÓRIO] -f FICHEIRO_CONFIGURAÇÃO
  multistrap [--simulate] -f FICHEIRO_CONFIGURAÇÃO
  multistrap -?|-h|--help|--version
 
 

Opções

-?|-h|--help|--version - output the help text and exit successfully.

--dry-run - recolhe todas as definições de configuração e gera um sumário a descoberto.

--simulate - o mesmo que --dry-run

(As seguintes opções também podem ser definidas no ficheiro de configuração.)

-a|--arch - architecture of the packages to put into the multistrap.

-d|--dir - directory into which the bootstrap will be installed.

-f|--file - configuration file for multistrap [required]

--tidy-up - remove dados da cache do apt, ficheiros de pacotes descarregados e a cache de pacotes do apt. O mesmo que cleanup=true.

--no-auth - permite o uso de repositórios não autenticados. O mesmo que noauth=true

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

Descrição

multistrap provides a debootstrap-like method based on apt and extended to provide support for multiple repositories, using a configuration file to specify the relevant suites, architecture, extra packages and the mirror to use for each bootstrap.

O objectivo é criar um sistema de ficheiros bootstrap / raiz completo com todos os pacotes instalados e configurados, em vez de apenas o sistema base.

Exemplo de configuração:

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

Os nomes das secções são insensíveis a maiúsculas/minúsculas.

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.

Repositories

"aptsources" lista as secções que devem ser usadas para criar as /etc/apt/sources.list.d/multistrap.list sources do apt no sistema final. Nem todas as "aptsources" têm de aparecer na secção "bootstrap" se você tiver algumas sources internas ou locais que não estão acessíveis ao sistema de ficheiros raiz instalado.

"bootstrap" lista as secções que serão usadas para criar o próprio multistrap. Apenas os pacotes listados em "bootstrap" serão descarregados e desempacotados pelo multistrap.

Certifica que "bootstrap" lista todas as secções que precisa para o apt ser capaz de encontrar todos os pacotes a serem desempacotados para o multistrap.

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

Definições gerais:

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

O multistrap também implementa o suporte a machine:variant usado originalmente em Emdebian Crush, apesar de ser uma implementação diferente. Usando o suporte de configuração em cascata, podem ser suportadas combinações particulares de machine:variant através de alterações simples na linha de comandos.

Definir "tarballname" para verdadeiro também empacota o sistema de ficheiros final num tarball.

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

Section settings

  [Debian]
  packages=
  source=http://ftp.pt.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.

Segurança do Apt

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 on the host system.

Se existirem pacotes relevantes, especifique-os na opção 'keyring' para cada repositório. O multistrap irá então verificar se o apt já instalou este pacote para que o repositório possa ser autenticado antes que quaisquer pacotes sejam descarregados dele.

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

O(s) pacote(s) chaveiro (keyring) serão também instalados dentro do ambiente multistrap para coincidir com as fontes apt instaladas para o multistrap.

Todas as configurações do apt-key precisam ser feitas para a máquina correndo o próprio multistrap.

Estado

O multistrap não tem estado - se o directório existir, irá simplesmente prosseguir como normalmente e o apt irá tentar prosseguir de onde ficou.

Root Filesystem Configuration

o multistrap desempacota os pacotes descarregados mas não serão tentados outros estágios da configuração do sistema. Os exemplos incluem:
  /etc/inittab
  /etc/fstab
  /etc/hosts
  /etc/securetty
  /etc/modules
  /etc/hostname
  /etc/network/interfaces
  /etc/init.d
  /etc/dhcp3
 
 

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

Após o multistrap ter criado com sucesso a disposição básica de ficheiros e oesquema de directórios, são necessários outros scripts específicos do dispositivo antes que o sistema de ficheiros possa ser empacotado e instalado no dispositivo de destino.

Após instalados, os próprios pacotes precisam de ser configurados usando os scripts do responsável do pacote e "dpkg --configure -a", a menos que isto seja um multistrap nativo.

Para que o "dpkg" funcione, /proc e /sysfs precisam de estar montados (ou serem montáveis), também é recomendado /dev/pts.

Veja também: http://wiki.debian.org/Multistrap

Ambiente

Para configurar os pacotes desempacotados (seja em modo nativo ou cruzado), são necessárias certas variáveis de ambiente:

O debconf precisa que lho digam para aceitar que a interacção com o utilizador não é desejada:

  DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
 
 

O Perl precisa que lho digam para aceitar que não há locales disponíveis dentro da chroot e não se queixar:

  LC_ALL=C LANGUAGE=C LANG=C
 
 

Depois, o dpkg pode configurar os pacotes.

método de chroot (PATH = directório de topo da chroot):

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

numa shell de login:

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

(Como em cima, o dpkg precisa de /proc e /sysfs montados primeiro.)

Modo nativo - multistrap

o multistrap não foi destinado a suporte nativo, foi desenvolvido para suporte a compilação de outras arquitecturas. De modo a se usar múltiplos repositórios, o multistrap apenas desempacota os pacotes seleccionados pelo apt.

Em modo nativo, é provável serem necessárias várias operações post-multistrap que o debootstrap faria por si:

  1. copiar /etc/hosts para a chroot
  2. limpar o ambiente para apagar as variáveis LANGUAGE, LC_ALL e LANG
     para silenciar avisos sem sentido do perl que escondem outros erros
 
 

(Uma alternativa a apagar as variáveis de localização é adicionar locales ao seu ficheiro de configuração multistrap na opção 'packages').

Um multistrap nativo pode ser usado directamente com a chroot, de modo a que "multistrap" corra "dpkg --configure -a" no final do processo multistrap.

Configuração em cascata

Para suportar múltiplas variantes duma configuração básica (comum), "multistrap" permite ficheiros de configuração para incluir outros ficheiros de configuração (mais gerais). Isto é, o ficheiro de configuração mais detalhado / específico é especificado na linha de comandos e esse ficheiro inclui outro ficheiro que é partilhado por outras configurações.

Ficheiro base:

  /usr/share/multistrap/crosschroot.conf
 
 

Variações:

  /usr/share/multistrap/armel.conf
 
 

Especificar apenas o ficheiro armel.conf irá obter o resto das definições de crosschroot.conf para que as alterações comuns só precisem ser feitas num único ficheiro.

É fortemente recomendado que quaisquer modificações nos ficheiros de configuração envolvidas em qualquer cascata particular sejam testadas usando a opção "--simulate" do multistrap o que irá gerar um sumário das opções que foram definidas após a cascata estar completa. Note que o multistrap não o avisa se um ficheiro de configuração conter uma opção não reconhecida (para compatibilidade futura com configurações backport), portanto um simples erro de escrita pode resultar numa opção não definida.

Suporte a Machine:variant

As variáveis packages-conf antigas de emsandbox podem ser convertidas em variáveis de configuração "multistrap". O suporte a machine:variant em "multistrap" concentra-se nos scripts config.sh e setup.sh

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.

Uma vantagem de usar suporte a machine:variant é que o sistema de ficheiros raiz completo pode ser gerido por uma única chamada ao multistrap - isto é útil quando se constrói sistemas de ficheiros raiz no espaço do utilizador.

Para activar suporte a machine:variant, especifique o caminho para os scripts a serem chamados no ficheiro de configuração de variantes (secção General):

  [General]
  include=/path/to/general.conf
  setupscript=/path/to/setup.sh
  configscript=/path/to/config.sh
 
 

Restringindo a selecção de pacotes

"multistrap" inclui os pacotes necessários (Required) por predefinição, a lista actual de pacotes pode ser vista usando:
  grep-available  -FPriority 'required' -sPackage
 
 

Se a opção OmitRequired for definida para true, estes pacotes não serão adicionados - embora útil, esta opção pode levar facilmente a um rootfs inútil. Apenas os pacotes especificados manualmente nos ficheiros de configuração serão usados nos cálculos - as dependências desses pacotes serão adicionadas mas mais nenhuns.

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.

Recommends behaviour

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.

Explicit suite specification

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
 
 

Omitting deb-src listings

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