Woofy
Pour les bons tuyaux me demander
Messages : 26 196 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 22 septembre 2006 - 13 h 28 m 33 s |
|
|
Bonjour tout le monde !
Voila, j'aimerais créer des packages à partir de l'application que j'ai créée. Etant sous ubuntu, j'ai donc commencé par créer le .deb. Jusque là tout va bien, ca marche.
Maintenant, il me faudrait créer un RPM. J'ai pas encore essayé, je suis en train d'installer une fedora core 5 en machine virtuelle pour le faire. En attendant, je lis ce petit how-to : http://www.rpm.org/RPM-HOWTO/build.html
Et un truc m'embête : le fichier spec est un peu équivalent au fichier control sur les .deb. Donc je m'attendais a retrouver dans ce fichier l'endroit où on met les dépendances aux autres paquets (on en a beaucoup... c'est pour ça qu'on fait des packets). Or je ne trouve pas où on met ces dépendances. J'ai parcouru le tuto en entier une fois pour voir si cela ne serait pas dans un autre fichier, mais je n'ai rien trouvé.
Alors je ne suis pas un habitué des RPM, car je n'ai toujours utilisé que des distributions linux basées sur debian. Donc est-ce que j'ai loupé quelque chose ? Où met-on les dépendances aux autres paquets ?
|
|
| |
Totalement inutile, donc completement indispensable 
|
loz
Put something exciting between your legs!
Messages : 7 536 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 22 septembre 2006 - 13 h 34 m 55 s |
|
|
|
|
|
| |
« Vivre simplement, pour que simplement d’autres puissent vivre. » (Gandhi)
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 196 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 22 septembre 2006 - 13 h 46 m 15 s |
|
|
Ok, ca répond presque a ma question. Ca se gère comme les .deb donc pour les utiliser je devrais arriver a me débrouiller. Par contre, on y met où ? Dans le fichier spec? Et a quel endroit ? Juste après %install ?
|
|
| |
Totalement inutile, donc completement indispensable 
|
loz
Put something exciting between your legs!
Messages : 7 536 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 22 septembre 2006 - 14 h 04 m 58 s |
|
|
Je n'en sais pas plus, désolé.
|
|
| |
« Vivre simplement, pour que simplement d’autres puissent vivre. » (Gandhi)
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 196 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 22 septembre 2006 - 17 h 25 m 04 s |
|
|
Ah bah dans l'attribut %files du fichier spec !
La solution ici : http://www.rpm.org/max-rpm/s1-rpm-inside-files-list.html
EDIT : en fait j'ai dit une connerie, c'est dans les Tags au debut, avant %prep.
Bon bah me reste plus qu'a trouver et installer une distrib pas basee sur debian pour tester le tout !
|
|
| |
Message édité 2 fois, la dernière par Woofy le 22 septembre 2006 - 18 h 33. |
| |
Totalement inutile, donc completement indispensable 
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 23 septembre 2006 - 20 h 12 m 02 s |
|
|
Les RPM, c'est vraiment le carnage à faire. La directive files t'oblige à lister TOUS les fichiers APRES l'installation, alors que l'installation effective n'a pas encore lieu...
Bref, la seule solution pour y arriver, c'est de faire un find sur tous les fichiers déposés par l'archive dans une directive post et récupérer tout ça dans 'files'.
Bon courage, j'avais joué avec les RPM, c'est pète-nouilles...
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 196 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 23 septembre 2006 - 20 h 25 m 28 s |
|
|
bah y a quoi qui est depose ? Les .so et le binaire ?
|
|
| |
Totalement inutile, donc completement indispensable 
|
nigaiden
Messages : 514 Inscrit le 31/12/02
Ville : Lyon
Non connecté
|
|
Posté le 23 septembre 2006 - 22 h 37 m 13 s |
|
|
J'ai eu l'occasion de faire des SlackBuild (pour Slackware) ainsi que des RPM, je préfère vraiment ces derniers.
Je ne sais pas si tu es réellement obligé d'installer une Fedora pour faire ton RPM car tu as certainement la possibilité de faire un apt-get install rpm (ou équivalent). Cela dit, c'est vrai que c'est mieux de tester son RPM sur un système cible.
Je te conseille de te faire un fichier ~/.rpmmacros et de construire ton paquet comme utilisateur normal. Voilà à quoi ressemble le mien:
1. %packager Chris
2.
3. %_topdir /home/chris/Development/RPMS
4. %_tmppath /tmp/chris/rpm
5. %_buildroot %{_tmppath}/%{name}-root
6. %_builddir %{_tmppath}/build
7.
8. %_rpmtopdir %{_topdir}/%{name}
9. %_sourcedir %{_topdir}/SOURCES
10. %_specdir %{_topdir}/SPECS
11. %_rpmdir %{_topdir}/RPMS
12. %_srcrpmdir %{_topdir}/SRPMS
Ensuite, tu écris le squelette de ton .spec et tu recopies plus ou moins les étapes nécessaires à la construction et à l'installation dans le .spec (que tu dois déjà avoir pour ton .deb).
Je ne suis qu'à moitié d'accord avec notre modérateur pour l'obtention de la liste des fichiers. Normalement c'est assez simple car on construit une première fois le paquet à la main (pour savoir quoi mettre dans le .spec). La dernière étape est l'installation ; il suffit de faire quelque chose comme "make install prefix=/tmp/chris/appli" puis un "find /tmp/chris/appli" pour avoir la liste des fichiers installés. Il ne reste qu'à copier-coller dans le .spec, remplacer les "/tmp/chris/appli" par "%{buildroot}", puis enjoliver un peu en remplaçant les "/usr/bin/titi, /usr/bin/toto/, /usr/bin/tata" par "/usr/bin/*" (ou mieux, par "%{_bindir}/*"), et c'est prêt.
J'avais dans l'idée de mettre ici un tutoriel pour faire ses RPMS, car je n'ai jamais trouvé regroupées toutes les informations recherchées. Peut-être qu'un jour j'arriverai à me forcer à l'écrire :-)
|
|
| |
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 196 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 septembre 2006 - 01 h 10 m 09 s |
|
|
Bah en fait, on va faire monter un serveur a l'école où ils nous feront tourner un peu toutes les distribs dessus. Fedora, Mandriva, Debian, ... comme ça on fera nos tests, vu que y a pas une seule distrib qui a les mêmes librairies (enfin si mais pas avec les mêmes noms).
Pour la liste des fichiers, vu qu'on doit en avoir pas loin d'une cinquantaine avec tout les plugins et les librairies, suffit de le compiler dans un répertoire où il sera tout seul donc la facile aussi (par contre, automatiser ça sans faire 2 compil... quoique...).
Sinon pour la compilation, c'est simple :
./autogen.sh
./configure --prefix=/usr
make
make install
Enfin bon, faire un .deb c'est quand même hachement plus simple, surtout que ca marchera sur tout ce qui est basé debian normalement, car les noms des librairies sont les mêmes ^^.
En fait, comme on devra laisser le projet après a d'autres et qu'ils évitent de recommencer toute cette recherche, le but serait d'automatiser le tout avec des .sh . Bref, je vais commencer par écrire un tutoriel spécifique pour faire les .deb et les .rpm pour cette appli !
|
|
| |
Totalement inutile, donc completement indispensable 
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 24 septembre 2006 - 14 h 41 m 52 s |
|
|
Le 23 septembre 2006 - 22 h 37, nigaiden a écrit :
Je ne suis qu'à moitié d'accord avec notre modérateur pour l'obtention de la liste des fichiers. Normalement c'est assez simple car on construit une première fois le paquet à la main (pour savoir quoi mettre dans le .spec). La dernière étape est l'installation ; il suffit de faire quelque chose comme "make install prefix=/tmp/chris/appli" puis un "find /tmp/chris/appli" pour avoir la liste des fichiers installés. Il ne reste qu'à copier-coller dans le .spec, remplacer les "/tmp/chris/appli" par "%{buildroot}", puis enjoliver un peu en remplaçant les "/usr/bin/titi, /usr/bin/toto/, /usr/bin/tata" par "/usr/bin/*" (ou mieux, par "%{_bindir}/*"), et c'est prêt.
|
Dans le cas d'un RPM from scratch, oui, évidemment, cette méthode marche bien.
Cependant, pas de bol, si tu as un RPM d'un logiciel foo en version n, si tu veux repackager ton RPM pour le foo en version n+1, il va falloir que tu repasses par cette méthode, ou alors tu fais le gros pari que les fichiers déposés sont les mêmes...
C'est clair qu'en amateur, RPM ca va très bien. Mais en production, je te mets au défi d'assurer la gérance de tous tes RPMs avec ta méthode, c'est un cauchemar...
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 196 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 septembre 2006 - 18 h 23 m 09 s |
|
|
bah en fait, je pense qu'on ne va pas patcher le RPM mais qu'on va le recréer from scratch a chaque fois. Vu qu'on change toujours tout a commencer par l'install et ce qui est inclus dedans ...
|
|
| |
Totalement inutile, donc completement indispensable 
|
nigaiden
Messages : 514 Inscrit le 31/12/02
Ville : Lyon
Non connecté
|
|
Posté le 24 septembre 2006 - 21 h 46 m 52 s |
|
|
Cependant, pas de bol, si tu as un RPM d'un logiciel foo en version n, si tu veux repackager ton RPM pour le foo en version n+1, il va falloir que tu repasses par cette méthode, ou alors tu fais le gros pari que les fichiers déposés sont les mêmes...
C'est clair qu'en amateur, RPM ca va très bien. Mais en production, je te mets au défi d'assurer la gérance de tous tes RPMs avec ta méthode, c'est un cauchemar...
|
Je dois être trop amateur alors  car cela me semble être une méthode suffisante (je n'ai jamais fait de RPM pour distribution en milieu professionnel).
En pratique on se retrouve souvent avec des listes assez simples. Voila par exemple ce que j'ai en RPM maison pour la lib oniguruma:
1. %files
2. %defattr(-, root, root)
3. %doc AUTHORS COPYING HISTORY index.html INSTALL INSTALL-RUBY
4. %doc MANIFEST-RUBY README README.ja doc
5. %{_bindir}/*
6. %{_libdir}/*
7. %{_includedir}/*
Je ne pense pas que d'une version à l'autre cela change beaucoup, et s'il y a quand même changement rpmbuild te le dit (du moins sur une SUSE 10.0).
|
|
| |
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 196 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 01 octobre 2006 - 16 h 47 m 35 s |
|
|
Ca y est ça compile !
Pfff, galère pour récupérer toutes les dépendances !
Bon sinon, pour les fichiers, un find . | wc -l a la racine du répertoire dans lequel je l'ai compilé me donne... 496 !
Mama mia ! Ca va faire long dans le fichier spec !
Bon par contre, exactement la mise en place des répertoires ça se passe comment ?
J'ai lu qu'il faut des répertoires SPEC, SOURCES, RPM, SRPM, ... si je fait un configure --prefix=/home/Woofy/wired-devel/ (pour avoir la liste de tout mes fichiers), alors ces répertoires je les met où ?
|
|
| |
Totalement inutile, donc completement indispensable 
|