2 votes

Comment construire un RPM pour toutes les versions de Centos 7.X ?

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 ?

5voto

snowdude Points 2790

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.

2voto

Aaron Copley Points 12225

À 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.

0voto

Chris Maes Points 560

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à).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X