Aller au contenu

Rebuilder un rpm facilement


DrakPlouf

Messages recommandés

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

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

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

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 :iloveyou:

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...