Arbre alternatif

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Ebuild repository and the translation is 35% complete.

Other languages:
English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎polski • ‎русский • ‎中文(中国大陆)‎
Resources

An ebuild repository, colloquially known as an overlay, is a structure of directories and files used to add and extend packages available to the system's package manager. Ebuild repositories are also used by Gentoo developers as training ground and staging area for new ebuilds. Ebuild repositories can contain ebuilds of one or more EAPIs.

Systems that have Gentoo installed typically have a single ebuild repository available on the system. This main repository, known as the Gentoo ebuild repository, contains ebuilds maintained by official Gentoo developers and members of the community (through the Proxy Maintainers project). System administrators can add additional ebuild repositories to the system using various utilities and methods described below.

Traitement des arbres alternatifs

Ebuild repositories are nothing more (or less) than a set of files (ebuilds, metadata files, ...). These can be pulled in from public repositories (git, CVS, SVN ...) or downloaded as tarballs and extracted manually onto the system. It is advised to use managed repositories by trusted third parties; any installed ebuild repository will cause Portage to look through the overlaid files when deciding which software to install. If compromised code is in the ebuild repository, then compromised packages could be installed on the system.

The now default approach for handling repositories is through /etc/portage/repos.conf which, like many other Portage related locations, can be a directory as well.

Repository definitions inside /etc/portage/repos.conf/ also inform Portage if and how the repository can be updated. With it, calling emerge --sync will automatically update the repositories as well.

A deprecated, yet still supported method is to use the PORTDIR_OVERLAY variable inside /etc/portage/make.conf. This variable can point to one or more additional locations on the file system where repositories are available. The use of the /etc/portage/repos.conf/ directory is highly preferred.

For more information, see /etc/portage/repos.conf and the Portage/Sync article.

Priorités des arbres alternatifs

Chacun des arbres alternatifs dispose d'une priorité unique. Ceci fait que, dans le cas où une version spécifique serait trouvée dans plusieurs arbres alternatifs, la résolutions est non ambigüe. Les ebuilds des arbres alternatifs à la plus haute priorité sont prioritaires par rapport à ceux trouvés dans des arbres de priorité moindre.

La commande suivante fournit la liste des arbres alternatifs avec leur priorité :

user $emerge --info --verbose
user $portageq repos_config /

Sauf si la variable PORTDIR_OVERLAY a été modifiée de la manière décrite plus bas, l'arbre de Portage par défaut a une priorité de -1000. Ceci signifie que tous les autres arbres alternatifs sont prioritaires par rapport à lui. Il s'agit du comportement par défaut, parce que les arbres alternatifs sont conçus, pour se situer au dessus de l'arbre de Portage.

Available software

A number of tools support or integrate with ebuild repositories.

Layman

The layman application makes it easier to manage and update multiple additional ebuild repositories. It is a command-line application through which publicly available ebuild repositories can be listed, subscribed to and unsubscribed from, as well as update those repositories.

It supports both the make.conf as well as repos.conf method.

Pour faciliter la gestions d'arbres alternatifs multiples, un outil appelé layman a été développé. Cet outil est informé des arbres alternatifs populaires gérés par des utilisateurs et des développeurs et est capable de les installer et de les synchroniser tout autant que de les ajouter aux emplacements déclarés dans PORTDIR_OVERLAY.

emaint

See the Sync (Portage project) article and man 1 emaint.

Intégration dans eix

eix-sync is a wrapper starting emerge --sync (which in turn starts emaint sync --auto) followed by eix-update. For further details see the Eix article and man 1 eix.

Usage

Emerging a duplicate package

When working with ebuild repositories it is possible to encounter a situation where multiple versions of the same package are available from different ebuild repositories. Instruct Portage to install a specific package from a specific ebuild repository with the :: notation:

root #emerge --ask category/atom::repository-name

The same notation can be used for different emerge instructions, including uninstalling a package through --depclean.

Best practices

Génération du cache

Lorsque de grands arbres alternatifs sont installés, Portage peut mettre un temps très long pour réaliser des opérations telles que la résolution des dépendances. Ceci est dû au fait, qu'en général, les arbres alternatifs ne possèdent pas de cache des méta-données.

Vous pouvez générer un cache de méta-données local en exécutant la commande emerge --regen après synchronisation de vos arbres alternatifs.

root #layman -S
root #emerge --regen

Be careful, because emerge --regen takes a lot of time and it's not recommended for rsync users as rsync updates the cache using server-side caches (most of users of portage are rsync users). Rsync users should simply run emerge --sync (or eix-sync) to regenerate the cache. It's probably only users of very large ebuild repositories should try emerge --regen.

Masking installed but unsafe ebuild repositories

Lorsque vous utilisez des arbres alternatifs importants ou des arbres dont la qualité est soit faible, soit inconnue, il est recommandé de masquer en dur tout l'arbre alternatif.

File/etc/portage/package.maskMasquer tous les paquets d'un arbre alternatif

*/*::overlay-name

This is a deprecated template. Help us update this template!

Après cela, il ne vous reste plus qu'à démasquer les paquets que vous voulez installer.

File/etc/portage/package.unmaskDémasquer un paquet donné dans un arbre alternatif

foo/bar::overlay-name

This is a deprecated template. Help us update this template!

See also

External resources