Bonjour,

Après des jours de recherche et d'essais non validés, je décide donc de demander un grand HELP sur ce forum..
Alors voilà, je dois créer un paquet RPM pour une application complexe développée par l'entreprise où je travaille (je suis apprenti).
Je réussi sans problème à installer l'application avec un paquet rpm, avec l'arborescence que je veux. Je bloque sur les mises à jours..
En effet, lorsque je veux mettre à jour l'application (prenons l'exemple qu'un seul fichier ai été changé), RPM supprime l'ancienne release et ne me garde que les changements effectués.

J'aimerai que RPM remplace que les fichiers modifiés, sans avoir à mettre dans le paquet RPM toutes les sources, même celles non modifiées..

En gros, j'ai un paquet avec 3 fichiers (toto.conf, toto.e et toto.doc).
Pour une première installation et pour un changement de version, j’intègre dans mon paquet l'ensemble des fichiers.

Par contre, si je ne veux changer que toto.conf par exemple, j'aimerai juste envoyer un paquet rpm avec ce seul fichier modifié, sans avoir à envoyer toutes les sources, où à les décupler sur mon pc pour créer un patch.

En effet, l'application est tellement lourde qu'il vaudrait mieux éviter..

Je vous remercie d'avance pour vos réponses..


PS : Si quelqu'un pourrait aussi me dire la technique pour intégrer un script interactif dans la post-installation.. ça serai génial!

Cordialement,
Théo
Merci pour ta réponse nouvo09 !

Je vais creuser sur ces .drpm !

Je te tiens au courant de mon avancée 🙂
Bonjour,

Après avoir creusé sur les .drpm et createrepo, j'ai réussi à installer des révisions avec uniquement les changements en utilisant l'utilitaire yum.

Cependant cela pose encore des problèmes : en effet cela suppose que le client devrait installer createrepo, mettre en place un repo et créer une configuration locale de yum (ce qui n'est pas difficile je vous l'accorde).

De plus, l'update marche uniquement avec le premier deltarpm qu'on lui passe dans le repo, mais lorsque le deuxième arrive, yum m'indique des erreurs communes comme "No parckages marked" ou "no more mirror to try"

Je vais essayer de creuser encore plus sur ces deltas, mais si vous voyez ou même entrevoyez une solution intermédiaire je suis prenant..
Merci d'avance !
Lorsque je crée un .drpm
$ makedeltarpm old.rpm new.rpm delta.drpm
Dans "new.rpm" ne se trouve que le fichier ayant été modifié par rapport à old.rpm.
Je rajoute ensuite le delta.drpm dans mon dépôt yum, puis je mets à jour.
$ yum update 
Mon paquet se met bien à jour. Cependant il écrase tout les fichiers et ne conserve que le fichier changé!
Comme RPM fait lorsqu'il efface complètement l'ancienne version..

Lorsque je crée un .drpm à partir d'un new.rpm complet, le delta est aussi lourd que ce dernier, je n'y vois donc plus l'utilité..
Je cherche de nouvelles solutions..

Je viens de faire la découverte de %posttrans et %pretrans, mais ils sont malheureusement très mal documentés..

A quoi servent ces deux sections ?

D'avance merci..
Bien, j'ai enfin trouvé la solution à mon problème.
Elle est bizarre, mais la voici :

Pour une première installation, et/ou un changement de version j'utilise -Uvh, ce qui va me supprimer tout mes anciens paquets et les mettre à jour à la nouvelle version.

Pour des petits correctifs, et afin de ne pas renvoyer les sources entières à chaque fois, j'utilise rpm -ivh.
De plus, on pourra voir toutes les releases effectuées entre deux versions dans la base de donnée.

Je n'y vois pour l'instant aucun inconvénient d'utiliser cette technique à part surcharger la db si un nombre trop important de correctifs est envoyé.
Si vous y voyez un inconvénient, ça serait gentil de m'en faire part.

En attendant je mets ce sujet en résolu.
RPMnoobs wrote: Je vais essayer de creuser encore plus sur ces deltas, mais si vous voyez ou même entrevoyez une solution intermédiaire je suis prenant..
Merci d'avance !
Bonjour,

C'est peut-être hors sujet, mais tu peux peut-être découper ton rpm, par exemple en 1 rpm applicatif, 1 rpm de config, 1 rpm de doc.