Si la condition à l'intérieur de l' %section Fichiers sur un fichier SPEC
Je suis un peu une nouvelle à l'écriture des fichiers de spec et la construction du RPM. Actuellement, j'ai un RPM qui est censé déployer certains fichiers dans 1 des 2 répertoires qui varient avec le système d'exploitation.
Comment puis-je, au sein de l' %section fichiers, de les vérifier? Je ne peux pas utiliser de variable...je ne peux pas vérifier les deux chemins d'accès parce que l'on va échouer...j'ai essayé de définir une macro plus tôt dans l' %section installer mais il sera définie qu'une seule fois et de ne pas être redéfinie à chaque installation RPM...
que puis-je faire ici?
Grâce
Vous devez vous connecter pour publier un commentaire.
La
%files
section peut avoir des variables, mais généralement, ce serait quelque chose comme votre chemin, qui est défini de sorte que vous n'avez pas à répéter un tas. donc%{long_path}/file_name
, où long_path a été définie plus haut dans le fichier spec. le%files
section est l'information qui va dans la base de données RPM, et est créé lorsque vous générez le RPM de sorte que vous ne serez pas en mesure de modifier ces valeurs en fonction des informations de la machine lors de l'installation.Si vous voulez vraiment pour ce faire, vous pouvez inclure un fichier tar à l'intérieur de l'archive principale qui est extrait selon certaines conditions (depuis le fichier de spec est juste bash). Maintenant, gardez à l'esprit que c'est une idée terrible. Les fichiers ne seront pas suivis par la base de données RPM, donc quand vous supprimez le RPM ces fichiers existent toujours.
En réalité, vous devez construire deux Rpm, ceci permettra un meilleur soutien pour aller de l'avant dans l'avenir dans le cas où vous avez à la main vers quelqu'un, ainsi que de la préservation de votre propre santé mentale d'un an à partir de maintenant, quand vous avez besoin de mettre à jour le RPM.
J'ai eu une situation similaire, où des fichiers supplémentaires ont été inclus dans le RPM dans le cas d'une version de DÉBOGAGE sur et au-dessus de tous les fichiers dans la version RELEASE.
L'astuce est de passer d'une liste de fichiers à %des fichiers alongwith une liste de fichiers-dessous:
Dans votre cas, vous pouvez tirer parti de l' %si conditionnelle dans l' %section installation, de l'utilisation de l'OS comme une spécification de la variable passée à
rpmbuild
(ou la détecter dans les spécifications RPM lui-même) et passer ensuite le fichier contenant la liste de%files
Forrest suggère la meilleure solution, mais si ce n'est pas possible en pratique, vous pouvez détecter la version du système d'exploitation à l'exécution dans l'après-section installer, déplacer le script à l'emplacement approprié, puis le supprimer après désinstallation, par exemple:
Beaucoup plus sujettes à erreur que de construire des différents tours sur différents Systèmes d'exploitation, mais à l'échelle d'un peu mieux si vous avez besoin de l'appui de nombreux différents Systèmes d'exploitation.
C'est comment j'ai résolu mon problème
étape 1 :
Étape 2: dans la section installer
Étape 3:dans la section fichiers
Que c'est
Il fonctionne.
PS : je ne peux pas vous donner le code complet en lui donnant tout l'utile extrait de