Comprendre la gestion des paquets sous Linux
Plongez au cœur du système de gestion des paquets sur Debian et les distributions Linux basées sur Debian. Comprenez ce que sont réellement les paquets et comment ils sont organisés et distribués via les référentiels de paquets. Comprenez l'écosystème Apt et effectuez les tâches essentielles de gestion des paquets.
Présentation du système de gestion des paquets
Forfaits
Les logiciels sur les distributions Linux Debian et basées sur Debian sont distribués via des packages au format binaire . Deb format. Pour comprendre ce format, regardons le contenu de la tcpdump les services publics . Deb emballage:
$ apt download tcpdump
Get:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 tcpdump amd64 4.9.3-4ubuntu0.2 [369 kB]
Fetched 369 kB in 1s (484 kB/s)
$ ls
tcpdump_4.9.3-4ubuntu0.2_amd64.deb
$ ar x tcpdump_4.9.3-4ubuntu0.2_amd64.deb
$ rm tcpdump_4.9.3-4ubuntu0.2_amd64.deb
$ ls
control.tar.xz data.tar.xz debian-binary
Les paquets Debian contiennent 3 fichiers principaux :
- debian-binaire: un fichier texte contenant la version du format du paquet Debian
- contrôle.tar.xz: un compressé contrôle.tar fichier contenant informations sur les métadonnées à propos du paquet (
controlfichier), sommes de hachage des fichiers de données du package, facultatif scripts de maintenance (postinst,preinst,postrmetprermfichiers), une liste des bibliothèques partagées fournies par le package et leurs dépendances (shlibsfichier), une liste des fichiers de configuration du package (conffilesfichier) qui doivent être gérés automatiquement pardpkgde la manière décrite ici. Voici une explication détaillée de l'objectif de chaque fichier contenu dans l'archive de contrôle à partir du manuel de politique Debian : fichiers d'informations de contrôle des paquets. - data.tar.xz: un compressé données.tar fichier contenant les données du package (fichiers de configuration, binaires, fichiers de pages de manuel...) dans des dossiers relatifs à la racine du système cible (
/) répertoire.
Jetons un oeil au contenu de la contrôle.tar.xz et data.tar.xz fichiers pour le tcpdump emballage:
$ tar xfvJ control.tar.xz
./
./conffiles
./control
./md5sums
./postinst
./postrm
$ tar xfvJ data.tar.xz
./
./etc/
./etc/apparmor.d/
./etc/apparmor.d/usr.sbin.tcpdump
./usr/
./usr/sbin/
./usr/sbin/tcpdump
./usr/share/
./usr/share/doc/
./usr/share/doc/tcpdump/
./usr/share/doc/tcpdump/NEWS.Debian.gz
./usr/share/doc/tcpdump/README.Debian
./usr/share/doc/tcpdump/README.md.gz
./usr/share/doc/tcpdump/changelog.Debian.gz
./usr/share/doc/tcpdump/copyright
./usr/share/doc/tcpdump/examples/
./usr/share/doc/tcpdump/examples/atime.awk
./usr/share/doc/tcpdump/examples/packetdat.awk
./usr/share/doc/tcpdump/examples/send-ack.awk
./usr/share/doc/tcpdump/examples/stime.awk
./usr/share/man/
./usr/share/man/man8/
./usr/share/man/man8/tcpdump.8.gz
Voyons maintenant le contenu de certains des contrôle.tar.xz :
$ cat conffiles
/etc/apparmor.d/usr.sbin.tcpdump
$ cat control
Package: tcpdump
Version: 4.9.3-4ubuntu0.2
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Installed-Size: 1088
Depends: libc6 (>= 2.14), libpcap0.8 (>= 1.5.1), libssl1.1 (>= 1.1.0), adduser
Suggests: apparmor (>= 2.3)
Breaks: apparmor-profiles-extra (<< 1.12~)
Replaces: apparmor-profiles-extra (<< 1.12~)
Section: net
Priority: optional
Multi-Arch: foreign
Homepage: https://www.tcpdump.org/
Description: command-line network traffic analyzer
This program allows you to dump the traffic on a network. tcpdump
is able to examine IPv4, ICMPv4, IPv6, ICMPv6, UDP, TCP, SNMP, AFS
BGP, RIP, PIM, DVMRP, IGMP, SMB, OSPF, NFS and many other packet
types.
.
It can be used to print out the headers of packets on a network
interface, filter packets that match a certain expression. You can
use this tool to track down network problems, to detect attacks
or to monitor network activities.
Original-Maintainer: Romain Francoise <rfrancoise@debian.org>
$ cat md5sums
f9f65bc725c89ea8ce57048342682cd1 usr/sbin/tcpdump
a061c78c03a68d8a54ef1dc7da2f9449 usr/share/doc/tcpdump/NEWS.Debian.gz
4cb3482753693a38d84271dcf8b74a25 usr/share/doc/tcpdump/README.Debian
7ccad1c5dd054c2f7ea93f6a7e1fab44 usr/share/doc/tcpdump/README.md.gz
86f3e3085841d8335d433614c1395b91 usr/share/doc/tcpdump/changelog.Debian.gz
0baa30c7e8a9d00c3102ddceb3643554 usr/share/doc/tcpdump/copyright
f62c99424d4bde287c842a1dc9d33cec usr/share/doc/tcpdump/examples/atime.awk
2d2f4c9ef37a9ff6addd6f0b55acf1d2 usr/share/doc/tcpdump/examples/packetdat.awk
04eb6463bab3266110142040ae9fa63c usr/share/doc/tcpdump/examples/send-ack.awk
a7753832551077724d0c8386ce106993 usr/share/doc/tcpdump/examples/stime.awk
2c7ff605f00017e7cd9e331ea42a3398 usr/share/man/man8/tcpdump.8.gz
$ cat postinst
#!/bin/sh -e
if ! getent group tcpdump >/dev/null 2>&1; then
addgroup --system --quiet tcpdump
fi
if ! getent passwd tcpdump >/dev/null 2>&1; then
adduser --system --quiet --ingroup tcpdump \
--no-create-home --home /nonexistent \
tcpdump
fi
# Automatically added by dh_apparmor/2.13.3-7ubuntu5.2
if [ "$1" = "configure" ]; then
APP_PROFILE="/etc/apparmor.d/usr.sbin.tcpdump"
if [ -f "$APP_PROFILE" ]; then
# Add the local/ include
LOCAL_APP_PROFILE="/etc/apparmor.d/local/usr.sbin.tcpdump"
test -e "$LOCAL_APP_PROFILE" || {
mkdir -p `dirname "$LOCAL_APP_PROFILE"`
install --mode 644 /dev/null "$LOCAL_APP_PROFILE"
}
# Reload the profile, including any abstraction updates
if aa-enabled --quiet 2>/dev/null; then
apparmor_parser -r -T -W "$APP_PROFILE" || true
fi
fi
fi
# End automatically added section
$ cat postrm
#!/bin/sh -e
case "$1" in
purge)
userdel tcpdump >/dev/null 2>&1 || true
groupdel tcpdump >/dev/null 2>&1 || true
;;
esac
# Automatically added by dh_apparmor/2.13.3-7ubuntu5.2
if [ "$1" = "purge" ] && ! [ -e "/etc/apparmor.d/usr.sbin.tcpdump" ] ; then
rm -f "/etc/apparmor.d/disable/usr.sbin.tcpdump" || true
rm -f "/etc/apparmor.d/force-complain/usr.sbin.tcpdump" || true
rm -f "/etc/apparmor.d/local/usr.sbin.tcpdump" || true
rm -f /var/cache/apparmor/*/"usr.sbin.tcpdump" || true
rmdir /etc/apparmor.d/disable 2>/dev/null || true
rmdir /etc/apparmor.d/local 2>/dev/null || true
rmdir /etc/apparmor.d 2>/dev/null || true
fi
# End automatically added section
Maintenant que nous savons de quels fichiers et de quel type de fichiers un paquet Debian est composé, voyons comment nous pouvons créer un . Deb paquet. Pour cela, nous devons organiser nos fichiers de paquet comme suit :
packagename_version_arch
├── DEBIAN
├── etc
├── usr
└── ...
À l'intérieur de l' DEBIAN répertoire, nous mettons tous les fichiers d'informations de contrôle des paquets.
Ensuite, au même niveau que le DEBIAN Dans le répertoire, nous créons les fichiers de données du package. Les fichiers de données doivent être organisés comme un système de fichiers miniature par rapport à la racine du système cible (/) et disposent des droits de propriété et des autorisations qu'ils devraient avoir sur les systèmes où ils sont installés. Cela signifie que les mêmes uid/username et gid/groupname doivent être présents sur le système construit et sur le système cible. Jetez un œil au manuel de politique Debian section de création de package pour plus d'informations.
Une fois que l'arborescence du répertoire du package est prête, nous utilisons le dpkg --build <packagedir> pour créer le . Deb paquet.
Voici un exemple avec le fichier précédemment extrait tcpdump fichiers de package. Nous voulons recréer le tcpdump_4.9.3-4ubuntu0.2_amd64.deb paquet de leur part. Pour cela, nous créons un tcpdump_4.9.3-4ubuntu0.2_amd64 dossier, avec l'arborescence de répertoires suivante :
$ tree tcpdump_4.9.3-4ubuntu0.2_amd64
tcpdump_4.9.3-4ubuntu0.2_amd64
├── DEBIAN
│ ├── conffiles
│ ├── control
│ ├── md5sums
│ ├── postinst
│ └── postrm
├── etc
│ └── apparmor.d
│ └── usr.sbin.tcpdump
└── usr
├── sbin
│ └── tcpdump
└── share
├── doc
│ └── tcpdump
│ ├── NEWS.Debian.gz
│ ├── README.Debian
│ ├── README.md.gz
│ ├── changelog.Debian.gz
│ ├── copyright
│ └── examples
│ ├── atime.awk
│ ├── packetdat.awk
│ ├── send-ack.awk
│ └── stime.awk
└── man
└── man8
└── tcpdump.8.gz
Ensuite, nous utilisons dpkg pour créer le package comme suit :
$ dpkg --build tcpdump_4.9.3-4ubuntu0.2_amd64
dpkg-deb: building package 'tcpdump' in 'tcpdump_4.9.3-4ubuntu0.2_amd64.deb'.
$ file tcpdump_4.9.3-4ubuntu0.2_amd64.deb
tcpdump_4.9.3-4ubuntu0.2_amd64.deb: Debian binary package (format 2.0), with control.tar.xz, data compression xz
Dépôts de paquets
Les dépôts de paquets Linux sont simplement des endroits où les fichiers de paquets sont servis. Ces endroits peuvent être par exemple des systèmes de fichiers locaux, http/https ou des services ftp. Voici une arborescence de répertoires courante que nous avons trouvée dans les dépôts publics de Debian et des distributions Linux basées sur Debian.
debrepo/
├── dists
│ └── suite
│ ├── Contents-arch.gz
│ ├── InRelease
│ ├── Release
│ ├── Release.gpg
│ └── component
│ ├── binary-arch
│ │ ├── Packages.gz
│ │ ├── Packages.xz
│ │ └── Release
│ ├── i18n
│ │ ├── Index
│ │ ├── Translation-lang
│ │ ├── Translation-lang.gz
│ │ └── Translation-lang.xz
│ └── source
│ ├── Release -> ../binary-arch/Release
│ ├── Sources.gz
│ └── Sources.xz
└── pool
└── component
└── m
└── mypackage
├── mypackage_1.0.debian.tar.xz
├── mypackage_1.0.dsc
├── mypackage_1.0.orig.tar.xz
└── mypackage_1.0_arch.deb
Au niveau supérieur du référentiel de paquets, nous avons trouvé le dist et pool répertoires.
La routine shell dist répertoire contient Traduction fichiers pour les descriptions de paquets, les Table des matières fichiers (une correspondance entre les packages et les fichiers qu'ils possèdent) et le Libération, Forfaits et Références des dossiers).
La routine shell pool le répertoire contient des packages binaires (. Deb) et les fichiers sources des packages (compressés .orig.tar), fichiers de différences de sources et de correctifs (compressés .debian.tar), les paquets fichier de contrôle des sources (.dsc) et potentiellement d’autres types de fichiers qui ne nous intéressent pas nécessairement.
Suite, nom de code, composant et section
Les fichiers à l'intérieur du dist et pool les répertoires font respectivement partie de la suite et . sous-répertoires.
La routine shell suite correspond la plupart du temps à la distribution Linux nom de code plus un suffixe facultatif. Dans notre exemple ci-dessus, le suite le répertoire pourrait être focal, mises à jour focales, etc. Jetez un oeil à contenu des distributions du référentiel Ubuntu pour plus d'exemples.
La routine shell . les noms correspondent aux zones de paquets telles que définies par les distributions Linux. Par exemple, dans Debian, il existe 3 zones de paquets (main, contrib, non-free). Jetez un œil à Composants du dépôt de paquets Debian pour plus d'informations sur le but de chaque zone de packages.
Dans Ubuntu, il y a 4 composants électriques ou des zones de packages (principale, univers, restreinte, multivers). Jetez un œil à Composants du référentiel de paquets Ubuntu (résumé) or Composants du référentiel de paquets Ubuntu (détaillés) pour plus d'informations sur le but de chaque zone de packages.
Les packages sont ensuite regroupés en les sections à l'intérieur de chaque zone pour simplifier leur manipulation. correspond à la catégorie du package. La liste des différentes sections des packages est disponible à l'adresse Sections de l'archive Debian.
Contenu des fichiers
Contenu* Les fichiers à l'intérieur des dépôts de paquets contiennent une correspondance entre les paquets et les fichiers qu'ils possèdent. Voici un extrait du dépôt de paquets Ubuntu :
bin/afio multiverse/utils/afio
bin/archdetect utils/archdetect-deb
bin/ash universe/shells/ash
bin/autopartition admin/ubiquity
bin/autopartition-crypto admin/ubiquity
bin/autopartition-loop admin/ubiquity
bin/autopartition-lvm admin/ubiquity
bin/bash shells/bash
(...)
boot/vmlinuz-4.15.0-20-generic kernel/linux-image-4.15.0-20-generic,kernel/linux-image-unsigned-4.15.0-20-generic
boot/vmlinuz-4.15.0-20-lowlatency kernel/linux-image-4.15.0-20-lowlatency,kernel/linux-image-unsigned-4.15.0-20-lowlatency
boot/xen-4.9-amd64.efi universe/kernel/xen-hypervisor-4.9-amd64
boot/xen-4.9-amd64.gz universe/kernel/xen-hypervisor-4.9-amd64
etc/3270/ibm_hosts universe/net/3270-common
etc/Aria universe/libs/libaria2
etc/Crack/dictgrps.conf universe/admin/crack-common
etc/Crack/dictrun.conf universe/admin/crack-common
(...)
À gauche, nous avons la racine (/) chemin relatif vers les fichiers du package une fois qu'il est installé sur un système. À droite, le(s) nom(s) du(des) package(s) propriétaire(s) du fichier sous la forme composant/section/nom_du_paquet pour les colis en dehors de la principal composant ou section/nom_du_paquet pour les colis à l'intérieur du principal composant.
Fichiers de paquets
Voici un extrait de Forfaits* contenu des fichiers provenant d'un référentiel de distribution Linux basé sur Debian :
Package: bash
Version: 4.3-11+deb8u1
Essential: yes
Installed-Size: 5010
Maintainer: Matthias Klose <doko@debian.org>
Architecture: amd64
Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
Pre-Depends: dash (>= 0.5.5.1-2.2), libc6 (>= 2.15), libncurses5 (>= 5.5-5~), libtinfo5
Recommends: bash-completion (>= 20060301-0)
Suggests: bash-doc
Conflicts: bash-completion (<< 20060301-0)
Description: GNU Bourne Again SHell
Multi-Arch: foreign
Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html
Description-md5: 3522aa7b4374048d6450e348a5bb45d9
Tag: implemented-in::c, interface::shell, role::program, scope::utility,
suite::gnu, uitoolkit::ncurses
Section: shells
Priority: required
Filename: pool/main/b/bash/bash_4.3-11+deb8u1_amd64.deb
Size: 1171862
MD5sum: d45364ae9573bf742625fe504f764ac4
SHA1: a61d501276ecc394f7d5ccabd649b905f3d5b551
SHA256: fbba12207fd2469478b95913b1e59d8b9952cc77685693133b13f06f14292590
La routine shell Forfaits* les fichiers contiennent des informations sur chaque package présent dans la zone de package correspondante (. dossier) pour l'architecture binaire du package correspondant (arc-binaire dossier). Il contient plusieurs blocs de texte comme celui montré ci-dessus séparés par des lignes vides. Section des fichiers de contrôle des paquets binaires de la politique Debian donne des informations utiles sur les différents champs à l'intérieur de ce fichier (à quoi servent-ils, sont-ils obligatoires, etc.).
Fichiers de traduction
La routine shell Traduction* fichiers à l'intérieur du i18n Le dossier contient les traductions des descriptions de paquets. Voici un extrait du fichier de traduction dans fr_CA langue pour le bash emballage:
Package: bash
Description-md5: 3522aa7b4374048d6450e348a5bb45d9
Description-en_CA: GNU Bourne Again SHell
Bash is an sh-compatible command language interpreter that executes
commands read from the standard input or from a file. Bash also
incorporates useful features from the Korn and C shells (ksh and csh).
.
Bash is ultimately intended to be a conformant implementation of the IEEE
POSIX Shell and Tools specification (IEEE Working Group 1003.2).
.
The Programmable Completion Code, by Ian Macdonald, is now found in the
bash-completion package.
Pour un package donné, le Description-md5 Le champ a la même valeur à l'intérieur des fichiers de traduction et de package. C'est ainsi que s'effectue le lien entre le package et ses traductions de description.
Fichiers sources
Voici un extrait de Sources* contenu des fichiers provenant d'un référentiel de distribution Linux basé sur Debian :
Package: mysql-connector-python
Binary: python-mysql.connector, python3-mysql.connector
Version: 1.2.3-2
Maintainer: Sandro Tosi <morph@debian.org>
Uploaders: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>, Brian May <bam@debian.org>
Build-Depends: debhelper (>= 7.0.50~), python-all, dh-python, python3-all, mysql-server
Architecture: all
Standards-Version: 3.9.5
Format: 3.0 (quilt)
Files:
1f6375f58609695534749a32aa3dd6af 1633 mysql-connector-python_1.2.3-2.dsc
63dc50988498fbc520f69a7278b46a2d 285849 mysql-connector-python_1.2.3.orig.tar.gz
09acacbbddf3d838ce1e6c99b7c705fe 4028 mysql-connector-python_1.2.3-2.debian.tar.xz
Vcs-Browser: http://anonscm.debian.org/viewvc/python-modules/packages/mysql-connector-python/trunk/
Vcs-Svn: svn://anonscm.debian.org/python-modules/packages/mysql-connector-python/trunk/
Checksums-Sha1:
b8766d1115f6a24614a798b44e61fc65910cd369 1633 mysql-connector-python_1.2.3-2.dsc
51ffded1503a1c97aeb6b739beb6551e452a2b05 285849 mysql-connector-python_1.2.3.orig.tar.gz
c3cf780ac99bfcba0e31dfe29e28a62f6c54597d 4028 mysql-connector-python_1.2.3-2.debian.tar.xz
Checksums-Sha256:
a66976704d095ce24fa9758113f9114559290da9c284de8f644567c2930f63f9 1633 mysql-connector-python_1.2.3-2.dsc
03b4ba1c2d4ede2817137b487b3d2e1e38e6ed9423fe91bf13db2fe739a33350 285849 mysql-connector-python_1.2.3.orig.tar.gz
ce5f8140d5dc3530e00c918b3aa34f5128d6f39358ead3e7931fbd30981d40c4 4028 mysql-connector-python_1.2.3-2.debian.tar.xz
Homepage: http://dev.mysql.com/doc/connector-python/en/index.html
Package-List:
python-mysql.connector deb python optional arch=all
python3-mysql.connector deb python optional arch=all
Directory: pool/main/m/mysql-connector-python
Priority: source
Section: python
La routine shell Sources* les fichiers contiennent des informations sur chaque source de package présente dans la zone de package correspondante (. dossier). Il contient plusieurs blocs de texte comme celui montré ci-dessus séparés par des lignes vides. Section des fichiers de contrôle des sources de la politique Debian donne des informations utiles sur les différents champs à l'intérieur de ce fichier (à quoi servent-ils, sont-ils obligatoires, etc.).
Fichiers Release et InRelease
Libération fichiers dans les répertoires suivants :
<distribution_name>/dists/<distribution_suite>/<distribution_component>/binary-<arch><distribution_name>/dists/<distribution_suite>/<distribution_component>/source
sont des fichiers hérités que les clients des référentiels ne doivent plus utiliser.
La routine shell Libération or En version les fichiers à l'intérieur du répertoire suivant sont le point d'entrée pour vérifier l'intégrité des fichiers et des packages du référentiel :
<distribution_name>/dists/<distribution_suite>- Exemple :
ubuntu/dists/focal-updates
- Exemple :
Ils contiennent des sommes de contrôle pour chaque fichier à l'intérieur du référentiel et sont eux-mêmes signés numériquement avec GPG clés privées. Le En version le fichier inclut la signature GPG tandis que le Libération le fichier contient une signature détachée contenue à l'intérieur du Version.gpg .
Clés publiques requises pour vérifier la signature du Libération or En version le fichier est préinstallé dans la distribution Linux pour Apte, afin de s'assurer que les paquets des dépôts de distribution officiels peuvent être vérifiés avant l'installation. Les clés sont fournies par ubuntu-keyring et debian-archive-keyring paquets respectivement sur Ubuntu et Debian.
Voici quelques extraits de la En version et Libération :
- En version fichier:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Origin: Ubuntu
Label: Ubuntu
Suite: focal-updates
Version: 20.04
Codename: focal
Date: Sun, 26 Nov 2023 17:11:33 UTC
Architectures: amd64 arm64 armhf i386 ppc64el riscv64 s390x
Components: main restricted universe multiverse
Description: Ubuntu Focal Updates
MD5Sum:
14e7942e7e0deec60e086808aab9c30b 4206401750 Contents-amd64
62b3586069399b1af97cfe0494a1f1d5 231951436 Contents-amd64.gz
(...)
644a10229e397ef605b1fe159258db18 16502614 main/binary-amd64/Packages
226f94e8d8f625fbb7c4eb92ab0d3ac7 3712253 main/binary-amd64/Packages.gz
693c877779a4d65ed62c2369366a8396 2981456 main/binary-amd64/Packages.xz
10aef129feae6b2d9c46070bc0bd64c5 103 main/binary-amd64/Release
(...)
SHA256:
ecf6e10975baef4271edac72231e34b46cd9348b0eb55083c962077dd5fbfafc 3768066 main/debian-installer/binary-amd64/Packages
a1757525d4c2db2b932f931d6a87aba7e5f0bd822d39a1e0240a3b845d5b1ad2 925595 main/debian-installer/binary-amd64/Packages.gz
(...)
6dc5a7b389c7f9fa14179db8160ed3f9e1eb237d358736794ee11f5597b1bf7b 109 multiverse/binary-armhf/Release
582d06aca9ae24da46df709b11382f5b0c99da79756f8589a4bd73baabb2970d 36645 multiverse/binary-i386/Packages
eae8e954a0b0d7e0ec30fba4606eea8e16f03d5973a1aa85c97cb3aa0905575c 9586 multiverse/binary-i386/Packages.gz
7cb62bd5f13aa1f6bbce339e23c17ddd62ec41b9fc4816cef153e63b675e8517 8440 multiverse/binary-i386/Packages.xz
345f45aeef51f20cce08f7791374e0c42c9018f6e6417a3dd1203d871bd6ac7c 108 multiverse/binary-i386/Release
eb79da10c5730ec16e5ee638898c3bccf2a6cbe9362722064e1beaddb367da1b 2304515 universe/i18n/Translation-en
bb8a01c5e9b8ad79cf0f90278e242f38688475f1f73bec35ad9dc58825579f04 376317 universe/i18n/Translation-en.gz
9e916c7a23e3cd2f0f6cf708b3aabc029c4c8a07368d72feaf0122192bae446e 270496 universe/i18n/Translation-en.xz
c1f8f711c2c8f1de06358bbf89960229b723886d8d8c876897c55c68b1921a97 108 universe/source/Release
a5664889a9c9fd6f190ca3ae214587f28342c2290ee43d83e1d8991bc0d285c7 1607958 universe/source/Sources
f8efdbea8bf4b609af4131660e49a6ddadaa2e1c4a35aede6f1deee46d900316 441034 universe/source/Sources.gz
b29f3085fd8815bf5ab7843ca88d2f19a3e4a897c8504a87ed6e4eb0633e071d 353376 universe/source/Sources.xz
Acquire-By-Hash: yes
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEeQvHJ3dnIZxCyG+TO0/mrMCyHzIFAmVjfL8ACgkQO0/mrMCy
HzKVXhAAslKUxHJeT6XUbdOEQCYBod66qVoAcO2n+bin0EEmc9lRG0JNHapPa9BN
(...)
DUDYRnTb1voA73iPB+2Q/vQp1pn4uE5DfwiZeb9I0PPdfrYWBiRHK/M9RRSaAeRs
IsQt9aYDGwKoL6iuQ2VgmdDTuXCmWc9LXIC/hsjW35tvpi2yQodoDI7ItY7iPtce
SALVNtRoyAD9nhi8+XJ6IDTBwus9DQoiUnm+Ug==
=qAc6
-----END PGP SIGNATURE-----
- Libération .
Origin: Ubuntu
Label: Ubuntu
Suite: focal-updates
Version: 20.04
Codename: focal
Date: Sun, 26 Nov 2023 17:11:33 UTC
Architectures: amd64 arm64 armhf i386 ppc64el riscv64 s390x
Components: main restricted universe multiverse
Description: Ubuntu Focal Updates
MD5Sum:
14e7942e7e0deec60e086808aab9c30b 4206401750 Contents-amd64
62b3586069399b1af97cfe0494a1f1d5 231951436 Contents-amd64.gz
(...)
644a10229e397ef605b1fe159258db18 16502614 main/binary-amd64/Packages
226f94e8d8f625fbb7c4eb92ab0d3ac7 3712253 main/binary-amd64/Packages.gz
693c877779a4d65ed62c2369366a8396 2981456 main/binary-amd64/Packages.xz
10aef129feae6b2d9c46070bc0bd64c5 103 main/binary-amd64/Release
(...)
SHA256:
ecf6e10975baef4271edac72231e34b46cd9348b0eb55083c962077dd5fbfafc 3768066 main/debian-installer/binary-amd64/Packages
a1757525d4c2db2b932f931d6a87aba7e5f0bd822d39a1e0240a3b845d5b1ad2 925595 main/debian-installer/binary-amd64/Packages.gz
(...)
6dc5a7b389c7f9fa14179db8160ed3f9e1eb237d358736794ee11f5597b1bf7b 109 multiverse/binary-armhf/Release
582d06aca9ae24da46df709b11382f5b0c99da79756f8589a4bd73baabb2970d 36645 multiverse/binary-i386/Packages
eae8e954a0b0d7e0ec30fba4606eea8e16f03d5973a1aa85c97cb3aa0905575c 9586 multiverse/binary-i386/Packages.gz
7cb62bd5f13aa1f6bbce339e23c17ddd62ec41b9fc4816cef153e63b675e8517 8440 multiverse/binary-i386/Packages.xz
345f45aeef51f20cce08f7791374e0c42c9018f6e6417a3dd1203d871bd6ac7c 108 multiverse/binary-i386/Release
eb79da10c5730ec16e5ee638898c3bccf2a6cbe9362722064e1beaddb367da1b 2304515 universe/i18n/Translation-en
bb8a01c5e9b8ad79cf0f90278e242f38688475f1f73bec35ad9dc58825579f04 376317 universe/i18n/Translation-en.gz
9e916c7a23e3cd2f0f6cf708b3aabc029c4c8a07368d72feaf0122192bae446e 270496 universe/i18n/Translation-en.xz
c1f8f711c2c8f1de06358bbf89960229b723886d8d8c876897c55c68b1921a97 108 universe/source/Release
a5664889a9c9fd6f190ca3ae214587f28342c2290ee43d83e1d8991bc0d285c7 1607958 universe/source/Sources
f8efdbea8bf4b609af4131660e49a6ddadaa2e1c4a35aede6f1deee46d900316 441034 universe/source/Sources.gz
b29f3085fd8815bf5ab7843ca88d2f19a3e4a897c8504a87ed6e4eb0633e071d 353376 universe/source/Sources.xz
Acquire-By-Hash: yes
La routine shell Acquire-By-Hash: yes la ligne indique que les fichiers indexés (Forfaits*, Contenu*, Traduction*, sources*...) peuvent être acquis via un URI construit à partir de leurs sommes de hachage au lieu d'utiliser le nom de fichier stable bien connu.
- Par exemple, pour obtenir :
http://repo/ubuntu/dists/focal-updates/multiverse/binary-i386/Packages.gz
- nous pourrions utiliser :
http://repo/ubuntu/dists/focal-updates/multiverse/binary-i386/by-hash/SHA256/7cb62bd5f13aa1f6bbce339e23c17ddd62ec41b9fc4816cef153e63b675e8517
Cette façon de télécharger les fichiers d'index peut être utilisée pour éviter les incohérences de somme de hachage. Jetez un œil à By-Hash à l'intérieur homme 5 sources.liste pour Apte .
Que se passe-t-il lorsque Apt récupère des packages à partir de référentiels ?
Afin de télécharger et d'installer des packages, voici un aperçu simple de la procédure à suivre Apte procédera:
- Téléchargez le Libération or En version fichier du référentiel de packages et vérifier la signature
- Télécharger le compressé Forfaits fichier d'index
- Vérifier l'intégrité de Forfaits fichier d'index en utilisant la somme de hachage fournie à l'intérieur du Libération or En version .
- Rechercher le paquet à l'intérieur Forfaits fichier d'index et obtenir l'une de ses sommes de hachage calculées (md5, sha256...)
- Télécharger le package (. Deb fichier)
- Vérifiez l'intégrité du package à l'aide de sa somme de hachage précédemment récupérée
- Installez le paquet en utilisant Dpkg si le contrôle d'intégrité réussit
Outils de gestion des packages
Apte qui veut dire Outil d'emballage avancé. Il s'agit d'une suite d'interfaces de ligne de commande utilisées pour la gestion des paquets sur Debian et les distributions Linux basées sur Debian. En fait, dans les coulisses, Apte fait usage d' Dpkg (le gestionnaire de paquets Debian) pour l'installation, la configuration et la suppression de paquets.
En plus de fournir des interfaces conviviales pour Dpkg, Apte est livré avec de nombreuses autres fonctionnalités. En voici quelques-unes répertoriées ci-dessous :
- rechercher, télécharger, installer des packages à partir de référentiels distants
- résolution et installation automatisées des dépendances des packages
- mise à niveau des packages
- (...)
Voici une liste de certains des outils à l'intérieur du Apte suite d'outils :
aptapt-getapt-cacheapt-keyapt-config- (...)
Fichiers de configuration et priorités d'Apt
Tous les outils à l'intérieur du Apte suite d'outils lisant les éléments de configuration à partir des emplacements suivants :
/etc/apt/apt.conf: le fichier de configuration principal./etc/apt/apt.conf.d/*: les fichiers de configuration intégrés. Ce sont des fichiers nommés alphanumériquement avec soit aucun, soit le .conf extension. Les noms de fichiers peuvent également contenir un trait d'union (-), souligner (_) et la période (.). Les fichiers ici sont lus par ordre alphanumérique croissant (10periodiclire avant20auto-upgrades) et les éléments contenus dans les fichiers récemment lus ont priorité sur ceux contenus dans les fichiers principalement lus. Les fichiers se terminant par.disabled,~,.bakor.dpkg-[a-z]+sont ignorés.
Les éléments de configuration à l'intérieur du fichier de configuration principal ont priorité sur ceux à l'intérieur des fichiers de configuration intégrés.
Les éléments de configuration peuvent également être spécifiés directement sur la ligne de commande à l'aide de la commande -o drapeau. Ceci a priorité sur les éléments spécifiés dans les fichiers de configuration principaux et intégrés.
Syntaxe de configuration d'Apt
Voici la syntaxe à utiliser à l'intérieur Apte fichiers de configuration :
Première forme : une ligne
# First form
GROUP::SUBGROUP::Option-name "value";
# or this for configuration items without subgroup
GROUP::Option-name "value";
Deuxième forme : accolades
// Second form
GROUP {
SUBGROUP {
Option-name-1 "Option-value-1";
Option-name-2 "Option-value-2";
(...)
};
};
# or
GROUP::SUBGROUP {
Option-name-1 "Option-value-1";
Option-name-2 "Option-value-2";
(...)
};
};
/*
for configuration items
without subgroup
*/
GROUP {
Option-name-1 "Option-value-1";
Option-name-2 "Option-value-2";
(...)
};
};
//et#sont utilisés pour les commentaires sur une seule ligne/**/est utilisé pour les commentaires multilignes- guillemets (
"") et un point-virgule final (;) sont requis - les éléments de configuration ne sont pas sensibles à la casse
Comme vu précédemment, Apte les éléments de configuration sont constitués d'un GROUPE, parfois un SOUS-GROUPE (pas pour tous les éléments de configuration), un nom de l'option et enfin un valeur d'option.
Les éléments de configuration sont spécifiés à l'aide de l' une ligne forme avec double côlon notation (::) ou la à accolades bouclées forme avec des accolades ({}) uniquement ou un mélange d'accolades ({}) et deux points (::).
Lors de la configuration des éléments utilisant le une ligne le formulaire ne peut pas être multiligne, ceux déclarés avec le à accolades bouclées le formulaire peut être soit à une seule ligne, soit à plusieurs lignes.
Éléments de configuration avec liste de valeurs
Une partie de la Apte les éléments de configuration nécessitent une liste de valeurs. C'est le cas par exemple pour le Acquire::CompressionTypes::Order élément de configuration, qui définit l'ordre dans lequel Apte essaiera de télécharger des packages en fonction de leurs types de compression.
Lors de la mise à jour d'un élément de configuration de liste, les valeurs spécifiées ne remplaceront pas la liste existante, mais seront ajoutées au début de la liste. Voici un exemple :
/*
One line form
Only work with a list of one item
Used to append the item to the begining
of the existing list. Done with the
double colon (::) at the end of the
configuration item
*/
Acquire::CompressionTypes::Order:: "gz";
/*
Curly braced form
This will make xz and gz the preferred
compression types over the others...
The other compression types are implicitely
added to the list
*/
Acquire::CompressionTypes::Order { "xz"; "gz"; };
Exemples de configuration d'Apt
Voici quelques exemples d’éléments de configuration.
Syntaxe sur une ligne
# GROUP=APT ; SUBGROUP=Get
APT::Get::Assume-Yes "true";
APT::Get::Fix-Broken "true";
# Configuration item without subgroup
# GROUP=Acquire ; no SUBGROUP
Acquire::AllowInsecureRepositories "0";
Acquire::AllowWeakRepositories "0";
Syntaxe des accolades bouclées
# GROUP=APT ; SUBGROUP=Get
APT {
Get {
Assume-Yes "true";
Fix-Broken "true";
};
};
# or
APT::Get {
Assume-Yes "true";
Fix-Broken "true";
}
# Configuration items without subgroup
# GROUP=Acquire ; no SUBGROUP
Acquire {
AllowInsecureRepositories "0";
Acquire::AllowWeakRepositories "0";
}
Syntaxe de la ligne de commande
$ any_apt_cli_tool \
-o APT::Get::Assume-Yes=true \
-o APT::Get::Fix-Broken=true \
-o AllowInsecureRepositories=false \
-o Acquire::AllowWeakRepositories=false
Groupes de configuration Apt
Apte Les éléments de configuration sont organisés en groupes fonctionnels. Par exemple, dans cet élément de configuration :
APT::Get::Assume-Yes "true";
APT est le groupe fonctionnel. A l'intérieur du groupe fonctionnel, nous allons soit :
- définir des options à l'intérieur d'un sous-groupe (ou d'une sous-section). C'est le cas dans l'élément de configuration précédent, où
Getest le sous-groupe (ou sous-section) etAssume-Yesl'option. - définir les options directement dans le groupe.
APT::Architecture "amd64";par exemple, oùAPTest le groupe etArchitecturel'option.
Un bon point de départ pour trouver Apte les groupes de configuration, à quoi servent-ils et les options qu'ils fournissent sont les Apte manuel de configuration. Pour accéder au manuel localement sur n'importe quelle distribution Linux basée sur Debian, utilisez le man 5 apt.conf commande. Pour accéder au manuel en ligne, suivez ce lien : apt.conf.5.html.
Le groupe APT
La routine shell Groupe APT contrôle le comportement général d'APT et conserve les options de tous les outils à l'intérieur du Apte suite d'outils.
La routine shell Obtenez et Cache les sous-groupes d'options contrôlent respectivement la apt-get et apt-cache outils. Les options disponibles pour ces sous-groupes peuvent être trouvées directement dans les pages du manuel des outils, dans la section options. Voici la options pour apt-get et la options pour apt-cache. À la fin de chaque description d'option, le Apte L'élément de configuration à utiliser est affiché.
La routine shell Périodique et Archives des sous-groupes d'options contrôlent le comportement de Apte mises à jour périodiques. Elles peuvent être utilisées pour configurer des mises à niveau automatiques des packages sur le système. Les options disponibles pour ces sous-groupes sont décrites en haut de la page. /usr/lib/apt/apt.systemd.daily scripts.
Mises à niveau automatisées de la sécurité des packages
La routine shell APT::Periodic::Unattended-Upgrade L'élément de configuration peut être utilisé pour activer/désactiver les mises à niveau automatisées de sécurité des packages via le mises à niveau sans assistance script. Dans de nombreuses versions d'Ubuntu, la mise à niveau semble être activée par défaut via le /etc/apt/apt.conf.d/20auto-upgrades fichier de configuration.
La routine shell mises à niveau sans assistance le comportement du script peut être configuré via le /etc/apt/apt.conf.d/50unattended-upgrades fichier de configuration. Options de configuration pour le mises à niveau sans assistance les scripts sont placés à l'intérieur du Mise à niveau sans surveillance groupe. Voici quelques exemples d'éléments de configuration pour régler le mises à niveau sans assistance comportement du script :
Unattended-Upgrade::Allowed-Origins: une liste qui définit le référentiel composants électriques à partir duquel les nouveaux packages disponibles seront automatiquement installés. Configuré par défaut pour n'inclure que les correctifs de sécurité.Unattended-Upgrade::Automatic-Reboot: météo pour activer le redémarrage automatique pour les mises à niveau qui le nécessitentUnattended-Upgrade::Automatic-Reboot-Time: heure à laquelle le redémarrage automatique sera effectué si nécessaire- (...) pour la liste de tous les éléments de configuration disponibles et ce qu'ils font, jetez un œil à la
/etc/apt/apt.conf.d/50unattended-upgradesfichier de configuration
Dans les versions récentes d'Ubuntu, le mises à niveau non-attentives L'exécution périodique du script est contrôlée par 2 services systemd et leurs temporisateurs systemd associés :
apt-daily.service: télécharger les informations sur les packages à partir de toutes les sources configurées. Utile pour obtenir les dernières informations sur les packages avant d'effectuer les mises à niveauapt-daily.timer: minuteur systemd qui planifie l'exécution duapt-daily.serviceapt-daily-upgrade.service: effectue des mises à niveau de paquets à l'aide de mises à niveau sans assistance scénarioapt-daily-upgrade.timer: minuteur systemd qui planifie l'exécution duapt-daily-upgrade.service
Pour voir à l'avance ce que le mises à niveau sans assistance le script fera lors de la prochaine exécution sans réellement effectuer de mises à niveau, nous pouvons l'appeler avec le --dry-run drapeau comme suit :
$ unattended-upgrades --dry-run
Le groupe ACQUIRE
La routine shell ACQUÉRIR le groupe contrôle le comportement de Apte lors du téléchargement de paquets. Voici une liste de choses que nous pouvons configurer via ce groupe :
- Protocoles IP : ipv4, ipv6 ...
- Procurations: http, https et ftp
- Sécurité des packages et des référentiels :
- activer/désactiver les contrôles liés au temps sur les packages Libération .
- autoriser/interdire les opérations à partir de référentiels considérés comme faibles ou non sécurisés
- Optimisation et gestion des pannes :
- types de compression préférés
- modes de parallélisation des connexions sortantes
- nombre de tentatives après échec
- modes de téléchargement des index des packages
- (...)
Exemple : configuration d'un proxy http
Acquire::http {
// Use this proxy when acquiring packages using http
// Here is the format for proxy value :
// scheme://[[user][:pass]@]host[:port]
Proxy "http://my.proxy:3128";
// Do not use proxy for package.repo.local host/domain name
Proxy::package.repo.local "DIRECT";
// Auto detect proxy settings using a script.
// The script should return the proxy settings in the
// scheme://[[user][:pass]@]host[:port] format
Proxy-Auto-Detect "/usr/local/bin/apt-http-proxy-auto-detect";
// Tell the proxy to not use its cached
// response under any circumstances
No-Cache "true";
// Maximum allowed age in seconds of an
// index file in the cache of the proxy
Max-Age "3600";
// Tell the proxy to not store requested
// archive files in its cache. This prevents
// polluting the cache with .deb files
No-Store "true";
// Connection and data timeout
Timeout "10";
// Bandwith limit in kilobytes per second.
// Default to 0 = unlimited
Dl-Limit "42";
//
AllowRedirect "false";
// User agent for the http download method
// (before reaching the proxy)
User-Agent "My APT-HTTP"
}
Le groupe DIR
La routine shell DID le groupe peut être utilisé pour configurer les éléments suivants :
- emplacement des binaires utilisés par Apte. Nous utilisons
Dir::Binpour cela :Dir::Bin::Methods: chemin vers le répertoire contenant les binaires du gestionnaire pour les différents Apte méthodes (http, https, ftp, ssh, cdrom, fichier, copie...)Dir::Bin::<binary_name>: d'autres chemins spécifiques aux binaires. Par exempleDir::Bin::dpkgpour configurer le chemin d'accès audpkgbinaire qui sera utilisé par Apte
- le répertoire racine auquel tous les autres chemins configurés (binaires, informations locales et d'état, répertoires de configuration...) sont relatifs.
Dir::RootDirpeut être utilisé pour le définir. Par défaut/. - répertoires contenant le cache local et les informations d'état :
Dir::State: chemin par défaut vers le répertoire contenant les informations d'état local. Ce chemin est relatif àDir::RootDir. Par défaut àvar/lib/aptDir:State::lists: chemin vers le répertoire contenant les fichiers téléchargés à partir des sources/dépôts de packages configurés, après avoir exécuté leapt[-get] updatecommande. Les fichiers téléchargés incluent : Libération or En version fichiers, le Table des matières fichiers, le Traductions et Forfaits fichiers. Le chemin est relatif àDir::Stateà moins de commencer par/or./. Par défaut àlists/La sectionapt-cache show <package-name>la commande peut être utilisée pour obtenir des informations sur un package à partir des fichiers de listes de packages téléchargés présents dans ce répertoire.Dir::State::status: chemin vers le fichier d'état Dpkg contenant des informations sur les paquets installés. Ce chemin est relatif àDir::Stateà moins de commencer par/or./. Par défaut à/var/lib/dpkg/status.
- emplacement de Apte fichiers et répertoires de configuration :
Dir::Etc:Dir::RootDirchemin relatif vers le répertoire contenant Apte fichiers de configuration. Apte les outils liront Apte paramètres de configuration à partir des fichiers contenus dans ce répertoire. Par défautetc/aptDir::Etc::main: la valeur par défaut Apte fichier de configuration à l'intérieurDir::Etc. Par défaut àapt.conf. Changer cela n'aura aucun effet. La seule façon de changer le chemin par défaut Apte le fichier de configuration consiste à le définir via leAPT_CONFIGvariable d'environnement.Dir::Parts: répertoire contenant le fragment Apte fichiers de configuration à l'intérieurDir::Etc. Par défaut àapt.conf.d.Dir::Etc::sourcelist: package source fichier de configuration à l'intérieurDir::Etc. Par défaut àsources.listDir::Etc::sourceparts: répertoire contenant les fichiers de configuration des fragments de sources de packages à l'intérieurDir::Etc. Par défaut àsources.list.d- La routine shell
Dir::Etcpeut également être utilisé pour définir les configurations par défaut et fragmentées du fichier et du répertoire pour les éléments suivants :netrcetnetrcparts: configurez respectivement les chemins d'accès au fichier de configuration par défaut de connexion et au répertoire de configurations de fragment pour les sources APT et les proxys à l'intérieurDir::Etc. Respectivement par défautauth.confetauth.conf.d. Voir apt_auth.conf savoir comment utiliser Apte fichiers de configuration d'authentification.preferencesetpreferencesparts: configurer respectivement les chemins d'accès au fichier de contrôle des préférences pour APT à l'intérieurDir::Etc. Respectivement par défautpreferencesetpreferences.d. Voir apt_preferences pour contrôler quelles versions de paquets seront sélectionnées pour l'installation par Apte.
- une liste de modèles pour les fichiers de configuration à l'intérieur du Apte répertoire de configurations de fragments (
/etc/apt/apt.conf.d) qui devrait être ignoré.Dir::Ignore-Files-Silentlypeut être utilisé pour le définir. Utilisezapt-config dump | grep -i Ignore-Files-Silentlypour obtenir la valeur actuelle de cette liste.
Configuration binaire spécifique
Il est possible de définir des configurations uniquement pour des Apte binaires en préfixant les éléments de configuration avec binary::<binary_name>::.
Par exemple, si nous voulons définir le APT::Get::Assume-Yes: "true"; seulement pour la apt binaire que nous pouvons utiliser binary::apt::APT::Get::Assume-Yes: "true"; à l'intérieur Apte fichiers de configuration. Le apt-get et les autres outils ne seront pas affectés par cela.
Lecture des paramètres de configuration Apt actifs
Paramètres de configuration qui seront pris en compte par tous les outils à l'intérieur du Apte suite d'outils peut être lue à l'aide de la apt-config utilitaire comme suit:
# List all active configuration settings
$ apt-config dump
# Only show active configuration settings
# related to the Dir group
apt-config dump | grep -i dir::
Configurer les sources des packages
Les sources des packages sont utilisées pour indiquer Apte où obtenir les paquets. Les sources des paquets peuvent être configurées à l'aide des fichiers suivants :
/etc/apt/sources.list: le fichier de configuration principal. Par défaut, il contient la déclaration des dépôts de paquets officiels des distributions Linux/etc/apt/sources.list.d/*: les fichiers de configuration des sources des packages drop-in. Ces fichiers peuvent être utilisés pour ajouter dessources.listentrées et devraient avoir .liste or .sources extensions en fonction du format de configuration utilisé (.liste pour style à une ligne format et .sources pour style deb822 format. Les noms de fichiers ne peuvent contenir que des caractères alphanumériques, des traits de soulignement (_), trait d'union (-) et la période (.).
Les sources préférées doivent être répertoriées en premier au cas où une seule version serait disponible à partir de plusieurs sources.
Syntaxe de configuration des sources des packages
- Une liste de toutes les options disponibles qui peuvent être utilisées dans les fichiers de configuration des sources des packages peut être trouvée ici : options de configuration des sources
- Une liste de tous les types de sources de paquets reconnus (http, https, ftp, fichier...) peut être trouvée ici : types de référentiels de sources
Style à une ligne
deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]
deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]
- Le format traditionnel soutenu par tous Apte versions. Utilisé dans les fichiers de configuration avec .liste l'extension de
- Les valeurs des options à valeurs multiples sont séparées par une virgule (
,) +=et-=peuvent être utilisés comme séparateurs pour les options à valeurs multiples pour modifier la valeur par défaut (au lieu de la remplacer) en ajoutant ou en supprimant respectivement les valeurs données#le caractère peut être utilisé pour les commentaires
Style Deb822
Types: deb or deb-src (or both)
URIs: uri
Suites: suite
Components: [component1] [component2] [...]
option1: value1
option2: value2
- Le nouveau format pris en charge par Apte depuis la version 1.1. Utilisé dans les fichiers de configuration avec .sources extension.
- La routine shell Apte l'équipe a l'intention de faire progressivement style deb822 le format par défaut car il est plus facile à utiliser pour les humains et les machines
- Les valeurs des champs à valeurs multiples sont séparées par des espaces (espaces, tabulations, sauts de ligne). Les champs d'options à valeurs multiples ont également
<fieldname>-Addet<fieldname>-Removechamps qui peuvent être utilisés pour modifier la valeur par défaut (au lieu de la remplacer) en ajoutant ou en supprimant respectivement des valeurs données - Plusieurs entrées comme celle illustrée ci-dessus sont séparées par une ligne vide.
Enabledle champ de n'importe quelle entrée peut être utilisé pour activer ou désactiver cette entrée #le caractère peut être utilisé pour les commentaires
Exemples de configuration des sources de paquets
# One-line-style
$ cat /etc/apt/sources.list.d/docker.list
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu focal stable
# Deb822-style
$ cat /etc/apt/sources.list.d/docker.sources
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: focal
Components: stable
arch: amd64
signed-by: /etc/apt/keyrings/docker.gpg
Pour plus d'exemples, jetez un œil à sources.liste.5.exemples
Debconf
Debconf est un système/protocole qui peut être utilisé par les responsables de paquets Debian pour faciliter la configuration de leurs paquets. Il fournit aux utilisateurs un moyen de configurer les paquets avant (préconfiguration), pendant ou après l'installation (reconfiguration) en répondant à des questions (provenant de modèles : /var/cache/debconf/templates.dat) sur les paramètres de configuration via différents interfaces frontales (boîte de dialogue, éditeur de texte...). Une fois fournis, les paramètres de configuration sont stockés à l'intérieur base de données de configuration debconf (défaut : /var/cache/debconf/config.dat) à utiliser lors des étapes de configuration du paquet. Pour en savoir plus sur les fichiers de configuration debconf, consultez debconf.conf.5.html
Les paquets utilisant debconf incluent, en plus des paquets traditionnels scripts de maintenance (postinst, preinst, postrm et prerm fichiers), un script de configuration et fichier de modèles à l'intérieur de leur contrôle.tar.xz archiver. Les config Le script sera exécuté pour obtenir les paramètres de configuration directement à partir de la base de données debconf s'ils sont déjà définis ou à partir des utilisateurs, puis les stocker dans la base de données de configuration debconf. modèles Le fichier contient la liste des questions de configuration qui peuvent être posées aux utilisateurs, ainsi que leurs descriptions. Les questions ont priorités (faible, moyen, élevé ou critique) et les utilisateurs peuvent décider, lors de la configuration des paquets via debconf, de répondre uniquement aux questions ayant au moins une priorité spécifique. Pour en savoir plus sur ce qui est requis pour que les paquets utilisent debconf et sur le protocole debconf lui-même, consultez debconf-devel.7.html
La routine shell dpkg-préconfigurer et dpkg-reconfigurer Les utilitaires de ligne de commande peuvent être utilisés pour configurer respectivement les paquets à l'aide de debconf avant et après l'installation. Lors de l'installation de paquets à l'aide de Apte utilitaires (apt, apt-get...), ceux qui utilisent debconf sont automatiquement préconfigurés via dpkg-preconfigure grace au plugin Apte paramètres de configuration présents à l'intérieur du /etc/apt/apt.conf.d/70debconf fichier. Cette préconfiguration, lorsqu'elle est exécutée pour la première fois sur un paquet, affichera parfois aux utilisateurs une boîte de dialogue (interface debconf par défaut) leur demandant de répondre à certaines questions de configuration ou n'affichera rien parce que le paquet n'utilise pas debconf ou parce qu'il n'y a aucune question à poser.
Tâches essentielles de gestion des packages
Rechercher des packages
$ apt search <package_name_or_regex>
# Example:
$ apt search ^bash
Obtenez des informations sur les packages
- Lister tous les packages
$ apt list
- Lister les paquets installés
$ apt list --installed
- Liste des packages pouvant être mis à niveau
$ apt list --upgradable
- Pour obtenir des informations sur un package spécifique à partir du fichier d'index des packages (
/var/lib/apt/lists/*_Packages), utiliser:
$ apt show <package_name_or_regex>
# Example:
$ apt show bash
Package: bash
Version: 5.0-6ubuntu1.2
Priority: required
Essential: yes
Section: shells
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1700 kB
Pre-Depends: libc6 (>= 2.15), libtinfo6 (>= 6)
Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
Recommends: bash-completion (>= 20060301-0)
Suggests: bash-doc
Conflicts: bash-completion (<< 20060301-0)
Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html
Task: minimal
Download-Size: 639 kB
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
Description: GNU Bourne Again SHell
Bash is an sh-compatible command language interpreter that executes
commands read from the standard input or from a file. Bash also
incorporates useful features from the Korn and C shells (ksh and csh).
.
Bash is ultimately intended to be a conformant implementation of the
IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
.
The Programmable Completion Code, by Ian Macdonald, is now found in
the bash-completion package.
Indexe les fichiers présents à l'intérieur du /var/lib/apt/lists (Forfaits, Table des matières, Traduction, sources...) les répertoires sont téléchargés/mis à jour lorsque le apt update la commande est exécutée.
- Pour obtenir des informations sur les versions installées ou disponibles pour des packages spécifiques, ainsi que le référentiel source d'où ils proviennent, utilisez :
$ apt policy <package_name_or_regex>
# Example:
$ apt policy bash
bash:
Installed: 5.0-6ubuntu1.2
Candidate: 5.0-6ubuntu1.2
Version table:
*** 5.0-6ubuntu1.2 500
500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
100 /var/lib/dpkg/status
5.0-6ubuntu1 500
500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
Les informations affichées ici sont également récupérées à partir des fichiers d'index présents à l'intérieur du /var/lib/apt/lists répertoire. Ces fichiers d'index sont téléchargés/mis à jour à l'aide de apt update .
Installer, mettre à niveau et supprimer des packages
Avant d'installer les packages, la commande suivante doit être utilisée pour télécharger les fichiers d'index des packages (Forfaits, Table des matières, Traduction, sources... fichiers) à partir des sources configurées. Ces fichiers d'index contiennent des informations essentielles sur les paquets. Pour télécharger/mettre à jour les fichiers d'index, la commande suivante peut être utilisée :
$ apt update
Ensuite, installez les packages :
# Latest available versions
$ apt install <package_name_or_regex_or_glob>
# Specific version
$ apt install <package_name>=<package_version>
# Examples
$ apt install nginx
$ apt install tree=1.8.0-1
Pour mettre à niveau tous les packages vers les dernières versions disponibles à partir des sources de packages configurées, utilisez :
$ apt upgrade
De nouveaux packages seront installés si nécessaire pour satisfaire les dépendances, mais les packages existants ne seront jamais supprimés.
Pour supprimer des packages, sans supprimer tous les fichiers de configuration, utilisez :
$ apt remove <package_name_or_regex_or_glob>
# Example
$ apt remove nginx
Pour supprimer toutes les données des packages, y compris les fichiers de configuration, utilisez :
$ apt purge <package_name_or_regex_or_glob>
# Example:
$ apt purge tree
Purger les paramètres debconf
Une fois qu'un paquet utilisant debconf est préconfiguré, les paramètres sont stockés dans la base de données debconf et ne sont plus demandés lorsqu'une autre préconfiguration est exécutée. Si le paquet a été installé, nous pouvons simplement effectuer une reconfiguration afin de répondre à nouveau aux questions. Mais s'il n'est pas installé, la seule façon de faire en sorte que debconf pose à nouveau les questions de configuration est de supprimer les paramètres de sa base de données. La commande suivante peut être utilisée pour cela :
echo PURGE | debconf-communicate <package_name>
Dans la commande précédente, PURGE est une commande debconf. Voici une liste de commandes debconf et leurs explications.
debconf-communicate est un utilitaire de ligne de commande qui peut être utilisé pour communiquer avec debconf. Jetez un œil à debconf-communiquer pour plus d'informations.
Télécharger les packages binaires et les sources
- Télécharger les packages binaires (. Deb)
$ apt download <package_name_or_regex>
# Example:
$ apt download tree
Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 tree amd64 1.8.0-1 [43.0 kB]
Fetched 43.0 kB in 1s (84.9 kB/s)
$ ll *.deb
-rw-r--r-- 1 ubuntu ubuntu 43044 Dec 11 2018 tree_1.8.0-1_amd64.deb
- Télécharger les archives des sources des packages, décompresser et appliquer les correctifs
$ apt source <package_name_or_regex>
# Example:
$ apt source tree
Reading package lists... Done
NOTICE: 'tree' packaging is maintained in the 'Git' version control system at:
https://salsa.debian.org/debian/tree-packaging.git
Please use:
git clone https://salsa.debian.org/debian/tree-packaging.git
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 58.6 kB of source archives.
Get:1 http://archive.ubuntu.com/ubuntu focal/universe tree 1.8.0-1 (dsc) [1818 B]
Get:2 http://archive.ubuntu.com/ubuntu focal/universe tree 1.8.0-1 (tar) [50.3 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal/universe tree 1.8.0-1 (diff) [6504 B]
Fetched 58.6 kB in 1s (99.7 kB/s)
dpkg-source: info: extracting tree in tree-1.8.0
dpkg-source: info: unpacking tree_1.8.0.orig.tar.gz
dpkg-source: info: unpacking tree_1.8.0-1.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying PATH_MAX
dpkg-source: info: applying manpage
$ ll tree*
drwxrwxr-x 5 ubuntu ubuntu 4096 Nov 13 02:08 ./
drwxrwxrwt 14 root root 4096 Nov 13 02:10 ../
drwxrwxr-x 4 ubuntu ubuntu 4096 Nov 13 02:08 .pc/
-rw-r--r-- 1 ubuntu ubuntu 12024 Nov 16 2018 CHANGES
-rw-r--r-- 1 ubuntu ubuntu 597 Jan 4 2018 INSTALL
-rw-r--r-- 1 ubuntu ubuntu 18009 Aug 12 2004 LICENSE
-rw-r--r-- 1 ubuntu ubuntu 2973 Jan 18 2018 Makefile
-rw-r--r-- 1 ubuntu ubuntu 5740 Jun 22 2015 README
-rw-r--r-- 1 ubuntu ubuntu 2403 Feb 11 2015 TODO
-rw-r--r-- 1 ubuntu ubuntu 16408 Nov 16 2018 color.c
drwxrwxr-x 4 ubuntu ubuntu 4096 Dec 11 2018 debian/
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 13 02:08 doc/
-rw-r--r-- 1 ubuntu ubuntu 7497 Jan 9 2018 file.c
-rw-r--r-- 1 ubuntu ubuntu 3151 Jan 10 2018 hash.c
-rw-r--r-- 1 ubuntu ubuntu 14404 Jan 10 2018 html.c
-rw-r--r-- 1 ubuntu ubuntu 9813 Jan 10 2018 json.c
-rw-r--r-- 1 ubuntu ubuntu 5322 Aug 27 2008 strverscmp.c
-rw-r--r-- 1 ubuntu ubuntu 36885 Nov 13 02:08 tree.c
-rw-r--r-- 1 ubuntu ubuntu 5593 Jan 10 2018 tree.h
-rw-r--r-- 1 ubuntu ubuntu 7651 Jan 10 2018 unix.c
-rw-r--r-- 1 ubuntu ubuntu 9029 Nov 16 2018 xml.c
- Télécharger les archives des sources des packages sans les décompresser
$ apt source --download-only <package_name_or_regex>
# Example:
$ apt source --download-only tree
Reading package lists... Done
NOTICE: 'tree' packaging is maintained in the 'Git' version control system at:
https://salsa.debian.org/debian/tree-packaging.git
Please use:
git clone https://salsa.debian.org/debian/tree-packaging.git
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 58.6 kB of source archives.
Get:1 http://archive.ubuntu.com/ubuntu focal/universe tree 1.8.0-1 (dsc) [1818 B]
Get:2 http://archive.ubuntu.com/ubuntu focal/universe tree 1.8.0-1 (tar) [50.3 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal/universe tree 1.8.0-1 (diff) [6504 B]
Fetched 58.6 kB in 1s (74.4 kB/s)
Download complete and in download only mode
$ ll tree*
-rw-r--r-- 1 ubuntu ubuntu 6504 Dec 11 2018 tree_1.8.0-1.debian.tar.xz
-rw-r--r-- 1 ubuntu ubuntu 1818 Dec 11 2018 tree_1.8.0-1.dsc
-rw-r--r-- 1 ubuntu ubuntu 50286 Dec 11 2018 tree_1.8.0.orig.tar.gz
Paquets de nettoyage et cache de paquets
- Supprimer les fichiers de packages téléchargés stockés dans
/var/cache/apt/archives/:
$ apt clean
- Supprimer les fichiers de packages téléchargés stockés dans
/var/cache/apt/archives/qui ne peuvent plus être téléchargés ou sont devenus inutiles. Une bonne commande pour maintenir les caches sur une longue période tout en évitant qu'ils ne deviennent incontrôlables :
$ apt autoclean
- Supprimez/désinstallez les packages qui ont été automatiquement installés pour satisfaire les dépendances d'autres packages et qui ne sont plus nécessaires :
$ apt autoremove
Afficher le contenu des paquets binaires (.deb)
- Afficher l'arborescence du contenu sans extraction
$ dpkg -c <.deb_file>
# Example:
$ dpkg -c tree_1.8.0-1_amd64.deb
drwxr-xr-x root/root 0 2018-12-11 11:19 ./
drwxr-xr-x root/root 0 2018-12-11 11:19 ./usr/
drwxr-xr-x root/root 0 2018-12-11 11:19 ./usr/bin/
-rwxr-xr-x root/root 85608 2018-12-11 11:19 ./usr/bin/tree
drwxr-xr-x root/root 0 2018-12-11 11:19 ./usr/share/
drwxr-xr-x root/root 0 2018-12-11 11:19 ./usr/share/doc/
drwxr-xr-x root/root 0 2018-12-11 11:19 ./usr/share/doc/tree/
-rw-r--r-- root/root 2723 2015-06-22 22:17 ./usr/share/doc/tree/README.gz
-rw-r--r-- root/root 2403 2015-02-11 21:57 ./usr/share/doc/tree/TODO
-rw-r--r-- root/root 2045 2018-12-11 11:19 ./usr/share/doc/tree/changelog.Debian.gz
-rw-r--r-- root/root 2441 2018-12-11 11:19 ./usr/share/doc/tree/copyright
drwxr-xr-x root/root 0 2018-12-11 11:19 ./usr/share/man/
drwxr-xr-x root/root 0 2018-12-11 11:19 ./usr/share/man/man1/
-rw-r--r-- root/root 4627 2018-12-11 11:19 ./usr/share/man/man1/tree.1.gz
- Extraire les fichiers .deb
$ ar x <.deb_file>
# Example:
$ ar x tree_1.8.0-1_amd64.deb
$ ll
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 13 11:31 ./
drwxr-xr-x 5 ubuntu ubuntu 4096 Nov 13 11:31 ../
-rw-r--r-- 1 ubuntu ubuntu 836 Nov 13 11:31 control.tar.xz
-rw-r--r-- 1 ubuntu ubuntu 42016 Nov 13 11:31 data.tar.xz
-rw-r--r-- 1 ubuntu ubuntu 4 Nov 13 11:31 debian-binary
$ tar xfvJ data.tar.xz
./
./usr/
./usr/bin/
./usr/bin/tree
./usr/share/
./usr/share/doc/
./usr/share/doc/tree/
./usr/share/doc/tree/README.gz
./usr/share/doc/tree/TODO
./usr/share/doc/tree/changelog.Debian.gz
./usr/share/doc/tree/copyright
./usr/share/man/
./usr/share/man/man1/
./usr/share/man/man1/tree.1.gz
$ tar xfvJ control.tar.xz
./
./control
./md5sums
$ cat control
Package: tree
Version: 1.8.0-1
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Florian Ernst <florian@debian.org>
Installed-Size: 112
Depends: libc6 (>= 2.4)
Section: utils
Priority: optional
Homepage: http://mama.indstate.edu/users/ice/tree/
Description: displays an indented directory tree, in color
Tree is a recursive directory listing command that produces a depth indented
listing of files, which is colorized ala dircolors if the LS_COLORS environment
variable is set and output is to tty.
$ cat md5sums
5ad15c3f7e68891955c95f936160b4df usr/bin/tree
f49004c1057dfeaed3db1dceb050ac5d usr/share/doc/tree/README.gz
3eb175af3a5716275b668ce860c2bfad usr/share/doc/tree/TODO
9f977a86aaf54b1358c92a392dadee23 usr/share/doc/tree/changelog.Debian.gz
e51a3c84c3b33325acc683347bfb4d3f usr/share/doc/tree/copyright
e0fceaec1e51e1da23fce6741a21e5a4 usr/share/man/man1/tree.1.gz