Comment puis-je utiliser rpm de mise à jour/remplacer des fichiers existants?
J'ai plusieurs applications que je souhaite déployer à l'aide de rpm. Certains des fichiers dans mon dossier de candidature déploiements de remplacer les fichiers à partir d'autres packages déployés. Tout simplement, y compris les nouveaux fichiers dans le package de déploiement sera la cause de rpm conflits.
Je suis à la recherche de la bonne façon d'utiliser rpm de mise à jour/remplacer les fichiers déjà installés.
J'ai déjà trouvé quelques solutions, mais rien ne semble tout à fait raison.
- Maintenir des versions personnalisées de la rpm contenant les fichiers d'origine.
Cela semble comme une grande quantité de travail pour une petite récompense même si elle se sent de moins en moins comme un hack que certains des autres solutions possibles.
- Inclure les fichiers dans le rpm avec un autre nom et copiez-les dans la section de poteau.
Cela pourrait fonctionner, mais signifie jonchent le système avec de multiples copies des fichiers. Il est également à des moyens supplémentaires de maintenance dans le rpm construire spec pour chaque fichier.
- Utiliser wget dans le post de la section de remplacer les fichiers originaux de certains connus serveur.
Ceci est similaire à la copie de la technique, mais les fichiers ne serait même pas vivre dans le rpm. Ce pourrait agir comme un beau centre de configuration de l'autorité de si.
- Déployer les fichiers en tant que nouveaux fichiers, puis utiliser des liens symboliques pour remplacer les originaux.
C'est aussi similaire à la copie technique, mais avec moins d'encombrement. Le problème ici est que certains fichiers ne se comportent bien comme des liens symboliques.
Vous devez vous connecter pour publier un commentaire.
Au meilleur de ma connaissance, le RPM n'est pas conçu pour permettre la mise à jour /remplacer des fichiers existants, tout ce que vous faire est d'aller à un hack.
Des options de la liste, je choisirais #1 comme étant la moins mauvaise hack si la cible sont des systèmes à qui je l'ai d'administration (comme vous le dites, c'est plus de travail mais c'est la solution la plus propre), et une combinaison de #2 et #4 (liens symboliques si possible, des copies où pas) si je suis de la création du Rpm pour les autres systèmes (pour éviter d'avoir à distribuer un tas de Rpm, mais je préfère le faire très clair dans les docs de ce que je fais).
Vous n'avez pas décrit les fichiers qui doivent être mis à jour ou remplacé et la façon dont ils doivent être mis à jour. Selon les réponses à ces questions, vous pouvez avoir un couple d'autres options:
.d
sous-répertoire. Par exemple, Apache utilise/etc/httpd/conf/httpd.conf
et/etc/httpd/conf.d/*.conf
, de sorte que votre Rpm pourrait déposer des fichiers sous/etc/httpd/conf.d
au lieu de modifier/etc/httpd/conf/httpd.conf
. Et si les fichiers que vous avez besoin de modifier des fichiers de configuration qui ne suivent pas ce modèle mais il pourrait en être faite, vous pouvez suggérer aux mainteneurs de paquets qu'ils ajoutent cette capacité; ce ne serait pas vous aider immédiatement, mais rendrait les futures versions plus facile.sendmail
etlpr
qui peut être fourni par plusieurs packages, laalternatives
système (voirman alternatives
) permet de plus de 1 TR /min qui fournit ces services publics à être installées côte à côte. Encore une fois, si les fichiers que vous avez besoin de modifier sont des utilitaires de ligne de commande qui ne suivent pas ce modèle mais il pourrait en être faite, vous pouvez suggérer aux mainteneurs de paquets qu'ils ajouter cette fonctionnalité./opt
seulement je ne voudrais pas avoir à marcher sur les fichiers installés par d'autres admins " Rpm.Vous pouvez également exécuter
rpm -U --replacefiles --replacepkgs ...
, qui va vous donner ce que vous voulez.Voir ici pour plus d'infos sur RPM %des fichiers directives:
http://www.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html
Vous pouvez utiliser les arguments de la poste %et %pré sections dans le RPM scriptlets pour déterminer si vous effectuez l'installation, la mise à niveau ou la suppression de paquets.
Si $1 est 0 - ensuite, nous sommes de la suppression de l'ancien. Le ciblage 0 paquets installés.
Si $1 est 1 - alors nous sommes en train d'installer de nouveaux trucs. Le ciblage d'un total de 1 paquet à installer.
Si $1 est 2 ou plus, alors nous sommes la mise à niveau de ce paquet et $1 représente le nombre de paquets déjà installés.
Ces sections d'aide à la gestion des fichiers entre les versions.
Garder une trace de ce que vous faites entre les versions et d'envisager ce que l'on pourrait faire si ils ont été de sauter une version ou deux.
Avoir de la considération pour ces choses, et vous devriez être bon d'aller!