#-------------------------------------------------- # Date create : 20230818 #-------------------------------------------------- # Debian packages default APT / PGK / Debconf etc... # Manuels pour les développeurs Debian https://www.debian.org/doc/devel-manuals Chapitre 5. Autres fichiers dans le répertoire debian https://www.debian.org/doc/manuals/maint-guide/dother.fr.html Section 4.1, « control » https://www.debian.org/doc/manuals/maint-guide/dreq.fr.html#control Section 4.4, « rules » https://www.debian.org/doc/manuals/maint-guide/dreq.fr.html#rules # Ubuntu packages APT https://doc.ubuntu-fr.org/apt # # Module Perl - Debian::Rules - manipulation pratique de debian/règles https://metacpan.org/pod/Debian::Rules Parfois, il faut savoir si debian/rules utilise la petite variante dh(1) ou si elle est intégrée à quilt(1). Debian::Rules fournit des fonctionnalités pour vérifier cela, ainsi que pour ajouter/supprimer l'intégration de quilt. Le contenu modifié est écrit dans le fichier soit via la méthode "write", soit lorsque la référence de l'objet sort de la portée (via DESTROY). # Module Perl - Debian::DpkgLists - scanne /var/lib/dpkg/info/*.list pour les fichiers/modèles (files/patterns) https://metacpan.org/pod/Debian::DpkgLists Debian::DpkgLists est un module permettant de rechercher facilement les listes de fichiers de paquets de dpkg(1). Ceux-ci sont situés dans /var/lib/dpkg/info/*.list et contiennent une simple liste de noms de fichiers complets (y compris la barre oblique). Il existe plusieurs méthodes de classe différentes pour rechercher par chemin complet ou partiel, une expression régulière ou un nom de module Perl. Notez que les listes de fichiers de dpkg ne représentent que l'idée de dpkg de ce qui est installé sur le système. Si vous souhaitez également rechercher dans les packages, disponibles dans l'archive Debian mais non installés localement, consultez Debian::AptContents. # Module Perl - Debian::AptContents - Analyser/rechercher dans les fichiers de contenu du fichier apt https://metacpan.org/pod/Debian::AptContents Cela doit vraiment fonctionner non seulement pour les modules Perl. Un module spécifique aux modules Perl est requis par dh-make-perl, mais il peut sous-classer Debian::AptContents, qui doit devenir plus générique. find / -name "AptContents.pm" -print # Module Perl - Linux::APT - Interface avec APT pour les distributions Debian (interface Perl avec apt-get et apt-cache) https://metacpan.org/pod/Linux::APT AptPkg::Cache -> https://manpages.debian.org/testing/libapt-pkg-perl/AptPkg::Cache.3pm.en.html -> apt install libapt-pkg-perl AptPkg::Config -> https://manpages.ubuntu.com/manpages/impish/man3/AptPkg::Config.3pm.html -> apt install libapt-pkg-perl apt build-dep libapt-pkg-perl apt build-dep libdpkg-perl Debconf -> https://manpages.ubuntu.com/manpages/focal/fr/man7/debconf.7.html -> apt install debconf apt-utils https://unix.stackexchange.com/questions/90523/what-packages-are-installed-by-default-in-debian-is-there-a-term-for-that-set The base system is described in Debian policy http://www.debian.org/doc/debian-policy/ch-binary.html#s3.7 as all packages with required or important priority. You can search for the packages that the required and important priorities are attached to with the aptitude utility. debootstrap installs these packages during the setup process. tasksel will then install whatever other roles you choose on top, normally standard is the default selection that is used. On top of what is listed in the base system you will get A Kernel (thankfully) Input/Locale/Dictionary packages. Hardware packages. (ACPI, USB, PCI, Virtual guest additions on vm's) Then some dependent libraries to support the above. root@dc.bdc:~ $ aptitude search ~prequired -F"%p" base-files base-passwd bash bsdutils coreutils dash debconf debianutils diffutils dpkg e2fslibs e2fsprogs findutils gcc-6-base grep gzip hostname init-system-helpers libacl1 libattr1 libblkid1 libc-bin libc6 libcomerr2 libfdisk1 libgcc1 liblzma5 libmount1 libpam-modules libpam-modules-bin libpam-runtime libpam0g libpcre3 libselinux1 libsepol1 libsmartcols1 libss2 libtinfo5 libuuid1 login lsb-base mawk mount multiarch-support ncurses-base ncurses-bin passwd perl-base sed sensible-utils sysvinit-utils tar tzdata util-linux zlib1g root@dc.bdc:~ $ aptitude search ~pimportant -F"%p" adduser apt apt-utils bsdmainutils cpio cron debconf-i18n debian-archive-keyring dmidecode gnupg gpgv ifupdown init iproute2 iptables iputils-ping isc-dhcp-client isc-dhcp-common kmod libapt-inst2.0 libapt-pkg5.0 libbz2-1.0 libestr0 libgdbm3 libkmod2 liblogging-stdlog0 libncursesw5 libnewt0.52 libpipeline1 libpopt0 libprocps6 libreadline7 libslang2 libssl1.0.2 libssl1.1 libstdc++6 libudev1 libxapian30 logrotate nano netbase procps readline-common rsyslog systemd systemd-sysv tasksel tasksel-data udev vim-common vim-tiny wget whiptail root@dc.bdc:~ $ # Add in sources.list les deb-src //devscripts # Module Perl - Module::Build - Construire et installer des modules Perl https://metacpan.org/pod/Module::Build Module::Build est un système pour construire, tester et installer des modules Perl. Il est censé être une alternative à ExtUtils::MakeMaker. Les développeurs peuvent modifier le comportement du module par sous-classement. Il ne nécessite pas non plus de création sur votre système - la plupart du code Module :: Build est en perl pur et écrit de manière très multiplateforme. Voir "COMPARAISON" pour plus de comparaisons entre Module::Build et d'autres outils d'installation. Une comparaison entre Module::Build et d'autres installateurs de distribution CPAN. COMPARAISON: ExtUtils::MakeMaker nécessite la création et l'utilisation d'un Makefile. Module::Build ne le fait pas, pas plus que les autres installateurs pur-perl suivant la spécification Build.PL tels que Module::Build::Tiny. En pratique, ce n'est généralement pas un problème pour l'utilisateur final, car make est déjà requis pour installer la plupart des modules CPAN, même sous Windows. ExtUtils::MakeMaker a été un module central dans chaque version de Perl 5 et doit maintenir la compatibilité pour installer la majorité des modules CPAN. Module::Build a été ajouté au noyau de Perl 5.10 et supprimé du noyau de Perl 5.20, et (comme ExtUtils::MakeMaker) n'est mis à jour que pour résoudre les problèmes critiques et maintenir la compatibilité. Module::Build et d'autres programmes d'installation non essentiels tels que Module::Build::Tiny sont installés à partir du CPAN en se déclarant comme prérequis de la phase de configuration, et de cette manière, tout programme d'installation peut être utilisé à la place de ExtUtils::MakeMaker. La personnalisation du processus de construction avec ExtUtils::MakeMaker implique de remplacer certaines méthodes qui forment le Makefile en définissant les sous-marins dans l'espace de noms MY::, nécessitant une connaissance approfondie de Makefile, mais permettant une personnalisation ciblée de l'ensemble de la construction. La personnalisation de Module::Build implique de sous-classer Module::Build lui-même, en ajoutant ou en redéfinissant des méthodes pure-perl qui représentent des actions de construction, qui sont invoquées en tant qu'arguments passés au script ./Build généré. Il s'agit d'un concept plus simple mais qui nécessite de redéfinir les actions de génération standard pour appeler vos personnalisations. Module::Build::Tiny ne permet pas la personnalisation. Module::Build fournit plus de fonctionnalités et une meilleure expérience pour les auteurs de distribution que ExtUtils::MakeMaker. Cependant, les outils conçus spécifiquement pour la création, tels que Dist::Zilla et ses dérivés Dist::Milla et Minilla, fournissent ces fonctionnalités et bien plus encore, et génèrent un script de configuration (Makefile.PL/Build.PL) qui utilisera n'importe lequel des différents installateurs séparément du côté de l'utilisateur final. App::ModuleBuildTiny est un outil de création autonome alternatif pour les distributions utilisant Module::Build::Tiny, qui ne nécessite qu'un simple Build.PL à deux lignes. # Module Perl - perl-libextractor - détermine les sous-ensembles de la bibliothèque perl pour construire des distributions https://metacpan.org/dist/Perl-LibExtractor/view/bin/perl-libextractor Ce programme peut être utilisé pour extraire un sous-ensemble de votre installation perl, dans le but de créer des distributions de logiciels. Autrement dit, ce module trouve tous les fichiers nécessaires à l'exécution d'un programme perl (fichiers de bibliothèque, exécutable perl, scripts). L'ensemble résultant peut ensuite être affiché ou copié dans un autre répertoire, tout en supprimant éventuellement les sources perl pour les réduire. # Module Perl - Dpkg - module avec variables de base (module with core variables) https://metacpan.org/pod/Dpkg Le module Dpkg fournit un ensemble de variables avec des informations concernant l'installation du système. C'est aussi le point d'entrée de la hiérarchie des modules Dpkg. # Module Perl - Dpkg::Changelog::Debian - Analyser les journaux des modifications de Debian https://metacpan.org/pod/Dpkg::Changelog::Debian Cette classe représente un fichier journal des modifications Debian sous la forme d'un tableau d'entrées du journal des modifications (Dpkg::Changelog::Entry::Debian). Il implémente l'interface générique Dpkg::Changelog. Seules les méthodes spécifiques à cette implémentation sont décrites ci-dessous, les autres sont héritées. Dpkg::Changelog::Debian analyse les journaux des modifications Debian comme décrit dans deb-changelog(5). L'analyseur essaie d'ignorer les commentaires de style # ou /* */, les mots-clés RCS, les modèles Vim, les variables locales Emacs et les éléments des anciens journaux des modifications avec d'autres formats à la fin du fichier. REMARQUE : la plupart d'entre eux sont actuellement ignorés silencieusement, aucune erreur d'analyseur n'est émise pour eux. Cela devrait devenir configurable à l'avenir. Parse::DebianChangelog -> https://manpages.debian.org/unstable/libdpkg-perl/Dpkg::Changelog::Parse.3perl.en.html -> apt install libdpkg-perl # Module Perl - Parse::Debian::Packages - Parse the data from a debian Packages.gz https://metacpan.org/pod/Parse::Debian::Packages Ce module analyse les fichiers Packages utilisés par les outils de gestion de paquets Debian. # Module Perl - Dpkg::Deps - Analyser et manipuler les dépendances des paquets Debian https://metacpan.org/pod/Dpkg::Deps Le module Dpkg::Deps fournit des classes implémentant différents types de dépendances. La fonction la plus importante est deps_parse(), elle transforme une ligne de dépendance dans un ensemble d'objets Dpkg::Deps::{Simple,AND,OR,Union} selon le cas. # Module Perl - Parse::Debian::PackageDesc - Analyse les modifications de Debian et les fichiers de paquetage source https://metacpan.org/pod/Parse::Debian::PackageDesc Analyse un fichier Debian .changes (ou un fichier .dsc) et vous permet de récupérer facilement ses informations. Il peut même vérifier les signatures GPG, en supposant que vous avez installé GNUPG et une configuration appropriée. # Module Perl - Parse::DebControl - Analyse OO facile des fichiers de type contrôle Debian Parse::DebControl est un moyen OO simple d'analyser les fichiers de contrôle Debian et d'autres paires clé-valeur séparées par deux-points. Il est spécifiquement conçu pour gérer le format utilisé dans les fichiers de contrôle Debian, les fichiers modèles et les fichiers de cache utilisés par dpkg. Pour des informations de base sur le format, voir : http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-controlsyntax Ce module ne fait en fait aucune intelligence avec le contenu du fichier (car il y a beaucoup de fichiers dans ce format), mais gère simplement le format. Il peut gérer des fichiers de contrôle simples ou des fichiers de centaines de lignes de manière efficace et simple. # Module Perl - pkg - utilise de manière transparente les packages et les packages internes https://metacpan.org/pod/pkg pkg étend l'instruction standard "use" pour gérer de manière plus transparente les packages internes, en incorporant en outre certaines des fonctionnalités des pragmata alias et use avec quelques modifications supplémentaires. Un package interne est un package qui n'a pas le même nom que le module (complet) dans lequel il est défini. Par exemple, si A.pm contient : %package A; %sub a { ... } %package A::B; %sub ab { ... } %package A::C; %sub ac { ... } %1; les packages A::B et A::C sont des packages internes. L'instruction use (ainsi que la plupart des pragmata traitant des modules) ne gère pas les packages internes. Certains, comme parent, le font, mais demandent à l'utilisateur (via l'option -norequire) de savoir si le paquet est interne ou non. [...] Ou, en utilisant pkg : use pkg [ 'A' ], [ 'A::B' => qw[ ab ] ]; # Module Perl - Tree::PseudoIncLib - Classe Perl encapsulant une description du tableau pseudo-INC. https://metacpan.org/pod/Tree::PseudoIncLib Ce module encapsule les données de description d'une bibliothèque de type perl et fournit des méthodes pour manipuler ces données. Il n'est en aucun cas associé à un tableau @INC réel sur le système. Au lieu de cela, il fonctionne avec ce que l'on appelle un tableau entrant pseudo_INC qui peut être, ou non, directement associé à @INC défini pour un utilisateur particulier ou un processus sur le système. Une description détaillée de la bibliothèque Perl sur le système est extrêmement utile pour chaque développeur perl. Cela pourrait également être bénéfique pour l'administrateur système afin d'assurer une structure appropriée des bibliothèques système. Ce module encapsule les données de description et fournit des méthodes pour manipuler ces données. Il a été initialement développé comme un outil intégré à Apache pour le développement de mod_perl. L'idée à côté était assez simple - fournir aux développeurs l'arborescence de tous les modules perl disponibles installés sur le système et rendre toutes les sources et tous les documents visibles sur le réseau. En tant qu'effet secondaire du premier prototype développé, il semblait également utile du point de vue de la configuration appropriée du tableau @INC sur le système, en particulier en ce qui concerne le fait que certains modules perl pouvaient être masqués par d'autres portant le même nom de classe CPAN . Il semble assez facile de marquer tous les modules grisés sur l'arborescence, fournissant des informations utiles à l'administrateur système. Il a été remarqué par ailleurs que le processus de création de l'arborescence est extrêmement chronophage, en particulier sur les serveurs web très fréquentés équipés de bibliothèques Perl riches. D'autre part, le contenu des bibliothèques reste inchangé, généralement assez longtemps, ce qui se mesure en jours et en semaines. Jusqu'à présent, la séparation du processus de création de l'arborescence du processus de déploiement de la vue vers le navigateur client semble bénéfique dans la perspective d'amélioration des performances sur les systèmes occupés. C'était la principale raison de la création de ce module, permettant d'utiliser la même API à partir du script de ligne de commande ou d'une fonctionnant sous le contrôle de cron. Malgré l'objectif initial, cette version du module n'est en aucun cas associée à un véritable tableau @INC sur le système. Au lieu de cela, ce module fonctionne avec ce que l'on appelle un tableau entrant pseudo_INC qui peut être, ou non, directement associé au @INC actuel pour un utilisateur/processus particulier sur le système. # Module Perl - debarnacle - Vérifiez le système de fichiers pour les balanes (fichiers manquants et inexpliqués) https://metacpan.org/dist/Debarnacle/view/debarnacle.pod Cette page de manuel documente brièvement la commande debarnacle. debarnacle est un programme qui parcourt la base de données du système d'empaquetage Debian, et compare le contenu de celle-ci avec les fichiers réellement sur votre système, et produit un résumé des différences. # Module Perl - ExtUtils :: InstallPaths - La logique du chemin d'installation de Build.PL est simplifiée https://metacpan.org/pod/ExtUtils::InstallPaths Ce module essaie de rendre la résolution du chemin d'installation aussi simple que possible. Lorsque vous souhaitez installer un module, il doit déterminer où installer les choses. La version résumée de la façon dont cela fonctionne est que les emplacements d'installation par défaut sont déterminés à partir de ExtUtils :: Config, et ils peuvent être remplacés individuellement en utilisant l'attribut install_path. Un attribut install_base vous permet de spécifier une racine d'installation alternative comme /home/foo et le préfixe fait quelque chose de similaire d'une manière assez différente (et plus compliquée). destdir vous permet de spécifier un répertoire d'installation temporaire comme /tmp/install au cas où vous voudriez créer des packages installables groupés. Les types suivants sont pris en charge par défaut. lib (bibliothèque) Habituellement, les fichiers de module pur-Perl se terminent par .pm ou .pod. arch Fichiers de module "dépendants de l'architecture", généralement produits en compilant XS, Inline ou un code similaire. script Programmes écrits en Perl pur. Afin d'améliorer la réutilisation, vous voudrez peut-être les rendre aussi petits que possible - placez le code dans des modules chaque fois que possible. bin Programmes exécutables "dépendants de l'architecture", c'est-à-dire du code C compilé ou quelque chose du genre. Assez rare de voir cela dans une distribution perl, mais cela arrive. bindoc Documentation pour les trucs dans le script et bin. Généralement généré à partir du POD dans ces fichiers. Sous Unix, ce sont des pages de manuel appartenant à la catégorie 'man1'. À moins qu'elle ne soit explicitement définie, ceci n'est disponible que sur les plates-formes prenant en charge les pages de manuel. libdoc Documentation pour les trucs dans lib et arch. Ceci est généralement généré à partir du POD dans les fichiers .pm et .pod. Sous Unix, ce sont des pages de manuel appartenant à la catégorie 'man3'. À moins qu'elle ne soit explicitement définie, ceci n'est disponible que sur les plates-formes prenant en charge les pages de manuel. binhtml C'est la même chose que bindoc ci-dessus, mais s'applique aux documents HTML. À moins qu'elle ne soit explicitement définie, ceci n'est disponible que lorsque perl a été configuré pour le faire. libhtml C'est la même chose que libdoc ci-dessus, mais s'applique aux documents HTML. À moins qu'elle ne soit explicitement définie, ceci n'est disponible que lorsque perl a été configuré pour le faire. # Module Perl - Alien::Packages - Find information of installed packages https://metacpan.org/pod/Alien::Packages # Module Perl - DPKG::Make - génère proprement un paquet Debian (.dpkg) https://metacpan.org/pod/DPKG::Make # Module Perl - dh-make-perl - Crée des paquets source Debian à partir de modules Perl https://metacpan.org/dist/DhMakePerl/view/dh-make-perl dh-make-perl créera les fichiers requis pour construire un paquet source debian à partir d'un module Perl ou d'une distribution CPAN. Cela fonctionne pour la plupart des packages simples et est également utile pour commencer à empaqueter des modules Perl. Vous pouvez spécifier un module ou un nom de distribution avec le commutateur --cpan et dh-make-perl le téléchargera pour vous à partir d'un miroir CPAN, ou vous pouvez spécifier le répertoire avec les sources déjà décompressées. Si ni --cpan ni un répertoire n'est donné comme argument, dh-make-perl essaie de créer un paquet Perl à partir des données du répertoire courant. Vous pouvez construire et installer le paquet binaire debian en utilisant les commutateurs de ligne de commande "--build" et "--install". https://manpages.debian.org/unstable/dh-make-perl/dh-make-perl.1p.en.html # Module Perl - Regexp::Common::debian - regexps pour les chaînes spécifiques à Debian https://metacpan.org/pod/Regexp::Common::debian Debian GNU/Linux en tant que système de gestion valide, analyse et génère beaucoup de données. Pour le bien d'un autre projet, j'ai eu besoin d'une sorte d'analyseur. Et, au moment de commencer, il y a des raisons d'y aller moi-même. Ces raisons sont sans objet maintenant, mais nous y sommes. #-------------------------------------------------------- # Tracker Debian : https://tracker.debian.org/pkg/perl #-------------------------------------------------------- .dsc for install version.. https://tracker.debian.org/media/packages/p/perl/changelog-5.38.0-1 https://tracker.debian.org/media/packages/p/perl/copyright-5.38.0-1 https://tracker.debian.org/media/packages/p/perl/rules-5.38.0-1 https://tracker.debian.org/media/packages/p/perl/control-5.38.0-1 #-------------------------------------------------------- dpkg ne fournit aucune possibilité de lire le journal des modifications d'un paquet. vous devez extraire le paquet et lire le changelog dpkg -X vous pouvez ensuite lire le journal des modifications à l'aide de l'utilitaire dpkg-parsechangelog dpkg-parsechangelog -l /usr/share/doc//changelog.Debian.gz Comme c'est vraiment pénible, si votre distribution utilise apt-get, vous pouvez utiliser apt-get changelog ou apt changelog