Comment creer un rpm ? [Fedora Core] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 28-04-2005 à 13:23:25
titre à la con. On ne sait pas ce que tu veux faire, quel est le programme concerné (ça touche à samba mais après ?). A revoir donc.
Marsh Posté le 28-04-2005 à 14:27:23
Désolé, surtout que je suis partisant pour des titres explicites ...
Je pense que maintenant c'est bon ...
je parle pas de samba meme, ca peut etre n'importe quel fichier, mais dans mon cas un des fichiers de conf de samba
Marsh Posté le 28-04-2005 à 14:34:07
un rpm c'est 2 choses, un tarball des fichiers ou des sources + un fichier de description du paquet (nom, version, dépendances, fichiers, choses à faire avant et après installation, changelog etc) avec l'estension .spec
ta commande (man rpm) permet de créer un paquet RPM binaire à partir des sources et d'un fichier spec situé dans le tarball.
je ne sais pas ce que tu veux modifier mais ton paquet binaire va aller se placer dans /usr/src/redhat/RPM/RPMS/i586 (ou une autre archi si tu compiles pour une autre). Pour les fichiers qui seront dans le RPM, ils se placeront selon les options passées au ./configure dans le spec.
Marsh Posté le 28-04-2005 à 14:41:55
j'allais oublier, 2 tutos pour apprendre à faire des RPMS :
http://www.rpm.org/RPM-HOWTO/ et http://qa.mandrakesoft.com/twiki/b [...] n/RpmHowTo
le second est beaucoup plus complet et actuel que le premier mais il y a quelques points qui sont un peu spécifiques Mandriva et pourraient ne pas convenir à d'autres distribtuions.
Marsh Posté le 28-04-2005 à 15:01:32
et bien dans mon cas, ca sera un fichier tar contenant mes fichiers add, smb.conf et non pas des sources avec le fichier de description
Citation : je ne sais pas ce que tu veux modifier mais ton paquet binaire va aller se placer dans /usr/src/redhat/RPM/RPMS/i586 (ou une autre archi si tu compiles pour une autre). Pour les fichiers qui seront dans le RPM, ils se placeront selon les options passées au ./configure dans le spec. |
je ne veux pas compiler, je veux juste copier 2-3 fichiers dans le systeme. Je sais que c'est con de faire un rpm juste pour ca, mais on m'a demandé de le faire.
en faisant un rpm -ivh mon_install.rpm, j'aimerais que cela me copie les fichiers en executant cette commande par exemple :
mkdir /etc/www/html/script &&
cp add /etc/www/html/script/ &&
cp smb.conf /etc/samba/
Marsh Posté le 28-04-2005 à 15:07:06
c'est pas forcément stupide de faire ça, ça permet d'utiliser un système d'installation automatique par ex.
pour moi, le plus simple que je vois c'est de faire un rpm qui contient juste tes fichiers, tu les copies dans un emplacement libre sur ton système et ensuite, tu utilises un script de post installation pour les mettre à leur place finale.
je te conseille d'ailleurs d'utiliser la macro %doc pour faire ça
ce qui devrait donner un .spec de ce type :
|
c'est pas génial mais ça devrait marcher
Marsh Posté le 28-04-2005 à 15:27:53
une fois corrigé, ça donne ça (c'est toujours pas parfait, mais c'est l'idée et ça marche) :
Summary: Fichiers de conf |
Marsh Posté le 28-04-2005 à 16:07:23
oki, donc dans mon cas, ca serait
je copie le fichier add et smb.conf dans un repertoire se nommant smbconf-0.1
puis je compresse le repertoire
tar cjvf smbconf-0.1.tar.bz2 ./smbconf-0.1 |
pour ce que est de %doc, non ?
Citation : %doc est utiliser pour marquer la documentation dans le paquetage source que vous voulez installer dans un paquetage binaire. Les documents seront installés dans /usr/doc/$NAME-$VERSION-$RELEASE. Vous pouvez lister plusieurs documents sur la ligne de commande avec cette macro, ou les lister séparément en utilisant une macro pour chaque |
source : http://www.freenix.fr/unix/linux/H [...] WTO-6.html
je ne comprends pas tes 2 commande :
%defattr(-,root,root,0755) |
oki pour %post
donc dans mon cas, ca sera :
%post |
Marsh Posté le 28-04-2005 à 16:16:56
pour le %doc, ça permet de copier les fichiers sans avoir besoin de mettre un script d'install dans le tar.bz2 ; c'est un détournement de la fonction initiale.
pour le defattr, c'est pour donner les permissions/proprio qui vont bien, là, ça doit pas être bon pour les permissions.
Marsh Posté le 28-04-2005 à 16:35:25
en fait tu fais avec la macro %doc, dans le repertoire temporaire : doc
et apres a partir de ce reprtoire tu fais la copie dans la macro %post
oki je comprends, donc pour moi
%defattr(-,root,root,0755) |
et ensuite :
%post |
Est ce que je peux faire un mkdir dans le %post ?
Marsh Posté le 28-04-2005 à 16:37:28
surement pour le mkdir
pour le doc/* c'est jsute un exemple pour montrer qu'on peut inclure directement un dossier sans énumérer tout les fichiers
%doc fait ça en fait :
copie tout les arguments de la ligne de commande dans /usr/share/doc/nom_paquet/
et ici les arguments sont :
file1 file2 et ./doc/*
donc si t'as pas de dossier doc dans ton archive, il faut l'enlever
Marsh Posté le 28-04-2005 à 16:53:40
oki,
donc ce que je fais je mets mes fichiers "add", "smb.conf" mais aussi le fichier spec dans un .tar.bz2
et apres je lance la commande ?
rpmbuild -tb nondetasource.tar.bz2 |
pour creer le rpm
Quel nom de fichier de spec je dois mettre ? n'importe quel nom ?
par exemple : mon_fichier.spec
Marsh Posté le 28-04-2005 à 17:05:14
perso, je préfère dissocier le spec et le tarball
nomme ton spec comme le nom de ton rpm (smbconf dans mon exemple) et mets le dans /usr/src/redhat/RPM/SPECS
mets le tarball avec les fichiers dans /usr/src/redhat/RPM/SOURCES
va dans /usr/src/redhat/RPM/SPECS et tapes rpm -bb smbconf.spec
si il n'y a pas d'erreur, ton paquet se trouvera dans /usr/src/redhat/RPM/RPMS/noarch
Marsh Posté le 28-04-2005 à 18:42:29
j'ai un message d'erreur, commande inconnu ?
Qu'est cela signifie ?
D'apres toi ou ai je fais une erreur ?
[root@weed SPECS]# rpm -bb smbconf.spec
-bb: option iconnue
Pour info, je suis sous fedora core2, et je n'avais pas les sous repertoires redhat dans src. Je l'ai donc créé.
Marsh Posté le 28-04-2005 à 18:44:18
tu as bien installé les paquets rpm-build et spec-helper ?
Marsh Posté le 28-04-2005 à 19:41:04
Mjules a écrit : tu as bien installé les paquets rpm-build et spec-helper ? |
ce paquage n'existe pas ...
Marsh Posté le 28-04-2005 à 19:41:30
[root@localhost ~]# yum install spec-helper
Setting up Install Process
Setting up Repo: base
repomd.xml 100% |=========================| 1.1 kB 00:00
Setting up Repo: updates-released
repomd.xml 100% |=========================| 951 B 00:00
Reading repository metadata in from local files
base : ################################################## 2622/2622
primary.xml.gz 100% |=========================| 96 kB 00:00
http://sunsite.mff.cuni.cz/pub/fed [...] ry.xml.gz: [Errno 4] Socket Error: (104, 'Connexion r\xc3\xa9-initialis\xc3\xa9e par le correspondant')
Trying other mirror.
primary.xml.gz 100% |=========================| 339 kB 00:02
MD Read : ################################################## 856/856
updates-re: ################################################## 856/856
No Match for argument spec-helper
Nothing to do
[root@localhost ~]#
Marsh Posté le 28-04-2005 à 19:45:19
ah oui, effectivement, c'est un paquet mandrake
Marsh Posté le 29-04-2005 à 09:46:40
ahh tout hasard, saurait tu comment cela se passe pour la desintallation (la suppression des fichiers) ?
si tu sais pas, pas grave.
Marsh Posté le 29-04-2005 à 09:47:46
weed a écrit : ahh tout hasard, saurait tu comment cela se passe pour la desintallation du rpm (la suppression des fichiers) ? |
Marsh Posté le 29-04-2005 à 17:42:52
il ne supprimera que les fichiers référencé dans la section %files
pour supprimer les fichiers (ou faire quoique ce soit d'autre) qui ont été copiés dans les dossiers /etc, il faut faire un script de pré ou post désinstallation (%preun ou %postun)
Marsh Posté le 28-07-2005 à 11:13:56
Moi aussi je serais intéréssé par la création de RPM pour mon Fedora Core 4 mais je ne trouve pas de tutorial assez explicite pour bien comprendre tout ce qu'il faut faire. Conaissez vous un bon tutorial en français car je suis définitivement pas doué en Anglais !!!
Sinon mon but serais de faire un rpm qui si possible installerai mplayer avec skin, police et codecs bien sûr !!!
Marsh Posté le 28-07-2005 à 12:54:36
Tu trouveras ce qu'il faut ici, peut-être:
http://faq.fcolc.eu.org/administration/fabriquerrpm
Marsh Posté le 28-04-2005 à 13:20:48
On m' a conseillé d'utilisé la commande :
rpmbuild -tb nondetasource.tar.gz,le tout à copier dans usr/src/redhat/RPM/SOURCE avant de tapper la commande
mais je ne vois pas à quel moment ou l'on peut decider ou l'on copie les fichiers.
j'aimerais
- créer le repertoire /etc/www/html/script
- copier le fichier add dans /etc/www/html/script (création du repertoire sc
- copier smb.conf dans /etc/samba (écrasé le fichier avec mon fichier de conf)
soit en fait :
mkdir /etc/www/html/script &&
cp add /etc/www/html/script/ &&
cp smb.conf /etc/samba/
Qu'est ce qu'il faut je fasse ?
Ma solution : lorsque je lance l'installation de mon rpm (rpm -ivh monrpm.rpm), cela me lance un script bash qui me créé le repertoire script et qui me copie les 2 fichiers, mais comment faire ?
Qu'est ce que vous en pensez ?
Comment faire ?
sinon auriez vous une autre solution ?
Message édité par weed le 28-04-2005 à 15:02:01