Comment reconstruire un package à l'aide du système de construction Arch Linux
- 1081
- 138
- Anaïs Charles
Le abdos ou Système de construction d'arc est un système de construction d'emballages originaire de la distribution Arch Linux: avec lui, nous pouvons facilement créer des packages qui peuvent être installés avec Pac-Man, le gestionnaire de package de distribution, à partir du code source. Tout ce que nous avons à faire est de spécifier des instructions dans un Pkgbuild fichier puis construire le package à l'aide du makepkg outil. Dans ce tutoriel, nous verrons comment personnaliser et reconstruire un package déjà existant.
Dans ce tutoriel, vous apprendrez:
- Quel est le système de construction d'arc
- Comment télécharger un fichier source de package existant
- Comment modifier un pkgbuild
- Comment créer un package en utilisant le makepkg utilitaire
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Arch Linux |
Logiciel | asp, makepkg, devet de base |
Autre | Autorisations racinaires pour installer des dépendances de construction et d'exécution |
Conventions | # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier |
Rebuiller un paquet
À titre d'exemple pour ce tutoriel, nous reconstruisons le hplip emballer. Ce package contient le logiciel open source nécessaire pour utiliser certaines imprimantes HP sur Linux. Sur des distributions comme Debian et Fedora, nous avons le choix d'installer le hplip package qui ne contient que des utilitaires et des pilotes de ligne de commande, et éventuellement HPLIP-GUI, qui comprend également des outils graphiques qui peuvent être utilisés pour configurer et contrôler l'imprimante. Puisque j'utilise le System-Config Imprimante Outil pour contrôler les imprimantes existantes et je ne veux pas avoir d'outils inutiles et qui se chevauchent sur mon système, je dois changer la façon dont le logiciel est construit et emballé sur Arch Linux: c'est ce que nous ferons dans ce tutoriel.
Installation du logiciel
En première étape, nous devons installer certains packages: devent de base et aspic. Le premier est un groupe de packages qui contient de nombreux utilitaires essentiels pour compiler des logiciels comme fakeroot, GCC et faire. Le second est un outil pour récupérer les fichiers source pour les packages Arch Linux existants. Pour les installer, nous utilisons Pac-Man:
$ sudo pacman -s ASP de niveau de base
Comme déjà mentionné, nous aurons également besoin du makepkg qui est déjà installé car il est livré avec Pac-Man lui-même. Une fois que nous avons installé tous les packages nécessaires, nous pouvons passer à la makepkg configuration.
Configuration de Makepkg
La valeur par défaut à l'échelle du système makepkg Le fichier de configuration est / etc / makepkg.confli
; Nous allons copier ceci sur ~ /.makepkg.confli
, Pour créer une configuration spécifique à l'utilisateur, nous pouvons modifier sans avoir besoin d'utiliser les privilèges administratifs (~ /.config / pacman / makepkg.confli
pourrait également être utilisé). Certaines variables notables que l'on peut vouloir modifier dans le fichier est la suivante:
Variable | Utiliser | Valeur par défaut |
---|---|---|
Cppflags | Les drapeaux à utiliser pour les préprocesseurs C | -D_fortiftify_source = 2 |
CFLAGS | Les drapeaux à utiliser pour le compilateur C | -mars = x86-64 -mtune = générique -o2 -pipe -fno-plt |
Cxxflags | Les drapeaux à utiliser pour le compilateur C ++ | -mars = x86-64 -mtune = générique -02 -pipe -fno-plt |
Builddir | Le répertoire à utiliser pour la construction de packages | / tmp / makepkg |
VÉRIFICATION DE L'INTÉGRITÉ | Le contrôle d'intégrité à utiliser | md5 |
Pkgdest | Le répertoire où tous les packages seront placés | . (directeur de travail) |
Srcdest | Le répertoire où les données source seront stockées | ./ src |
Une fois que nous avons modifié notre configuration pour mieux répondre à nos besoins, nous pouvons procéder et télécharger les fichiers source du package Arch Linux que nous voulons modifier, dans ce cas, comme nous l'avons dit auparavant, hplip.
Téléchargement des fichiers source du package
Pour télécharger les fichiers source du package que nous souhaitons modifier, nous devons utiliser le aspic
outil que nous avons installé avant. Dans ce cas, nous courons:
$ ASP Checkout HPLIP
Après quelques secondes, le hplip
Le répertoire doit être créé dans notre répertoire de travail. À l'intérieur, nous trouverons deux sous-répertoires: se soustraire
qui contient des sous-répertoires à part, du nom du nom du référentiel et de l'architecture du système, et tronc
, qui contient la principale ligne de développement du SVN dépôt.
HPLIP / ├fiques.h-in-gerous-lis-as-cups-2.2.Patch │ ├fique.py.Patch │ ├── 0025-Remove-all-Imageprocessor-fonctionnalité-Whic-Is-CLO.Patch │ ├fique.patch │ ├fique.patch │ ├fique.diff │ └fique.patch └fiques.h-in-gerous-lis-as-cups-2.2.Patch ├── 0023-fixe-mange.py.Patch ├── 0025-Remove-all-Imageprocessor-fonctionnalité-Whic-est-CLO.patch ├fique.patch ├fiques.patch ├fiques.Diff └fique.correctif
Nous pouvons modifier le hplip / repos / extra-x86_64 / pkgbuild
déposer.
Modification du fichier pkgbuild
Le Pkgbuild
Le fichier est un script bash contenant l'instruction de construction pour le package Arch Linux. Dans ce cas, ce que nous devons modifier dans le fichier est le contenu du construire fonction qui contient les commandes utilisées pour configurer et compiler les fichiers source, dans ce cas hplip. Dans la fonction, nous pouvons voir que le ./ Configurer
Le script est lancé avec les drapeaux suivants:
[…] ./ configurer --prefix = / usr \ --enable-qt5 \ --disable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-ppp-build […]
Étant donné que je ne veux pas que des applications graphiques soient construites et que je souhaite installer le minimum nécessaire pour que mon imprimante fonctionne correctement, je n'ai pas besoin de prise en charge de QT5, donc je peux supprimer le --Activer-QT5
Option (je pourrais utiliser --désactiver-QT5
ou --activer-qt5 = non
Au lieu de cela, mais ce serait redondant car le drapeau est désactivé par défaut, comme nous pouvons lire en lançant ./ Configurer - help
dans le répertoire source HPLIP). J'ai alors besoin d'utiliser le --désactiver
drapeau pour désactiver la construction de l'interface graphique et utiliser le --Activer-Lite-Build
Indicateur pour obtenir une version Lite avec uniquement les composants nécessaires pour construire et numériser (l'imprimante comprend également un scanner). Le résultat final serait quelque chose comme:
[…] ./ configurer --prefix = / usr \ --disable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-ppp-build \ --disable-Gui-build \ - -Enable-Lite-Build […]
Depuis que nous avons handicapé qt5 Support, nous pouvons également supprimer python-pyqt5
à partir de la liste des dépendances nécessaires pour créer le logiciel, répertorié dans le comptes Bash Array en ligne 15
du fichier:
MADEPENDS = ('Python-Pyqt5 "Sane" rpcbind "tasses" libusb')
Maintenant que nous avons modifié le Pkgbuild
, Nous pouvons passer à l'étape suivante et construire notre package en utilisant makepkg.
Construisez le package
Une fois notre Pkgbuild
Le fichier est prêt, nous pouvons créer notre package modifié en utilisant le makepkg utilitaire. Avant de le faire, nous avons besoin d'une autre chose: puisque la signature des fichiers source téléchargée pour le logiciel que nous voulons construire est vérifié automatiquement contre une clé GPG, nous devons être clés de notre clés GPG, sinon le processus de construction échouera. Dans ce cas pour importer la clé que nous exécutrions:
$ gpg - Keyserver Keyserver.ubuntu.com --recv 73d770cda59047b9
Nous devons être informés que la clé a été importée avec succès:
GPG: clé 73d770cda59047b9: clé publique "HPLIP (HP Linux Imaging and Printing)" GPG importé: Nombre total traité: 1 GPG: importé: 1
La clé identifiée par 73d770cda59047b9
est la clé utilisée pour signer le hplip source Tarball. Si vous voulez en savoir plus sur la vérification d'une signature GPG, vous pouvez jeter un œil à notre comment vérifier l'intégrité d'un article ISO Iso Distribution que j'ai écrit sur le sujet.
Une fois prêt, nous nous déplaçons dans le répertoire où le Pkgbuild
est stocké
et exécutez la commande suivante:
$ makepkg - Clean --Nycdeps --rmdeps
Jetons un coup d'œil rapide aux options que nous utilisons utilisées lors de l'invoquer makepkg outil. Avec le --faire le ménage
option (-c
) Nous pouvons faire pour que les fichiers et les répertoires restants soient supprimés après une construction de package réussie. Nous avons également utilisé --synchronisation
(-s
): lorsque cette option est utilisée, la dépendance à l'exécution et la construction manquants du package sont installés en utilisant Pac-Man. Enfin, nous avons utilisé le --rmdeps
option (-r
): Cela entraînera une désinstallation des dépendances précédemment installées une fois la construction terminée.
Si nous avons déjà effectué une construction du package et que nous voulons réviser le processus, nous devons également utiliser --force
(-F
) Option, puisque makepkg refuse normalement de construire un package qui existe déjà dans le même répertoire).
Une fois que nous avons lancé la commande ci-dessus, la compilation des fichiers source et la création du package commencera. On nous demandera de confirmer que nous voulons installer les dépendances manquantes:
==> Package de fabrication: HPLIP 1: 3.20.6-2 (mar 18 août 2020 10:29:43 AM CEST) ==> Vérification des dépendances d'exécution… ==> Installation des dépendances manquantes… [Sudo] Mot de passe pour EGDOC: Résolution des dépendances… à la recherche de packages conflictuels… Packages (18) Jbig2Dec -0.18-1 libidn-1.36-1 Perl-Alien-build-2.29-1 perl-alien-libxml2-0.16-2 Perl-capture-Tiny-0.48-4 Perl-Clone-0.45-2 perl-dbi-1.643-2 perl-fffi-cecklib-0.27-2 perl-file-chdir-0.1011-4 perl-file-which-1.23-4 Perl-Path-Tiny-0.112-2 perl-xml-libxml-2.0205-2 perl-xml-namespacesupport-1.12-4 perl-xml-sax-1.02-1 perl-xml-sax-bas-1.09-4 Foomatic-DB-Engine-4: 20200206-1 GhostScript-9.52-1 net-snmp-5.8-6 taille totale installée: 61.76 MIB :: Procéder avec l'installation? [Y / n] y […] ==> Vérification des dépendances de buildtime… ==> Installation des dépendances manquantes… Résolution des dépendances… à la recherche de packages conflictuels… packages (6) GD-2.3.0-1 libgphoto2-2.5.25-1 Libieee1284-0.2.11-9 libxpm-3.5.13-2 RPCBIND-1.2.5-3 SANE-1.0.30-1 taille totale installée: 26.50 MIB :: Procéder avec l'installation? [O / N] y […]
Une fois la construction terminée, nous serons invités à confirmer que nous souhaitons supprimer les packages précédemment installés. À ce stade, si tout s'est passé comme prévu, nous devons trouver le package créé dans le répertoire que nous avons spécifié dans le makepkg Fichier de configuration (le Pkgdest
annuaire). Par défaut, le package est créé dans le répertoire de travail. Dans ce cas, le hplip-1: 3.20.6-2-x86_64.pkg.le goudron.zst
un paquet a été généré; Nous pouvons l'installer en utilisant Pac-Man:
$ sudo pacman -u hplip-1: 3.20.6-2-x86_64.pkg.le goudron.zst
Gérer les conflits sur les mises à niveau du système
Puisque nous avons généré un package personnalisé en fonction de la modification que nous avons apportée à l'intérieur du Pkgbuild
Fichier, un problème se pose: lorsque le système sera mis à jour, une nouvelle version du package standard peut être installée, écrasant ainsi les modifications que nous avons apportées. Comment nous pouvons éviter cela? La solution plus simple consiste à faire les packages que nous modifions le membre d'un groupe spécifique (disons que nous voulons l'appeler «modifié»), puis instruire Pac-Man Pour éviter la mise à niveau de ses membres. Pour ce faire, nous devons modifier le Pkgbuild
encore et ajouter cette ligne:
groupes = ('modifié')
À ce stade, nous devons reconstruire le package. Une fois terminé, nous devons modifier le / etc / pacman.confli
fichier et ajouter le groupe à la liste des ignorés. La ligne à modifier est 26
:
Ignoregroup = modifié
Le Pac-Man Le gestionnaire de packages sautera la mise à niveau du package, nous devons donc le faire manuellement en cas de besoin.
Conclusions
Dans cet article, nous avons vu comment nous pouvons utiliser abdos, Le système de construction d'arc pour modifier et reconstruire un package existant afin de l'adapter à nos besoins spécifiques. Nous avons vu comment télécharger des fichiers source de package, comment modifier un Pkgbuild
, et comment reconstruire le package en utilisant le makepkg utilitaire. Pour mieux explorer le sujet, vous pouvez jeter un œil au makepkg MANPAGE ET CONSULTER LA PAGE WIKI SYSTÈME DE CONSTRUCTION ARCH.
Tutoriels Linux connexes:
- Choses à installer sur Ubuntu 20.04
- Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
- Fichiers de configuration Linux: 30 premiers
- Une introduction à l'automatisation Linux, des outils et des techniques
- Linux peut-il obtenir des virus? Exploration de la vulnérabilité de Linux…
- Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
- Système linux hung? Comment s'échapper vers la ligne de commande et…
- Installez Arch Linux dans VMware Workstation
- Téléchargement Linux
- Mint 20: Mieux que Ubuntu et Microsoft Windows?
- « Comment propager un signal aux processus enfants à partir d'un script bash
- Comment trouver un fichier dans Linux »