[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ suivant ]
Ce chapitre touche aux mécanismes internes de bas niveau du système de gestion de paquets Debian. Si vous êtes avant tout intéressé par l'utilisation des outils appropriés, passez aux chapitres Outils de gestion des paquets Debian, Chapitre 8 et Garder son système Debian à jour, Chapitre 9.
Les paquets contiennent généralement tous les fichiers nécessaires pour implémenter un ensemble de commandes ou de fonctionnalités. Il y a deux sortes de paquets Debian :
Binary packages, which contain executables, configuration files,
man/info pages, copyright information, and other documentation. These packages
are distributed in a Debian-specific archive format (see Quel est le format d'un paquet binaire Debian ?,
Section 7.2); they are usually characterized by having a '.deb' file
extension. Binary packages can be unpacked using the Debian utility
dpkg (possibly via a frontend like aptitude
); details
are given in its manual page.
Source packages, which consist of a .dsc file describing
the source package (including the names of the following files), a
.orig.tar.gz file that contains the original unmodified source in
gzip-compressed tar format and usually a .diff.gz file that
contains the Debian-specific changes to the original source. The utility
dpkg-source packs and unpacks Debian source archives; details are
provided in its manual page. (The program apt-get
can be used as
a frontend for dpkg-source.)
L'installation de logiciels par le système de paquets utilise les dépendances
qui sont définies avec attention par le responsable du paquet. Ces dépendances
sont documentées dans le fichier control associé à chaque paquet.
Par exemple, le paquet du compilateur GNU C (gcc
) dépend du paquet
binutils
qui contient l'éditeur de lien et l'assembleur. Si un
utilisateur essaye d'installer gcc
sans avoir préalablement
installé binutils
, le système de gestion de paquets (dpkg)
renverra un message d'erreur disant qu'il a aussi besoin de
binutils
et arrêtera l'installation de gcc
.
(Cependant ceci peut être forcé par un utilisateur insistant, voir
dpkg(8)
). Pour plus d'informations, voir Que
signifie qu'un paquet dépend (Depends), recommande
(Recommends), suggère (Suggests), est en conflit
(Conflicts), remplace (Replaces), casse (Breaks) ou
fournit (Provides) un autre paquet ?, Section 7.9 plus loin.
Les outils de gestion de paquets Debian peuvent être utilisés pour :
manipuler ou administrer les paquets ou une partie des paquets,
administrer les modifications locales (« overrides ») des fichiers d'un paquet,
aider les développeurs dans la construction de paquets et
aider les utilisateurs dans l'installation de paquets résidant sur un serveur FTP distant.
Un paquet Debian ou un fichier d'archive Debian, contient les fichiers exécutables, les bibliothèques et la documentation liée à une suite particulière de programme ou à un ensemble de programmes. Normalement, un fichier archive Debian a un nom se terminant par .deb.
Les mécanismes internes du format des paquets binaires Debian sont décrits dans
la page de manuel de deb(5)
. Ce format interne est susceptible de
changer (entre chaque version principale de Debian GNU/Linux), donc utilisez
toujours dpkg-deb(1)
si vous avez besoin d'effectuer des
opérations de bas niveau sur des fichiers .deb.
Le nom des paquets binaires Debian se conforme à la convention suivante : <foo>_<NuméroVersion>-<NuméroRévisionDebian>_<DebianArchitecture>.deb
Note that foo is supposed to be the package name. Checking the package name associated with a particular Debian archive file (.deb file) can be done in one of these ways:
inspecter le fichier « Packages » dans le répertoire où il a été stocké sur un site FTP d'archive Debian. Ce fichier contient une description pour chaque paquet ; le premier champ de chaque description est le nom formel du paquet.
utiliser la commande dpkg --info foo_VVV-RRR_AAA.deb (où VVV, RRR et AAA sont respectivement le numéro de version, le numéro de révision et l'architecture du paquet en question). Ceci affiche, entre autres, le nom du paquet correspondant au fichier archive.
Le composant VVV est le numéro de version fourni par le développeur amont. Il n'y a pas de standard ici, donc le numéro de version peut avoir différents formats comme « 19990513 » ou « 1.3.8pre1 ».
Le composant RRR est le numéro de révision Debian et il est choisi par le développeur Debian (ou un utilisateur s'il choisit de construire lui-même son paquet). Ce numéro correspond au niveau de révision du paquet Debian, ainsi, une nouvelle révision signifie généralement des modifications du Makefile Debian (debian/rules), du fichier de contrôle Debian debian/control), des scripts d'installation ou de désinstallation (debian/p*) ou des fichiers de configuration utilisés avec le paquet.
The AAA component identifies the processor for which the package
was built. This is commonly amd64, which refers to AMD64, Intel
64 or VIA Nano chips. For other possibilities review Debian's FTP directory
structure at Quels sont tous ces
répertoires dans les archives FTP de Debian ?, Section 6.7. For
details, see the description of "Debian architecture" in the manual
page dpkg-architecture(1)
.
Des détails concernant le contenu du fichier control Debian sont fournis dans la charte Debian, au chapitre cinq, voir Quelles autres documentations existent sur le système Debian ?, Section 12.1.
Brièvement, un fichier control est montré ci-dessous pour le paquet Debian hello :
Package: hello Version: 2.9-2+deb8u1 Architecture: amd64 Maintainer: Santiago Vila <sanvila@debian.org> Installed-Size: 145 Depends: libc6 (>= 2.14) Conflicts: hello-traditional Breaks: hello-debhelper (<< 2.9) Replaces: hello-debhelper (<< 2.9), hello-traditional Section: devel Priority: optional Homepage: http://www.gnu.org/software/hello/ Description: example package based on GNU hello The GNU hello program produces a familiar, friendly greeting. It allows non-programmers to use a classic computer science tool which would otherwise be unavailable to them. . Seriously, though: this is an example of how to do a Debian package. It is the Debian version of the GNU Project's `hello world' program (which is itself an example for the GNU Project).
Le champ « Package » contient le nom du paquet. C'est le nom par lequel les outils de gestion de paquets peuvent le manipuler. Il est habituellement similaire mais pas nécessairement le même que la première chaîne composant le nom de l'archive Debian.
Le champ de « Version » donne le numéro de version du développeur amont et (dans le dernier composant) le niveau de révision du paquet de Debian de ce programme comme expliqué dans Pourquoi les noms des paquets Debian sont-ils si longs ?, Section 7.3.
Le champ « Architecture » indique pour quel processeur ce binaire particulier a été compilé.
Le champ « Depends » donne une liste des paquets qui doivent être installés afin d'installer ce paquet avec succès.
Le champ « Installed-Size » indique l'espace disque utilisé par le paquet une fois installé. Ceci est prévu pour être employé par les programmes d'installation pour vérifier s'il y a suffisamment d'espace disque disponible pour installer le programme.
La ligne « Section » indique la section où le paquet Debian est conservé sur les sites FTP de Debian.
The Priority indicates how important is this package for installation, so that semi-intelligent software like apt or aptitude can sort the package into a category of e.g. packages optionally installed. See Qu'est ce qu'un paquet Essential, Required, Important, Standard, Optional ou Extra ?, Section 7.7.
Le champ « Maintainer » contient l'adresse électronique de la personne actuellement responsable de la maintenance du paquet.
Le champ « Description » fournit un bref résumé des fonctionnalités du paquet.
Pour plus d'informations sur les champs disponibles dans un paquet, reportez-vous au chapitre 5 de la charte Debian, « Fichiers control et leurs champs », consultez Quelles autres documentations existent sur le système Debian ?, Section 12.1.
Conffiles est une liste de fichiers de configuration (habituellement placés dans /etc) que le système de gestion de paquets n'écrasera pas lors de la mise à jour du paquet. Ceci s'assure que les valeurs locales pour ces fichiers seront préservées et c'est un dispositif critique permettant la mise à niveau des paquets sur un système en fonctionnement.
Pour déterminer exactement quels fichiers sont préservés pendant la mise à jour, lancez :
dpkg --status package
et regardez la section « Conffiles: ».
These files are executable scripts which are automatically run before or after a package is installed or removed. Along with a file named control, all of these files are part of the "control" section of a Debian archive file.
Les fichiers individuels sont :
This script is executed before the package it belongs to is unpacked from its Debian archive (".deb") file. Many 'preinst' scripts stop services for packages which are being upgraded until their installation or upgrade is completed (following the successful execution of the 'postinst' script).
This script typically completes any required configuration of the package foo once foo has been unpacked from its Debian archive (".deb") file. Often, 'postinst' scripts ask users for input, and/or warn them that if they accept default values, they should remember to go back and re-configure that package as needed. Many 'postinst' scripts then execute any commands necessary to start or restart a service once a new package has been installed or upgraded.
Ce script arrête généralement tous les démons qui sont associés au paquet. Il est exécuté avant la suppression des fichiers associés au paquet.
Ce script modifie généralement les liens ou les autres fichiers associés à foo et/ou supprime les fichiers créés par le paquet (Voir aussi Qu'est-ce qu'un paquet virtuel ?, Section 7.8.)
Currently all of the control files can be found in the directory /var/lib/dpkg/info. The files relevant to package foo begin with the name "foo" and have file extensions of "preinst", "postinst", etc., as appropriate. The file foo.list in that directory lists all of the files that were installed with the package foo. (Note that the location of these files is a dpkg internal; you should not rely on it.)
À chaque paquet Debian est assignée une priorité par les développeurs de la distribution, c'est une aide pour le système de gestion de paquets. Les priorités sont :
Nécessaire (Required) : paquets nécessaires pour le fonctionnement correct du système.
Ceci inclut tous les outils nécessaires pour la réparation d'un système défectueux. Vous ne devez pas supprimer ces paquets ou votre système risque de devenir complètement instable et vous ne pourrez probablement pas utiliser dpkg pour corriger cela. Avec seulement les paquets nécessaires, le système sera probablement inutilisable mais il aura suffisamment de fonctionnalités pour permettre de démarrer et d'installer plus de logiciels.
Important : paquets devant être présents sur tous systèmes de type Unix
Other packages which the system will not run well or be usable without will be here. This does NOT include Emacs or X or TeX or any other large application. These packages only constitute the bare infrastructure.
Standard packages are standard on any Linux system, including a reasonably small but not too limited character-mode system. Tools are included to be able to send e-mail (with mutt) and download files from FTP servers.
This is what will be installed by default if users do not select anything else. It does not include many large applications, but it does include the Python interpreter and some server software like OpenSSH (for remote administration) and Exim (for mail delivery, although it can be configured for local delivery only). It also includes some common generic documentation that most users will find helpful.
Optional packages include all those that you might reasonably want to install if you do not know what they are, or that do not have specialized requirements.
Ceci inclut X, une distribution TeX complète et beaucoup d'applications.
Extra : paquets qui entrent en conflit avec d'autres ayant des priorités plus élevées ou ayant des conditions particulières qui les rendent peu convenables pour être optionnels. Ils sont utiles seulement si vous savez déjà ce qu'ils font.
Si vous faites une installation Debian par défaut, tous les paquets ayant une priorité standard ou supérieure seront installés sur votre système. Si vous choisissez des tâches prédéfinies, vous obtiendrez aussi les paquets de priorité plus faible.
De plus, certains paquets sont marqués comme essentiels (Essential) puisqu'ils sont absolument nécessaires pour un fonctionnement correct du système. Les outils de gestion de paquets refuseront de les supprimer.
A virtual package is a generic name that applies to any one of a group of packages, all of which provide similar basic functionality. For example, both the konqueror and firefox-esr programs are web browsers, and should therefore satisfy any dependency of a program that requires a web browser on a system, in order to work or to be useful. They are therefore both said to provide the "virtual package" called www-browser.
Similarly, exim4 and sendmail both provide the functionality of a mail transport agent. They are therefore said to provide the virtual package "mail-transport-agent". If either one is installed, then any program depending on the installation of a mail-transport-agent will be satisfied by the presence of this virtual package.
Debian fournit un mécanisme qui fait que, si plus d'un paquet fournissant le même paquet virtuel est installé sur le système, alors, les administrateurs peuvent choisir leur paquet préféré. La commande appropriée est update-alternatives ; elle est décrite plus loin dans Certains utilisateurs apprécient mawk, d'autres gawk ; certains utilisent vim, d'autres elvis ; certains préfèrent trn, d'autres tin ; comment Debian gère-t-elle la diversité ?, Section 11.10.
Le système de paquet Debian a une gamme de « dépendances » sur les paquets qui permet d'indiquer (avec un simple drapeau) à quel niveau un programme A peut fonctionner indépendamment de l'existence du programme B sur un système donné :
Le paquet A dépend du paquet B si B doit absolument être installé pour pouvoir exécuter A. Dans certains cas, A dépend non seulement de B mais d'une version de B. Dans ce cas, la dépendance de version est une limite basse, dans le sens que A dépend de toutes versions plus récentes que celle spécifiée.
Le paquet A recommande le paquet B si le responsable du paquet pense que la plupart des utilisateurs ne voudraient pas A sans avoir également la fonctionnalité fournie par B.
Le paquet A suggère le paquet B si B contient des fichiers qui sont liés aux (et augmentent habituellement) fonctionnalités de A.
Le paquet A est en conflit avec le paquet B quand A ne peut pas fonctionner si B est installé sur le système. Le plus souvent les conflits sont des cas où A contient des fichiers qui sont une amélioration de ceux de B. Le conflit est souvent combiné avec le remplacement.
Le paquet A remplace le paquet B quand les fichiers installés par B sont supprimés et (dans certains cas) écrasés par les fichiers de A.
Le paquet A casse le paquet B quand les deux paquets ne peuvent pas être simultanément configurés. Le système de gestion des paquets refusera d'installer l'un des paquets si l'autre est déjà installé et configuré dans le système.
Le paquet A fournit le paquet B quand tous les fichiers et toutes les fonctionnalités de B sont incorporés dans A. Ce mécanisme fournit aux utilisateurs ayant une contrainte d'espace disque un moyen d'obtenir seulement la partie du paquet dont ils ont vraiment besoin.
More detailed information on the use of each of these terms can be found in the Debian Policy manual, section 7.2, "Binary Dependencies", see Quelles autres documentations existent sur le système Debian ?, Section 12.1.
"Pre-Depends" is a special dependency. In the case of most packages, dpkg will unpack the archive file of a package (i.e., its .deb file) independently of whether or not the files on which it depends exist on the system. Simplistically, unpacking means that dpkg will extract the files from the archive file that were meant to be installed on your file system, and put them in place. If those packages depend on the existence of some other packages on your system, dpkg will refuse to complete the installation (by executing its "configure" action) until the other packages are installed.
Cependant, pour certains paquets, dpkg refusera de les désarchiver jusqu'à ce que certaines dépendances soient résolues. De tels paquets sont dits « Pré-dépendants » de la présence de quelques autres paquets. Le projet Debian fournissait ce mécanisme pour gérer la mise à jour de systèmes utilisant le format a.out vers le format ELF, où l'ordre de désarchivage était critique. Il y a d'autres situations de mise à jour où cette méthode est utile, par exemple pour les paquets ayant une priorité « required » et des dépendances sur la libc.
Comme ci-dessus, une information plus détaillée sur l'utilisation de ce terme peut être trouvée dans la charte Debian.
These "want" flags tell what the user wanted to do with a package (as indicated by the user's direct invocations of dpkg/apt/ aptitude).
Leurs significations sont :
unknown - the user has never indicated whether the package is wanted.
install - L'utilisateur souhaite installer ou mettre à jour le paquet.
remove - the user wants the package removed, but does not want to remove any existing configuration file.
purge - L'utilisateur souhaite supprimer le paquet complètement, incluant ses fichiers de configuration.
hold - the user wants this package not to be processed, i.e. wants to keep the current version with the current status whatever that is.
There are three ways of holding back packages, with dpkg, apt or aptitude.
Avec dpkg, vous devez exporter la liste de sélection des paquets, avec la commande :
dpkg --get-selections \* > selections.txt
puis éditer le fichier selections.txt
, changer la ligne contenant
le paquet que vous souhaitez conserver, par exemple pour libc6
, de
ceci :
libc6 install
à ceci :
libc6 hold
sauvegarder le fichier et le recharger dans la base de données de dpkg avec :
dpkg --set-selections < selections.txt
With apt, you can set a package to hold using
apt-mark hold package_name
et enlever le drapeau « hold » avec
apt-mark unhold package_name
Avec aptitude, vous pouvez conserver un paquet en faisant
aptitude hold package_name
et enlever le drapeau « hold » avec
aptitude unhold package_name
Les paquets sources Debian ne peuvent pas être véritablement installés, ils sont seulement dépaquetés dans n'importe quel répertoire où vous voulez en construire les paquets binaires.
Source packages are distributed on most of the same mirrors where you can
obtain the binary packages. If you set up your APT's
sources.list(5)
to include the appropriate "deb-src"
lines, you'll be able to easily download any source package by running
apt-get source foo
To help you in actually building the source package, Debian source packages provide the so-called build-dependencies mechanism. This means that the source package maintainer keeps a list of other packages that are required to build their package. To see how this is useful, run
apt-get build-dep foo
avant de construire les sources.
La méthode recommandée est d'utiliser les différents outils de haut-niveau (« wrappers »). Voici comment faire en utilisant les outils devscripts. Installez le paquet si cela n'est pas déjà fait.
Maintenant, commencez par récupérer le paquet source :
apt-get source foo
puis entrez dans l'arborescence source :
cd foo-*
Puis installez les dépendances de construction nécessaires (s'il y en a) :
sudo apt-get build-dep foo
Puis créez une version particulière de votre propre construction (afin de ne pas les confondre plus tard lorsque Debian publiera sa propre nouvelle version) :
dch -l local 'Blah blah blah'
Et enfin construisez votre paquet :
debuild -us -uc
Si tout a correctement fonctionné, vous devriez pouvoir installer votre paquet avec la commande :
sudo dpkg -i ../*.deb
Si vous préférez effectuer les opérations vous-même et ne voulez pas utiliser devscripts, suivez cette procédure :
Vous aurez besoin de tous les fichiers foo_*.dsc, foo_*.tar.gz et foo_*.diff.gz pour compiler les sources (remarquez que pour certains paquets il n'y a pas de fichier .diff.gz, ce sont les paquets natifs à Debian).
Once you have them (Comment est-ce que j'installe un
paquet source ?, Section 7.13) and if you have the
dpkg-dev
package installed, the following command:
dpkg-source -x foo_version-revision.dsc
désarchivera le paquet dans un répertoire nommé foo-version.
If you just want to compile the package, you may cd into the foo-version directory and issue the command
dpkg-buildpackage -rfakeroot -b
pour construire le paquet (notez que le paquet fakeroot
est aussi
nécessaire) et faites
dpkg -i ../foo_version-revision_arch.deb
pour installer le nouveau paquet.
For a more detailed description on this, read the New Maintainers' Guide,
available in the maint-guide
package or at http://www.debian.org/doc/devel-manuals#maint-guide
,
or the Guide for Debian Maintainers, available in the debmake-doc
package or at https://www.debian.org/doc/devel-manuals#debmake-doc
.
[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ suivant ]
La FAQ Debian GNU/Linux
version 8.1, 28 August 2016