Le développeur a fourni la source avec le fichier spec. Est-il possible de construire un RPM qui fonctionne sur toutes les versions de CentOS 7.x et est-ce une bonne idée ?
Réponses
Trop de publicités?Du point de vue d'un développeur de paquets, CentOS = = Red Hat Enterprise Linux (sans le contenu et les logos Red Hat sous licence/droit d'auteur et sans les niveaux de support d'entreprise).
Vous pouvez donc utiliser la vaste documentation de Red Hat (une bonne vue d'ensemble aquí )
Compatibilité au sein d'une version majeure
L'un des principaux objectifs de la famille de produits Red Hat Enterprise Linux est de fournir un environnement d'exécution stable et cohérent pour les applications tierces. Afin de soutenir cet objectif, Red Hat cherche à préserver la compatibilité binaire des applications, la compatibilité des fichiers de configuration et la compatibilité des fichiers de données pour toutes les mises à jour de paquetages émises dans une version majeure. Par exemple, une mise à jour de paquetage de Red Hat Enterprise Linux 6.1 à Red Hat Enterprise Linux 6.2, ou une mise à jour de paquetage qui corrige une vulnérabilité de sécurité identifiée, ne devrait pas interrompre la fonctionnalité des applications déployées. pour autant qu'ils respectent les interfaces binaires d'application standard. (ABI).
<a href="https://access.redhat.com/solutions/5154" rel="nofollow noreferrer">source</a>
Si le développeur du paquet a suivi les instructions de la Guide du développeur y guide de compatibilité des applications il devrait alors être possible de construire un seul paquetage binaire RPM qui fonctionne sur tous les niveaux de correctifs / versions mineures d'une version majeure de CentOS / RHEL.
Et c'est certainement une bonne idée.
À moins que le paquet ne dépende d'une autre mise à jour de bibliothèque ou de quelque chose qui a été introduit dans une version intermédiaire, une seule construction pour l'ensemble de CentOS 7 suffira.
Vous pouvez en voir des exemples dans les dépôts de mises à jour. De nombreux paquets utilisent une étiquette %dist qui est el7 mais vous pouvez également en voir certains qui sont étiquetés el7_4 .
Voir : http://vault.centos.org/7.4.1708/updates/x86_64/Packages/
Vous pouvez utiliser des conditionnels dans votre fichier de spécification pour définir certaines dépendances en fonction de la valeur de la balise %dist. Ceci est généralement fait pour gérer les différences de dépendances entre les versions majeures, mais vous pourriez l'adapter à une version ponctuelle.
%if "%{dist}" == "el7"
Require: package-versionA
%end
%if "%{dist}" == "el7_4"
Require: package-versionB
%end
Note : Il s'agit d'un pseudo-code non testé. Vous devrez peut-être faire des modifications, mais cela devrait être proche.
Vous devrez alors vous assurer que votre environnement de construction fournit la valeur correcte de la balise dist au processus de construction. Il y a plusieurs façons de le faire et nous devons en savoir plus sur votre environnement de compilation.
Tous les Centos 7.x sont juste des mises à jour mineures, donc je ne pense pas que vous ayez besoin de faire la différence dans vos rpms. Tous les paquets Centos sont suffixés par el7
et non avec el7.6
ou similaire, donc je pense que vous pouvez le faire en toute sécurité (nous le faisons depuis au moins deux ans déjà).