[Fedora Core]Comment creer un rpm ?

Comment creer un rpm ? [Fedora Core] - Codes et scripts - Linux et OS Alternatifs

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
Reply

Marsh Posté le 28-04-2005 à 13:20:48   

Reply

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.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

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

Reply

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.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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/

Reply

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 :


Summary: fichiers de conf
Name: fileconfig
Version: 0.1
Release: 1
Packager: Mjules <mjules@free.fr>
License: GPL
Group: system
Source0: %{name}-%{version}.tar.bz2
 
 
BuildArch: noarch
 
Requires: bash
 
BuildRoot:  %{_tmppath}/%{name}-buildroot
 
%description
stocke et copie les fichiers de conf
 
 
   
%prep
%setup
   
%build
   
%install
 
%clean
rm -rf $RPM_BUILD_ROOT
 
%files
%defattr(-,root,root,0755)
%doc fichier1 fichier2 config/*
 
%post
cp fichier /emplacement_final
 
%changelog
* Tue Apr 12 2005 Mjules <mjules@free.fr> 0.1-1
- new version


 
c'est pas génial mais ça devrait marcher


Message édité par Mjules le 28-04-2005 à 15:13:28

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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
Name: smbconf
Version: 0.1
Release: 1
Packager: Mjules <mjules@free.fr>
License: GPL
Group: System/Servers
Source0: %{name}-%{version}.tar.bz2
BuildArch: noarch
 
Requires: bash
 
BuildRoot:  %{_tmppath}/%{name}-buildroot
 
%description
stocke et copie les fichiers de conf
 
%prep
%setup
 
%clean
rm -rf $RPM_BUILD_ROOT
 
%files
%defattr(-,root,root,0755)
%doc file1 file2 doc/*
 
%post
cp %{_docdir}/%{name}-%{version}/file1 /home/jules/tmp/file1
 
%changelog
* Tue Apr 12 2005 Mjules <mjules@free.fr> 0.1-1
- new version


Message édité par Mjules le 28-04-2005 à 15:28:08

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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)
%doc file1 file2 doc/*


 
 
oki pour %post
donc dans mon cas, ca sera :
 

%post
mkdir /etc/www/html/script/
cp %{_docdir}/%{name}-%{version}/add /etc/www/html/script/
cp %{_docdir}/%{name}-%{version}/smb.conf /etc/samba/


Message édité par weed le 28-04-2005 à 16:07:57
Reply

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.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 28-04-2005 à 16:16:56   

Reply

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)
%doc add smb.conf doc/*


 
et ensuite :

%post
mkdir /etc/www/html/script/
cp %{_docdir}/%{name}-%{version}/add /etc/www/html/script/
cp %{_docdir}/%{name}-%{version}/smb.conf /etc/samba/


 
Est ce que je peux faire un mkdir dans le %post ?

Reply

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


Message édité par Mjules le 28-04-2005 à 16:38:38

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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

Reply

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


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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éé.
 

Reply

Marsh Posté le 28-04-2005 à 18:44:18    

tu as bien installé les paquets rpm-build et spec-helper ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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 ...

Reply

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 ~]#

Reply

Marsh Posté le 28-04-2005 à 19:45:19    

ah oui, effectivement, c'est un paquet mandrake


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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.

Reply

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) ?
Pour l'instant rien ne se passe mais ce n'est pas bien grave si tu ne sais pas
 


Reply

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)


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

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 !!!

Reply

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

Reply

Marsh Posté le 28-07-2005 à 19:49:01    

Merci pour le site !!! je vais le lire traquillement...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed