DrakPlouf Posté(e) le 1 décembre 2005 Partager Posté(e) le 1 décembre 2005 Quand on arrive du monde windows et qu'on utilise une distro rpm comme Mandriva on est souvent tenté d'installer des rpms venants de n'importe où n'importe comment. C'est trés mal et peu gravement compromettre la stabilité de votre systeme. En effet un rpm n'est pas un .exe windows on ne peut l'installer que sur la version de distro pour laquelle il à été construit. C'est à dire qu'on n'installe pas un rpm de suse sur une mandriva ou encore qu'on installe pas un rpm mandriva 2006.0 sur une mandriva 10.1 Donc que faire si on ne trouve pas le soft que l'on veut dans la version que l'on veut pour sa version de mandriva ? On va tout simplement "reconstruire" le rpm pour l'adapter à son systeme. Cela commence par la création des repertoires et autres fichiers necéssaires à la fabrication de rpms, ainsi que l'installation des différents paquets. Pour commencer # urpmi rpm-build gcc-c++ automake autoconf Ensuite création de l'arborescence on ne construit JAMAIS de rpm en root. Si vous avez du 32 bits mkdir -p ~/rpm/{RPMS/{i586,noarch},SRPMS,SPECS,tpm,BUILD,SOURCES} Si vous avez du 64 bits mkdir -p ~/rpm/{RPMS/{i586,x86_64,noarch},SRPMS,SPECS,tpm,BUILD,SOURCES} Une fois les répertoires en place, passons au fichier de config,~/.rpmmacros. Il contient diverses commandes pour initialiser rpm. cat << EOF > ~/.rpmmacros %_topdir ~/rpm %_tmppath /tmp %_signature gpg %_gpg_name Mandriva %_gpg_path ~/.gnupg %distribution Mandriva Linux %vendor Mandriva %packager Nom Prénom <user@provider.org> EOF Puis le fichier ~/.rpmrc cat << EOF > ~/.rpmrc buildarchtranslate: i386: i586 buildarchtranslate: i486: i586 buildarchtranslate: i586: i586 buildarchtranslate: i686: i586 EOF Une fois ceci fait on recupère le src.rpm sur les serveurs officiels du soft que l'on veut rebuilder (le plus généralement un srpm de cooker) et on l'installe toujour en user bien sur. $ rpm -ivh soft.src.rpm une fois le srpm installé on ce rend dans ~/rpm/SPECS cd ~/rpm/SPECS Le fichier spec est contenu dans le SRPM en fait le SRPM contient les sources et le fichier spec Un fichier spec ressemble à ça ici celui de klibido %define name klibido %define version 0.2.4.1 %define release 1plf %define __libtoolize /bin/true %define __cputoolize /bin/true Name: %{name} Version: %{version} Summary: A KDE nntp file grabber Release: %{release} License: GPL Group: Networking/File transfer URL: http://klibido.sourceforge.net Source: http://ovh.dl.sourceforge.net/sourceforge/...ersion}.tar.bz2 Source10: %name-16.png Source11: %name-32.png Source12: %name-48.png BuildRoot: %{_tmppath}/%{name}-buildroot BuildRequires: db4-devel >= 4.2 BuildRequires: kdelibs-devel >= 3.2 BuildRequires: libuu-static-devel >= 0.5.20 %description KLibido is a KDE program to download and decode binary articles using the nntp protocol. Main features: - Multiple servers support - Multiple download threads per server - Automatically decoding of articles via the UULib library - Embedded view of files via kparts - Download queue management This package is in PLF because of Mandrakelinux policy regarding programs allowing to exchange potentially copyrighted materials %prep rm -rf %buildroot %setup -n %{name}-%{version} %build export QTLIB=%{_libdir}/qt3/%{_lib} %configure \ %ifarch amd64 --enable-libsuffix=64 \ %endif --disable-rpath %make %install rm -rf %buildroot mkdir -p %buildroot{%_menudir,%_miconsdir,%_iconsdir,%_liconsdir} %{makeinstall_std} cp %SOURCE10 %buildroot%_miconsdir/%name.png cp %SOURCE11 %buildroot%_iconsdir/%name.png cp %SOURCE12 %buildroot%_liconsdir/%name.png perl -pi -e "s|Name=klibido|Name=Klibido|" %buildroot/%_datadir/applnk/Utilities/%{name}.desktop kdedesktop2mdkmenu.pl %name "Networking/File Transfer" %buildroot/%_datadir/applnk/Utilities/%{name}.desktop %buildroot/%_menudir/%name %find_lang %name %clean rm -rf %buildroot %post %{update_menus} %postun %{clean_menus} %files -f %name.lang %defattr(-,root,root) %attr(0755,root,root) %{_bindir}/%{name} %doc AUTHORS COPYING ChangeLog NEWS README TODO %{_menudir}/%{name} %_datadir/applnk/Utilities/%{name}.desktop %_iconsdir/%{name}.png %_iconsdir/*/%{name}.png %_iconsdir/hicolor/*/apps/%{name}.png %_datadir/apps/%{name}/icons/hicolor/* %_docdir/HTML/* %_datadir/apps/%{name}/klibidoui.rc %changelog * Mon Sep 12 2005 Nicolas Lecureuil <neoclust@zarb.org> 0.2.4.1-1plf - New release 0.2.4.1 - Remove Patch 0 : Merged upstream * Wed Jun 08 2005 Sebastien Savarin <plouf@zarb.org> 0.2.3-2plf - add klibido-fix-availablegroups.patch * Sun May 15 2005 Sebastien Savarin <plouf@zarb.org> 0.2.3-1plf - 0.2.3 * Sat Apr 09 2005 trem <trem@zarb.org> 0.2.2.2-4plf - Fix build on x86_64 * Thu Apr 07 2005 Sebastien Savarin <plouf@zarb.org> 0.2.2.2-3plf - Really Fix build on x86_64 * Thu Apr 07 2005 Sebastien Savarin <plouf@zarb.org> 0.2.2.2-2plf - Fix build on x86_64 thank's to Nicolas Richard <kournikolas@yahoo.fr> * Mon Mar 14 2005 Sebastien Savarin <plouf@zarb.org> 0.2.2.2-1plf - New Release * Mon Mar 14 2005 Sebastien Savarin <plouf@zarb.org> 0.2.2-2plf - fix PLF reason * Mon Mar 14 2005 Sebastien Savarin <plouf@zarb.org> 0.2.2-1plf - 0.2.2 * Tue Mar 02 2005 Sebastien Savarin <plouf@zarb.org> 0.2.1.1-1plf - First PLF release et là toujours en user $ rpm -ba soft.spec A ce niveau il se peut (c'est même certain) que rpm vous dise qu'il vous manque des dépendances il vous suffira d'installer les rpms listés. Si la compilation ce passe bien vous devriez avoir un message du genre: Ecrit: /home/user/rpm/SRPMS/soft-0.6-1mdk.src.rpm Ecrit: /home/user/rpm/RPMS/i586/soft-0.6-1mdk.i586.rpm Ecrit: /home/user/rpm/RPMS/i586/soft-debug-0.6-1mdk.i586.rpm Vous retrouverez votre RPM tout chaud tout beau dans ~/rpm/RPM/votre arch Il ne vous reste plus qu'a l'installer. Voila ce n'est pas plus compliqué que ça Lien vers le commentaire Partager sur d’autres sites More sharing options...
ggbce Posté(e) le 1 décembre 2005 Partager Posté(e) le 1 décembre 2005 Intéressant ton tuto, car j'ai justement un p'tit problème de fabrication d'un RPM (mais je ne sais pas si c'est le RPM) ou simplement le logiciel qui est en problème. Dans ton tuto, tu n'expliques pas d'où provient ton fichier .spec nécessaire à la création du RPM ? Est-ce qu'à partir d'un fichier .srpm (source) et avec la commande rpm -ivh ça génère un .spec nécessaire à la compilation ? Dans mon cas je n'ai pas de sources SRPM de disponible, uniquement une source tarball (.tar.gz) mais j'utilise le .spec généré avec le ./configure de celui-ci. Sujet: http://www.pcinpact.com/forum/index.php?showtopic=69628 Lien vers le commentaire Partager sur d’autres sites More sharing options...
DrakPlouf Posté(e) le 1 décembre 2005 Auteur Partager Posté(e) le 1 décembre 2005 Ta distro c'est quoi ? Peux tu mettre le .spec généré ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
clahor Posté(e) le 7 décembre 2005 Partager Posté(e) le 7 décembre 2005 bjr Dans mon cas je n'ai pas de sources SRPM de disponible, uniquement une source tarball (.tar.gz) mais j'utilise le .spec généré avec le ./configure de celui-ci. en ce qui concerne les tarbal avec checkinstall n'y a t il pas creation d'un rpm adapté a son environnement de pc (non exportable sur d'autres) au lieu de faire ./configure make make install on fait ./configure make checkinstall merci de donner vos avis "éclairés " Lien vers le commentaire Partager sur d’autres sites More sharing options...
ggbce Posté(e) le 7 décembre 2005 Partager Posté(e) le 7 décembre 2005 clahor, Dans mon cas j'ai été assez chanceux. Le créateur de ce package a pensé à moi ! Lorsqu'on fait simplement le ./configure de la source il génère automatiquement un fichier .spec utile à la création d'un RPM. ---------------------------- DrakPlouf, Ce serait bien de parler un peu plus sur la création d'un RPM depuis une source au format tar.gz... car souvent lorsqu'on veut créer un RPM c'est à cause que le logiciel nécessaire n'était pas inclus dans notre distribution, donc pas de SRPM également Je n'ai pas énormément fait de tests autour de ce sujet, mais il doit y avoir surement des étapes à suivre un peu standard pour passer du .tar.gz au RPM qui pourrait aider les gens dans le futur ! Exemple: dans mon cas le créateur du logiciel a été assez gentil pour générer le .spec depuis la source avec simplement un ./configure. ensuite il suffit de copier le fichier .spec dans le dossier SPECS et la source tar.gz dans le dossier SOURCES puis de lancer rpmbuild. En plus, il a mis a disposition une section dans sa documentation pour aider les gens à cette fin... ce qui n'est pas souvent le cas. Un tuto sur comment passer du .tar.gz au RPM serait apprécié. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.