ggbce Posté(e) le 9 mars 2005 Partager Posté(e) le 9 mars 2005 J'ai besoin de créer un RPM (binaire) à partir d'une source SRPM mais j'ai un bug lorsque je viens pour lancer la compilation, je reçois un message qui me dit qu'il me manque des programmes (dependencies) pour continuer... sauf que ces programmes je les ai d'installé sur mon poste. Quoi faire pour me débugger ? je lance ma compilation comme ceci: rpmbuild dctc.spec Et je reçois ce message: error: failed build dependencies: automake >= 1.7 is needed by dctc-0.85.9-1 libglib2-devel >= 2.0 is needed by dctc-0.85.9-1 libdb-devel >= 3.3 is needed by dctc-0.85.9-1 (J'ai automake 1.8, la librairie glib2-devel 2.0.1 et celle de db4 d'installé ...) et j'utilise rpm 4.0.4 ====================== Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 9 mars 2005 Partager Posté(e) le 9 mars 2005 Toi, t'as pris un RPM prévu pour mandrake et t'essayes de le recompiler sur une Fedora... Alors, la compilation ça se fait par un "rpmbuild -ba machin.spec". Ensuite, il te faut le package "libglib2-devel", qui est le nom mandrake. Sous Fedora, ça s'appelle effectivement glib2-devel, mais pas de bol c'est libglib2-devel qui est noté dans le fichier spec... Comme quoi il ne faut PAS prendre un RPM d'une distribution et le coller sur une autre. Ca revient à annuller le travail d'intégration qui est fait pour le RPM. Bon, pour te sortir de là, tu peux supprimer les BuildRequires du fichier spec, mais tu va encore te retrouver coincé par d'autres trucs après (mandrake a plein de spécificités). Le mieux, et de loin, c'est de trouver un package pour ta Fedora. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 9 mars 2005 Partager Posté(e) le 9 mars 2005 Le mieux, et de loin, c'est de trouver un package pour ta Fedora. ou de demander gentillement à gauret de ne pas dormir de la nuit... (enfin, préfere la première solution, je sens qu'il ne va pas être d'accord pour la deuxième ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 9 mars 2005 Partager Posté(e) le 9 mars 2005 ou de demander gentillement à gauret de ne pas dormir de la nuit... (enfin, préfere la première solution, je sens qu'il ne va pas être d'accord pour la deuxième ) Héhé :) Non, si il a un RPM 4.0.4, il doit tourner avec une Red Hat 9, voire même peut-être pire, une Red Hat 8. Là je peux rien faire. Mais il y a d'autres clients pour direct connect sous Fedora, donc il devrait trouver son bonheur :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ggbce Posté(e) le 10 mars 2005 Auteur Partager Posté(e) le 10 mars 2005 Ça se peut effectivement que la source SRPM soit fait pour Mandrake... mais dans le fichier .spec qui est fournit avec, il est question de Red Hat pourtant. Le fichier est le clone de Direct Connect et voici le contenu du .spec: --------------------------------------------- %define version 0.85.9 %define rh_release %(rh_release="`rpm -q --queryformat='%{VERSION}' redhat-release | grep -v install 2>/dev/null`" ; if test $? != 0 ; then rh_release="0" ; fi ; echo "$rh_release") %define fdr_release %(fdr_release="`rpm -q --queryformat='%{VERSION}' fedora-release | grep -v install 2>/dev/null`" ; if test $? != 0 ; then fdr_release="0" ; fi ; echo "$fdr_release") Name: dctc Summary: DCTC is a Direct Connect clone. Version: %{version} Release: 1 License: GPL Group: Applications/Internet Source: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/build-root-%{name} Packager: Eric <eric@a2pb.gotdns.org> Provides: dctc Prefix: /usr Url: http://ac2i.homelinux.com/dctc/ BuildRequires: openssl-devel, automake >= 1.7, zlib-devel >= 1.1 Requires(post,preun): chkconfig Requires: openssl >= 0.9.6b, zlib >= 1.1 %if %{rh_release} %if "%{os_major_version}" >= "8" BuildRequires: glibc-devel >= 2.3.2, libglib2-devel >= 2.0, libdb-devel >= 3.3 Requires: glibc >= 2.3.2, libglib2 >= 2.0 %else BuildRequires: glibc-devel >= 2.2, libglib2-devel >= 2.0, libdb-devel >= 3.3 Requires: glibc >= 2.2, libglib2 >= 2.0 %endif %else %if %{fdr_release} BuildRequires: glibc-devel >= 2.3.2, glib-devel >= 2.0, db4-devel >= 3.3 Requires: glibc >= 2.3.2, glib >= 2.0 %else BuildRequires: glibc-devel >= 2.2, libglib2-devel >= 2.0, libdb-devel >= 3.3 Requires: glibc >= 2.2, libglib2 >= 2.0 %endif %endif %description DCTC is a clone of Direct Connect, a Windows client allowing users to share their files and talk (like IRC but more software sharing oriented) using a proprietary protocol. %prep rm -rf $RPM_BUILD_ROOT mkdir $RPM_BUILD_ROOT %setup -q %build export CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" %configure --prefix=%{prefix} make -j 2 %install rm -rf ${RPM_BUILD_ROOT} make DESTDIR=$RPM_BUILD_ROOT mandir=%{_mandir} install-strip %clean rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,root,0755) %doc NEWS README AUTHORS ChangeLog TODO %{_mandir}/*/* %{_bindir}/* ------------------------------------------- J'ai Red Hat 7.3 comme distribution et dans le .spec la boucle de vérification débute avec Red Hat 8 et dans le "else" va pour Fedora. Je sais, je sais je n'ai pas le "requierement" mais je me suis quand même procuré tous les packages nécessaires pour les dépendances ! C'est là que je ne comprend pas trop. Je ne suis pas trop familié avec la compilation lorsque ça sort de commun. Mais je crois qu'il y a surement moyen de faire le tout... puisque le SRPM contient un .spec et la source en Tarball tout simplement. Si tu peux peux me guider un peu ça serait apprécié. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 10 mars 2005 Partager Posté(e) le 10 mars 2005 c'est vrai qu'un tuto sur la creation de rpm serait le bienvenue, gauret :francais: Lien vers le commentaire Partager sur d’autres sites More sharing options...
ggbce Posté(e) le 10 mars 2005 Auteur Partager Posté(e) le 10 mars 2005 Voici comment j'ai modifié le .spec afin d'exécuter la compilation sachant que j'avais vraiment les packages nécessaires... mais ça me dit quand même que je n'ai pas les packages présents sur mon ordi: Name: dctc Summary: DCTC is a Direct Connect clone. Version: %{version} Release: 1 License: GPL Group: Applications/Internet Source: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/build-root-%{name} Packager: Eric <eric@a2pb.gotdns.org> Provides: dctc Prefix: /usr Url: http://ac2i.homelinux.com/dctc/ BuildRequires: openssl-devel, automake >= 1.7, zlib-devel >= 1.1 Requires(post,preun): chkconfig Requires: openssl >= 0.9.6b, zlib >= 1.1 BuildRequires: glibc-devel >= 2.2, libglib2-devel >= 2.0, libdb-devel >= 3.3 Requires: glibc >= 2.2, libglib2 >= 2.0 %description DCTC is a clone of Direct Connect, a Windows client allowing users to share their files and talk (like IRC but more software sharing oriented) using a proprietary protocol. %prep rm -rf $RPM_BUILD_ROOT mkdir $RPM_BUILD_ROOT %setup -q %build export CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" %configure --prefix=%{prefix} make -j 2 %install rm -rf ${RPM_BUILD_ROOT} make DESTDIR=$RPM_BUILD_ROOT mandir=%{_mandir} install-strip %clean rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,root,0755) %doc NEWS README AUTHORS ChangeLog TODO %{_mandir}/*/* %{_bindir}/* Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 10 mars 2005 Partager Posté(e) le 10 mars 2005 Tu peux virer les lignes : BuildRequires: glibc-devel >= 2.2, libglib2-devel >= 2.0, libdb-devel >= 3.3 Requires: glibc >= 2.2, libglib2 >= 2.0 Et ça marchera. BuildRequires c'est ce qui te bloque, c'est des dépendances nécessaires pour la compilation (Build). Le Requires c'est pas nécessaire dans ce cas puisque ces dépendances-là seront automatiquement détectées. Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 10 mars 2005 Partager Posté(e) le 10 mars 2005 c'est vrai qu'un tuto sur la creation de rpm serait le bienvenue, gauret :francais: Pourquoi pas, même si la question est vaste :) En attendant, y'en a un très bon là : http://freshrpms.net/docs/fight/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
ggbce Posté(e) le 10 mars 2005 Auteur Partager Posté(e) le 10 mars 2005 J'ai modifié mon .spec au plus simple en placant seulement ces dépendances sachant que j'avais les packages sur mon poste: BuildRequires: openssl-devel, zlib-devel >= 1.1 Requires(post,preun): chkconfig Requires: openssl >= 0.9.6b, zlib >= 1.1, glibc-devel >= 2.2 BuildRequires: glibc >= 2.2 Et ça fonctionne ! (Après avoir ajouté quelques autres dépendances lors de la compilation non trouvé tel que db.h (db-devel)). J'ai installé le programme à partir du rpm et ça roule ! (pas encore testé à fond par contre) -------------------------------------------------------------------------------------------------------- Donc je peux dire que le problème initial est résolu après quelques heures d'essai/erreur. -------------------------------------------------------------------------------------------------------- Mais comme tu dis un tutorial sur l'utilisation de RPM pourrait être fort intéressant (en français). Si je peux me permettre, comment fait-on pour ajouter notre contribution si je voudrais placer un "mini tutorial" de comment utiliser un fichier SRPM pour créer un RPM ? (Simplement ouvrir un nouveau message sur le forum ?) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ggbce Posté(e) le 14 mars 2005 Auteur Partager Posté(e) le 14 mars 2005 Simplement pour dire que j'ai résolu mon problème en m'assurant d'avoir bien les packages installés qui sont nécessaires sur mon poste, même si RPM ne les détecte pas correctement lors de la compilation "rpm -ba nom_du_package.spec" et en effaçant ces dépendances du .spec ce qui a permis à RPM de faire son boulot correctement, et j'ai générer un beau .rpm tout neuf ! 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.