Arch Build System Qu'est-ce que Arch Build System Le Arch Build System est un système de type «ports» pour la construction et l'emballage de logiciels à partir du code source. Alors que pacman est l'outil Arch spécialisé pour la gestion de paquets binaires (y compris les paquets créés avec l'ABS), ABS est une collection d'outils pour compiler la source dans des paquets installables. pkg. tar. xz. Qu'est-ce qu'un port Ports système est un système utilisé par BSD pour automatiser le processus de construction de logiciels à partir du code source. Le système utilise un port pour télécharger, décompresser, corriger, compiler et installer le logiciel donné. Un port est simplement un petit répertoire sur l'ordinateur des utilisateurs, nommé d'après le logiciel correspondant à installer, qui contient quelques fichiers avec les instructions pour la construction et l'installation du logiciel à partir de la source. Cela rend l'installation de logiciels aussi simple que de taper make ou de faire l'installation propre dans le répertoire des ports. ABS est un concept similaire ABS est constitué d'un arbre de répertoire (l'arbre ABS) résidant sous var abs. Cet arbre contient plusieurs sous-répertoires, chacun dans un nom de repo et chacun nommé par leur paquet respectif. Cet arbre représente (mais ne contient pas) tous les logiciels officiels d'Arch. Récupérable via le système SVN. Vous pouvez vous référer à chaque sous-répertoire nommé par paquet comme un ABS, de la façon dont on fait référence à un port. Ces ABS (ou sous-répertoires) ne contiennent pas le logiciel ni la source mais plutôt un fichier PKGBUILD (et parfois d'autres fichiers). Un PKGBUILD est un simple script de compilation Bash, un fichier texte contenant les instructions de compilation et d'emballage ainsi que l'URL de l'archive source appropriée à télécharger. (Le composant le plus important de l'ABS sont PKGBUILDs.) En émettant à l'intérieur de la commande ABS makepkg, le logiciel est d'abord compilé puis emballé dans le répertoire de construction. Vous pouvez maintenant utiliser pacman (le gestionnaire de paquets Arch Linux) pour installer, mettre à niveau et supprimer votre nouveau package. ABS ABS peut être utilisé comme un terme générique car il comprend et s'appuie sur plusieurs autres composants donc, bien que pas techniquement précis, ABS peut se référer aux outils suivants comme une boîte à outils complète: ABS arbre La structure de répertoire ABS contenant des fichiers nécessaires pour construire tous Les paquets officiels (mais pas les paquets eux-mêmes ni les fichiers source du logiciel). Il est disponible dans les référentiels svn et git et le script abs (du pack abs) les télécharge en utilisant rsync dans var abs sur votre machine (locale). Sur le système local, l'arborescence contient des sous-répertoires pour chaque référentiel spécifié dans etc abs. conf. Qui contiennent à leur tour un sous-répertoire pour chaque paquet. Remarque: l'arbre ABS se synchronise une fois par jour afin de se situer en retard par rapport à ce qui est déjà disponible dans les dépôts. PKGBUILD Un script Bash qui contient l'URL du code source ainsi que les instructions de compilation et d'emballage. Makepkg shell outil de commande qui lit le PKGBUILDs, télécharge automatiquement et compile les sources et crée un fichier. pkg. tar selon le tableau PKGEXT dans makepkg. conf. Vous pouvez également utiliser makepkg pour créer vos propres packages personnalisés à partir de sources AUR ou tierces. Reportez-vous à la section Création de packages pour plus d'informations Pacman pacman est complètement séparé, mais est nécessairement invoqué par makepkg ou manuellement, pour installer et supprimer les paquets construits et pour extraire des dépendances. AUR Le référentiel Arch User est distinct de ABS mais AUR (non supporté) PKGBUILDs sont construits à l'aide de makepkg pour compiler et emballer le logiciel. Contrairement à l'arbre ABS sur votre machine locale, l'AUR existe en tant qu'interface de site Web. Il contient plusieurs milliers de PKGBUILDs contribués par les utilisateurs pour le logiciel qui n'est pas disponible comme un package officiel d'Arch. Si vous avez besoin de construire un paquet en dehors de l'arbre Arch officiel, les chances sont-il est dans l'AUR. Attention: Les PKGBUILD officiels supposent que les paquetages sont construits dans un chroot propre. La création de logiciels sur un système de compilation sale peut échouer ou entraîner un comportement inattendu au moment de l'exécution, car si le système de construction détecte les dépendances dynamiquement, le résultat dépend des packages disponibles sur le système de construction. Pourquoi voulez-vous utiliser ABS? Le système Arch Build est utilisé pour: Compiler ou recompiler un paquet, pour une raison quelconque Créer et installer de nouveaux paquets à partir de sources de logiciels pour lesquels aucun paquet n'est encore disponible (voir Création de paquets) (Par exemple, avec pacbuilder) Construisez et installez votre propre noyau personnalisé (voir la compilation du noyau) Obtenez les modules du noyau en travaillant avec votre noyau personnalisé Compilez et installez facilement votre propre noyau personnalisé Installer une version plus récente, ancienne, bêta ou de développement d'un package Arch en éditant le numéro de version dans le PKGBUILD ABS n'est pas nécessaire pour utiliser Arch Linux, mais il est utile pour automatiser certaines tâches de compilation source. Comment utiliser les paquets ABS Building à l'aide d'abs se compose de ces étapes: Installer le paquet abs avec pacman. Exécutez abs en tant que root pour créer l'arbre ABS en le synchronisant avec le serveur Arch Linux. Copiez les fichiers de compilation (résidant habituellement sous var abs ltrepogt ltpkgnamegt) dans un répertoire de construction. Accédez à ce répertoire, modifiez le PKGBUILD (si nécessaire) et makepkg. Selon les instructions du PKGBUILD, makepkg téléchargera l'archive source appropriée, le décompresse, le patch (si désiré), compile selon CFLAGS spécifié dans makepkg. conf. Et enfin compresser les fichiers construits dans un paquet avec l'extension. pkg. tar. gz ou. pkg. tar. xz. L'installation est aussi simple que pacman - U lt. pkg. tar. xz filegt. L'enlèvement des paquets est également géré par pacman. Installer les outils Cela récupérera les scripts abs-sync, les scripts de construction différents et rsync (en tant que dépendance, si vous ne l'avez pas déjà). Avant de pouvoir réellement construire quoi que ce soit, cependant, vous aurez également besoin d'outils de compilation de base. Celles-ci sont facilement collectées dans le groupe de paquets base-devel. Ce groupe peut être installé avec pacman. Etc abs. conf Modifier etc abs. conf pour inclure vos dépôts souhaités. Retirer le. Devant les dépôts appropriés. Par exemple: L'arbre ABS est une hiérarchie de répertoires SVN située sous var abs et ressemble à ceci: L'arborescence ABS a exactement la même structure que la base de données du package: Premier niveau: Nom du référentiel Deuxième niveau: Répertoires de nom de package Troisième niveau: PKGBUILD (Contient les informations nécessaires à la construction d'un paquet) et d'autres fichiers connexes (correctifs, autres fichiers nécessaires à la construction du paquet) Le code source du paquet n'est pas présent dans le répertoire ABS. Au lieu de cela, le PKGBUILD contient une URL qui téléchargera le code source lorsque le package est construit. Donc, la taille de l'arbre ABS est assez petite. Télécharger l'arbre ABS Votre arbre ABS est maintenant créé sous var abs. Notez que les branches d'arbre ont été créées correspondant à celles que vous avez spécifiées dans etc abs. conf. La commande abs doit être exécutée périodiquement pour rester en synchronisation avec les référentiels officiels. Les fichiers individuels ABS peuvent également être téléchargés avec: De cette façon, vous n'avez pas besoin de consulter l'ensemble de l'arbre ABS pour créer un seul package. Etc makepkg. conf Notes: veuillez utiliser le deuxième argument du modèle pour fournir des indications plus détaillées. Makepkg s etc makepkg. conf spécifie les variables d'environnement globales et les indicateurs de compilateur que vous pouvez éditer si vous utilisez un système SMP ou pour spécifier d'autres optimisations souhaitées. Les paramètres par défaut sont pour les optimisations i686 et x8664 qui fonctionnera très bien pour ces architectures sur les systèmes monoprocesseurs. Makepkg. conf Définition de la variable PACKAGER dans etc makepkg. conf est une étape optionnelle mais fortement recommandée. Il permet à un drapeau d'identifier rapidement quels paquets ont été construits et / ou installés par VOUS, et non par le responsable officiel. Ceci est facilement réalisé en utilisant expac. Afficher tous les paquets (y compris ceux de AUR) Afficher uniquement les paquets contenus dans les repos Cet exemple ne montre que les paquets contenus dans les repos définis dans etc pacman. conf. Créer un répertoire de construction Il est recommandé de créer un répertoire de compilation où la compilation proprement dite aura lieu. Vous ne devriez jamais modifier l'arbre ABS en construisant en lui, car les données seront perdues (écrasées) sur chaque mise à jour ABS. Il est recommandé d'utiliser votre répertoire personnel, bien que certains utilisateurs d'Arch préfèrent créer un répertoire local sous var abs. Appartenant à un utilisateur normal. Créez votre répertoire de construction. par exemple. Copiez l'ABS de l'arborescence (var abs ltrepositorygt ltpkgnamegt) dans le répertoire de construction. Ensemble de construction Dans notre exemple, nous allons construire le package de gestionnaire d'affichage mince. Copiez l'ABS mince de l'arbre ABS dans un répertoire de construction: Accédez au répertoire de construction: Modifiez le PKGBUILD à votre convenance. Si vous devez apporter des modifications à la source elle-même, plutôt que juste au PKGBUILD, voir Patching dans ABS. Ensuite, exécutez makepkg (avec l'option - s pour activer la gestion automatique des dépendances en temps de construction): Remarque: avant de vous plaindre de dépendances manquantes, n'oubliez pas que le groupe base-devel est supposé installé lors de la création avec makepkg. Voir Outils d'installation. Installer en tant que root: Thats it. Vous venez de créer mince de la source et l'installer proprement sur votre système avec pacman. L'enlèvement des paquets est également géré par pacman avec pacman - R slim. La méthode ABS d'installation de logiciels offre confort, tout en maintenant une transparence complète et le contrôle des fonctions de construction et d'installation incluses dans le PKGBUILD. Essentiellement, les mêmes étapes sont exécutées dans la méthode traditionnelle (incluant généralement les étapes. Configure, make, make install) mais le logiciel est installé dans un environnement racine faux. (Une fausse racine est tout simplement un sous-répertoire dans le répertoire de construction qui fonctionne et se comporte comme le répertoire racine du système.) En conjonction avec le programme fakeroot, makepkg crée un faux répertoire racine et installe les binaires compilés et les fichiers associés avec root comme Propriétaire). La racine fausse. Ou l'arbre de sous-répertoire contenant le logiciel compilé, est ensuite compressé dans une archive avec l'extension. pkg. tar. xz. Ou un paquet. Lorsqu'il est invoqué, pacman extrait alors le paquet (l'installe) dans le répertoire racine vrai du système (). Conserver les paquets modifiés La mise à jour du système avec pacman remplacera un paquet modifié de l'ABS par le paquet du même nom des référentiels officiels. Consultez les instructions suivantes pour savoir comment éviter cela. Insérez un tableau de groupe dans le PKGBUILD et ajoutez le package à un groupe appelé modifié. Ajoutez ce groupe à la section IgnoreGroup dans etc pacman. conf. Si de nouvelles versions sont disponibles dans les référentiels officiels lors d'une mise à jour du système, pacman imprime une note indiquant qu'elle ignore cette mise à jour car elle se trouve dans la section IgnoreGroup. À ce stade, le paquet modifié doit être reconstruit à partir d'ABS pour éviter les mises à niveau partielles. Autres outils pbget - récupérer PKGBUILDs pour les paquets individuels directement à partir de l'interface web. Comprend le support AUR. Asp - un outil pour gérer les fichiers sources de construction utilisés pour créer des paquets Arch Linux. Utilise l'interface git qui offre des sources plus à jour. Création de paquets Cet article a pour but d'aider les utilisateurs à créer leurs propres paquetages en utilisant le système Arch Linux de type ports-like. Également pour soumission dans AUR. Il couvre la création d'un fichier de description de compilation PKGBUILD 8211 d'origine de makepkg pour créer un paquet binaire à partir de la source. Si déjà en possession d'un PKGBUILD. Voir makepkg. Pour obtenir des instructions concernant les règles existantes et les moyens d'améliorer la qualité des emballages, voir Normes d'emballage Arch. Les paquets dans Arch Linux sont construits en utilisant l'utilitaire makepkg et les informations stockées dans un fichier PKGBUILD. Lorsque makepkg s'exécute, il recherche un PKGBUILD dans le répertoire courant et suit les instructions qu'il contient pour acquérir les fichiers requis et les compiler pour les contenir dans un fichier paquet (pkgname. pkg. tar. xz). Le paquetage résultant contient des fichiers binaires et des instructions d'installation prêts à être installés par pacman. Un paquetage Arch n'est pas plus qu'une archive tar, ou tarball, compressé à l'aide de xz, qui contient les fichiers suivants générés par makepkg: Les fichiers binaires à installer..PKGINFO. Contient toutes les métadonnées requises par pacman pour traiter les paquets, les dépendances, etc..MTREE. Contient des hachages et des horodateurs des fichiers, qui sont inclus dans la base de données locale afin que pacman puisse vérifier l'intégrité du paquet..INSTALLER. Un fichier optionnel utilisé pour exécuter des commandes après l'étape de suppression de la mise à niveau d'installation. (Ce fichier est présent seulement si spécifié dans le PKGBUILD.).Changelog. Un fichier facultatif tenu par le responsable du paquet documentant les modifications du paquet. (Il n'est pas présent dans tous les packages.) Méta groupes et paquets Un groupe de paquets est un ensemble de paquets associés, définis par le packager, qui peuvent être installés ou désinstallés simultanément en utilisant le nom du groupe comme substitut à chaque nom de paquet. Alors qu'un groupe n'est pas un paquet, il peut être installé de la même manière qu'un paquet, voir PacmanInstalling groupes de paquets et PKGBUILDgroups. Un paquet meta, souvent (mais pas toujours) intitulé avec le suffixe - meta, fournit une fonctionnalité similaire à un groupe de paquetages car il permet à plusieurs paquets associés d'être installés ou désinstallés simultanément. Les paquets Meta peuvent être installés comme n'importe quel autre paquet, voir PacmanInstalling packages spécifiques. La seule différence entre un paquet meta et un paquet régulier est qu'un paquet meta est vide et existe uniquement pour lier des paquets liés ensemble via des dépendances. L'avantage d'un package meta, par rapport à un groupe, est que tout nouveau paquet membre sera installé lorsque le méta pack lui-même est mis à jour avec un nouvel ensemble de dépendances. Ceci est contraire à un groupe où les nouveaux membres du groupe ne seront pas automatiquement installés. L'inconvénient d'un package meta est qu'il n'est pas aussi flexible qu'un groupe - vous pouvez choisir les membres du groupe que vous souhaitez installer, mais vous ne pouvez pas choisir les dépendances méta-paquet que vous souhaitez installer. De même, vous pouvez désinstaller les membres du groupe sans avoir à supprimer le groupe entier, mais vous ne pouvez pas supprimer les dépendances de méta-paquets sans avoir à désinstaller le paquet méta lui-même. Préparation Pré-requis logiciel Assurez-vous d'abord que les outils nécessaires sont installés. L'installation du groupe de paquets base-devel doit être suffisante, y compris make et les outils supplémentaires nécessaires pour la compilation à partir de la source. Un des principaux outils pour créer des paquetages est makepkg (fourni par pacman), qui effectue les opérations suivantes: Vérifie si les dépendances des paquetages sont installées. Téléchargez le (s) fichier (s) source (s) à partir du (des) serveur (s) spécifié (s). Décompresse le (s) fichier (s) source (s). Compile le logiciel et l'installe sous un environnement fakeroot. Enlève les symboles des binaires et des bibliothèques. Génère le fichier meta du package qui est inclus avec chaque package. Compresse l'environnement fakeroot dans un fichier de package. Stocke le fichier de package dans le répertoire de destination configuré, qui est le répertoire de travail actuel par défaut. Téléchargez et testez l'installation Téléchargez l'archive source du logiciel que vous souhaitez emballer, extrayez-le et suivez les étapes d'installation du programme. Notez toutes les commandes et / ou les étapes nécessaires à la compilation et à l'installation. Vous répéterez ces mêmes commandes dans le fichier PKGBUILD. La plupart des auteurs de logiciels s'accrochent au cycle de construction en 3 étapes: C'est un bon moment pour vous assurer que le programme fonctionne correctement. Création d'un PKGBUILD Lorsque vous exécutez makepkg. Il recherchera un fichier PKGBUILD dans le répertoire de travail actuel. Si un fichier PKGBUILD est trouvé, il téléchargera le code source des logiciels et le compilera conformément aux instructions spécifiées dans le fichier PKGBUILD. Les instructions doivent être entièrement interprétables par le shell Bash. Une fois l'opération terminée avec succès, les binaires et les métadonnées du package, à savoir la version du package et les dépendances, sont compressés dans un fichier de package pkgname. pkg. tar. xz qui peut être installé avec pacman - U ltpackage filegt. Pour commencer avec un nouveau package, vous devez d'abord créer un répertoire de travail vide, (de préférence abs pkgname), changer dans ce répertoire et créer un fichier PKGBUILD. Vous pouvez copier le prototype PKGBUILD usr share pacman PKGBUILD. proto dans votre répertoire de travail ou copier un PKGBUILD à partir d'un package similaire. Ce dernier peut être utile si vous avez seulement besoin de changer quelques options. Attention: N'utilisez que les prototypes PKGBUILD fournis dans le paquet pacman (PKGBUILD-split. proto, PKGBUILD-vcs. proto et PKGBUILD. proto). Les fichiers prototypes dans le paquet abs et dans le référentiel ABS git sont significativement périmés et ne doivent pas être utilisés. Voir FS34485. Définition des variables PKGBUILD Exemple Les PKGBUILDs sont situés dans usr share pacman. Une explication des variables PKGBUILD possibles peut être trouvée dans l'article PKGBUILD. Makepkg définit deux variables que vous devez utiliser dans le processus de construction et d'installation: srcdir Cela indique le répertoire où makepkg extrait ou symbolise tous les fichiers du tableau source. Pkgdir Cela pointe vers le répertoire où makepkg regroupe le paquet installé, qui devient le répertoire racine de votre paquetage intégré. Tous contiennent des chemins absolus, ce qui signifie que vous n'avez pas à vous soucier de votre répertoire de travail si vous utilisez ces variables correctement. Remarque: makepkg. Et donc les fonctions build () et package (), sont censées être non interactives. Les utilitaires ou scripts interactifs appelés dans ces fonctions peuvent casser makepkg. En particulier si elle est appelée avec build-logging activée (-L). (Voir FS13214.) Remarque: Outre le gestionnaire de paquets courant, il peut y avoir des mainteneurs précédents répertoriés ci-dessus comme contributeurs. Fonctions PKGBUILD Il y a cinq fonctions, énumérées ici dans l'ordre où elles sont exécutées si elles existent toutes. Si on n'existe pas, il est simplement ignoré. Note: Ceci ne s'applique pas à la fonction package (), comme cela est requis dans chaque PKGBUILD. Commençant par pacman 4.1, vous pouvez mettre à jour la variable pkgver pendant un makepkg. Pkgver () est exécuté juste après que les sources sont récupérées et extraites. Ceci est particulièrement utile si vous faites des paquets git svn hg etc. Où le processus de construction peut rester le même, mais la source pourrait être mise à jour tous les jours, même chaque heure. La vieille façon de faire était de mettre la date dans le champ pkgver qui, si le logiciel n'était pas mis à jour, makepkg serait encore reconstruire en pensant que la version avait changé. Certaines commandes utiles pour cela sont git décrire. Hg identifier - ni. Etc S'il vous plaît tester ces avant de soumettre un PKGBUILD, comme un échec dans la fonction pkgver () peut arrêter une compilation dans ses pistes. Remarque: pkgver ne peut pas contenir d'espaces ou de tirets (-). Utiliser sed pour corriger cela est courant. Pacman 4.1 introduit la fonction prepare (). Dans cette fonction, les commandes utilisées pour préparer les sources de construction sont exécutées, telles que les correctifs. Cette fonction est exécutée avant la fonction de construction et après l'extraction du package. Si l'extraction est ignorée (makepkg - e), alors préparer () n'est pas exécuté. Remarque: (From man PKGBUILD) La fonction est exécutée en mode bash - e, ce qui signifie que toute commande qui sort avec un état non nul entraîne la sortie de la fonction. Maintenant vous devez implémenter la fonction build () dans le fichier PKGBUILD. Cette fonction utilise des commandes shell communes dans la syntaxe Bash pour compiler automatiquement le logiciel et créer un répertoire pkg pour installer le logiciel. Cela permet à makepkg de compresser des fichiers sans avoir à passer en revue votre système de fichiers. La première étape de la fonction build () est de passer dans le répertoire créé en décompressant l'archive source. Makepkg va changer le répertoire courant en srcdir avant d'exécuter la fonction build (). Par conséquent, dans la plupart des cas, comme suggéré dans usr share pacman PKGBUILD. proto. La première commande ressemblera à ceci: Maintenant, vous devez énumérer les mêmes commandes que vous avez employées quand vous avez manuellement compilé le logiciel. La fonction build () automatise essentiellement tout ce que vous avez fait à la main et compile le logiciel dans l'environnement de compilation fakeroot. Si le logiciel que vous emballez utilise un script configure, il est recommandé d'utiliser --prefix usr lors de la construction de paquetages pour pacman. Beaucoup de logiciels installent des fichiers par rapport au répertoire local usr, ce qui ne devrait être fait que si vous créez manuellement à partir de la source. Tous les paquets Arch Linux doivent utiliser le répertoire usr. Comme on le voit dans le fichier usr pacman PKGBUILD. proto, les deux lignes suivantes ressemblent souvent à ceci: Remarque: Si votre logiciel n'a pas besoin de construire quoi que ce soit, n'utilisez pas la fonction build (). La fonction build () n'est pas requise, mais la fonction package () est. Placez des appels pour effectuer des vérifications et des exercices similaires. Il est fortement recommandé d'avoir check () car il permet de s'assurer que le logiciel a été construit correctement et fonctionne bien avec ses dépendances. Les utilisateurs qui n'en ont pas besoin (et parfois les mainteneurs qui ne peuvent pas réparer un paquet pour le faire passer) peuvent le désactiver en utilisant BUILDENV (check) dans PKGBUILD makepkg. conf ou appeler makepkg avec --nocheck flag. La dernière étape est de mettre les fichiers compilés dans un répertoire où makepkg peut les récupérer pour créer un package. Par défaut, le répertoire pkg est un environnement fakeroot simple. Le répertoire pkg réplique la hiérarchie du système de fichiers racine des chemins d'installation des logiciels. Si vous devez placer manuellement des fichiers sous la racine de votre système de fichiers, vous devez les installer dans le répertoire pkg sous la même structure de répertoires. Par exemple, si vous voulez installer un fichier dans le bin usr. Il doit plutôt être placé sous pkgdir usr bin. Très peu de procédures d'installation exigent que l'utilisateur copie des dizaines de fichiers manuellement. Au lieu de cela, pour la plupart des logiciels, appeler make install le fera. La dernière ligne devrait ressembler à ce qui suit afin d'installer correctement le logiciel dans le répertoire pkg: Remarque: Il arrive parfois que DESTDIR ne soit pas utilisé dans le Makefile, vous devrez peut-être utiliser le préfixe à la place. Si le package est construit avec autoconf automake. Utilisez DESTDIR c'est ce qui est documenté dans les manuels. Si DESTDIR ne fonctionne pas, essayez de construire avec make prefixpkgdir usr install. Si cela ne fonctionne pas, vous devrez regarder plus loin dans les commandes d'installation qui sont exécutées par make lt. Gt install. Dans certains cas impairs, le logiciel s'attend à être exécuté à partir d'un seul répertoire. Dans de tels cas, il est sage de simplement les copier à pkgdir opt. Le plus souvent, le processus d'installation du logiciel va créer des sous-répertoires sous le répertoire pkg. Si ce n'est pas le cas, makepkg générera beaucoup d'erreurs et vous devrez créer manuellement des sous-répertoires en ajoutant les commandes mkdir - p appropriées dans la fonction build () avant l'exécution de la procédure d'installation. Dans les anciens paquetages, il n'y avait pas de fonction package (). Ainsi, les fichiers ont été placés dans le répertoire pkg à la fin de la fonction build (). Si package () n'est pas présent, build () s'exécute via fakeroot. Dans les nouveaux paquetages, package () est requis et s'exécute via fakeroot et build () s'exécute sans privilèges spéciaux. Makepkg --repackage exécute uniquement la fonction package (), donc il crée un fichier. pkg. Fichier sans compiler le paquet. Cela peut gagner du temps, par ex. Si vous avez juste changé la variable dépendante du paquet. Remarque: La fonction package () est la seule fonction requise dans un PKGBUILD. Si vous devez uniquement copier des fichiers dans leurs répertoires respectifs pour installer un programme, ne le placez pas dans la fonction build (), placez-le dans la fonction package (). Remarque: La création de liens symboliques est un processus légèrement maladroit dans la fonction package (). En utilisant l'approche naïve ln - s de foo à goo se traduira par un symlink brisé pour le répertoire de construction. La façon de créer un lien approprié est de le créer pointant vers une source initialement brisée, ln - s de foo à goo. Une fois le paquet installé, le lien pointe vers la bonne adresse. Test du PKGBUILD et du paquetage Lorsque vous écrivez la fonction build (), vous devrez tester vos modifications fréquemment pour vous assurer qu'il n'y a pas de bugs. Vous pouvez le faire en utilisant la commande makepkg dans le répertoire contenant le fichier PKGBUILD. Avec un PKGBUILD correctement formaté. Makepkg va créer un paquet avec un PKGBUILD brisé ou non terminé. Cela provoquera une erreur. Si makepkg se termine avec succès, il placera un fichier nommé pkgname-pkgver. pkg. tar. xz dans votre répertoire de travail. Ce paquet peut être installé avec la commande pacman - U. Toutefois, le fait qu'un fichier de package a été construit n'implique pas qu'il soit entièrement fonctionnel. Il pourrait éventuellement contenir uniquement le répertoire et aucun fichier si, par exemple, un préfixe a été spécifié de manière incorrecte. Vous pouvez utiliser les fonctions de requête pacmans pour afficher une liste des fichiers contenus dans le paquet et les dépendances requises avec le fichier pacman - Qlp et le fichier pacman - Qip respectivement. Si le package semble sain, alors vous avez terminé Cependant, si vous prévoyez de libérer le fichier PKGBUILD, il est impératif que vous vérifiez et double-vérifier le contenu du tableau dépend. Assurez-vous également que les binaires du package fonctionnent parfaitement. Il est ennuyeux de libérer un package qui contient tous les fichiers nécessaires, mais se bloque en raison d'une option de configuration obscure qui ne fonctionne pas bien avec le reste du système. Si vous allez seulement compiler des paquets pour votre propre système, cependant, vous n'avez pas besoin de s'inquiéter trop au sujet de cette étape d'assurance de qualité, puisque vous êtes la seule personne qui souffre des erreurs, après tout. Vérification de l'intégrité du paquet Après avoir testé la fonctionnalité du paquet, vérifiez les erreurs en utilisant namcap. Vérifiez le contenu de PKGBUILD pour les erreurs courantes et la hiérarchie des fichiers de paquetage pour les fichiers inutiles misplaced Scanner tous les fichiers ELF dans le paquet en utilisant ldd. Déclarant automatiquement quels paquets avec les bibliothèques partagées requises manquent dans les dépendances et qui peuvent être omis en tant que dépendances transitives Recherche heuristique de dépendances manquantes et redondantes et bien plus encore. Prenez l'habitude de vérifier vos paquets avec namcap pour éviter d'avoir à réparer les erreurs les plus simples après la soumission du paquet. Soumettre des paquets à l'AUR Veuillez lire les directives de l'utilisateur AUR Soumettre des paquets pour une description détaillée du processus de soumission. Téléchargez l'archive source du logiciel que vous souhaitez empaqueter. Essayez de compiler le paquet et de l'installer dans un répertoire arbitraire. Copier sur le prototype usr share pacman PKGBUILD. proto et le renommer à PKGBUILD dans un répertoire de travail temporaire - de préférence abs. Modifiez le PKGBUILD en fonction des besoins de votre colis. Exécutez makepkg et vérifiez si le package résultant est correctement construit. Sinon, répétez les deux dernières étapes. Avant de pouvoir automatiser le processus de construction du paquet, vous devriez l'avoir fait manuellement au moins une fois, sauf si vous savez exactement ce que vous faites à l'avance. Dans ce cas, vous ne seriez pas lire cela en premier lieu. Malheureusement, bien qu'un bon groupe d'auteurs de programme s'en tenir au cycle de construction en 3 étapes de. Configure make make install, ce n'est pas toujours le cas, et les choses peuvent devenir vraiment laides si vous devez appliquer des correctifs pour que tout fonctionne du tout. Règle générale: Si vous ne pouvez pas obtenir le programme à compiler à partir du tarball source et le faire installer lui-même dans un sous-répertoire temporaire défini, vous n'avez même pas besoin de l'essayer. Il n'y a pas de poussière de lutin magique dans makepkg qui fait disparaître les problèmes de source. Dans quelques cas, les packages ne sont même pas disponibles en tant que source et vous devez utiliser quelque chose comme sh installer. run pour l'exécuter. Vous devrez faire un peu de recherche (lire les README, les instructions d'installation, les pages de manuel, peut-être les ebuilds de Gentoo ou d'autres installateurs de paquetages, peut-être même les MAKEFILE ou le code source) pour le faire fonctionner. Dans certains cas vraiment mauvais, vous devez modifier les fichiers source pour l'obtenir à travailler à tous. Cependant, makepkg doit être complètement autonome, sans intervention de l'utilisateur. Par conséquent, si vous avez besoin de modifier les makefiles, vous devrez peut-être regrouper un patch personnalisé avec le PKGBUILD et l'installer à partir de la fonction prepare (), ou vous devrez peut-être émettre des commandes sed à partir de la fonction prepare (). Lignes directrices plus détaillées
No comments:
Post a Comment