2010-03-08 6 views
2

Hey! J'ai un paquet générique qui nécessite un fichier de configuration et plusieurs paquets qui peuvent fournir le fichier de configuration.Forcer des paquets virtuels en conflit

Ainsi, pour définir "myserver", j'ai:

myserver.spec

Nécessite: myserver-config


(le paquet de configuration) mon_serveur-de première config.spec

Nom: myserver-first-config

Requiert: mon_serveur

prévoit: mon_serveur-config


(un autre paquet de configuration) mon_serveur-deuxième-config.spec

Nom: mon_serveur-deuxième-config

Nécessite: mon_serveur

Fournit: myserver-config


Et c'est génial, mais je veux m'assurer que exactement l'un de ces paquets de configuration est installé. Donc, si j'essaie d'installer myserver-second-config quand myserver-first-config est déjà installé, j'obtiens une erreur. Puis-je simplement utiliser "Conflicts: myserver-config" dans myserver- {first, second} -config.spec? Un paquet peut-il entrer en conflit avec lui-même? Je me sens comme il y a un «bon» moyen de le faire ...

Merci!

Répondre

3

Vous avez probablement résolu ce problème sur votre propre - dans ce cas, il est agréable de poster la réponse ici, pour aider les visiteurs de Google capricieuses :) Sinon:

  • Au RPM v5, un paquet ne peut pas conflit avec lui-même, car cela empêcherait l'installation du paquet.
  • Ce que vous demandez est un système 'alternatives', où plusieurs paquets peuvent fournir le même fichier. Pour implémenter ceci, faites en sorte que chaque paquet soit en conflit avec les autres alternatives.

Dans mon_serveur-first-config:
conflits: myserver-deuxième configuration

Dans mon_serveur-deuxième-config:
conflits: myserver-first-config

Si vous deviez ajouter une troisième configuration, cela deviendrait:

mon_serveur-first-config:
conflits: myserver-deuxième-config mon_serveur tiers-config

mon_serveur-deuxième-config:
conflits: mon_serveur-premier-config mon_serveur tiers-config

mon_serveur tiers-config:
conflits: mon_serveur-premier-config mon_serveur-deuxième-config

Cette syntaxe est nécessaire parce que les paquets peuvent partiellement conflit - et il est préférable d'être explicite sur les conflits. Si vous n'ajoutez pas de nouveaux fichiers de configuration souvent, cette solution est complètement réalisable.