Insatllation sources........

Bonjour à tous, voila, je pense ne pas avoir assimiler l'insatllation de logiciels ou librairies à partir des sources!!!
un exemple: j'ai voulu installer un jeu par la source qui demandait la librairie libxml++1.0, donc je vais sur le site, je télécharge le fichier .tar.bz2 de la soure, je le decompresse avec tar -jxvf nom.tar.bz2 , je vais dans le dossier, je fais "./configure" pui "make" puis "make install" OK! et maintenant je refait le ./configure du jeu qui m'a dit qu'il manquait la librairie mais il me remet le meme message!!! je comprend rien!!! comment ca marche???
Au fait, je suis sur Mandrake LE 2005

MERCI!!

7 réponses

  1. oui, j'ai bien vu que l'installation des rpm marchait tres bien mais je voudrait savoir pourquoi ca ne marche pas quand j'insatlle les sources
    0
    1. Modérateur
      A priori tu as un fichier INSTALL qui explique tout.
      Généralement ca se résume à ça :
      su -
      Password:
      cd repertoire_des_src
      ./configure
      make
      make install
      

      Si tu donnes plus de précision on pourra sans doute t'aider plus (genre le nom du paquetage, où et comment tu l'as récupéré).

      Consulte aussi le site ou tu l'as téléchargé, c'est souvent expliqué...

      Bonne chance
      0
      1. et bien par exemple, je n'arrive pas à installer db.1.85 :

        http://downloads.sleepycat.com/db.1.85.tar.gz (md5)
        ftp://ftp.sleepycat.com/releases/db.1.85.tar.gz (md5)

        je rapelle que je suis sous Mandriva LE2005 (Mandrake 10.2).
        Je suis pas tres doué en anglais mais j'ai suivi les instructions de /PORT/README :

        This is the area for building the libdb library. There are a number
        of porting directories, for various architecture/OS combinations. Pick
        the one that's closest to yours and try "make".

        donc je suis allé dans "linux" parce que c'est le seul qui me dis quelque chose et j'ai fait "make" et ca me donne:

        [root@localhost linux]# make
        cc -c -D__DBINTERFACE_PRIVATE -O -I. -Iinclude -I../../hash ../../hash/hash.c
        In file included from ../../hash/hash.c:55:
        ../../hash/hash.h:106: error: field `__errno_location' declared as a function
        ../../hash/hash.c: In function `flush_meta':
        ../../hash/hash.c:508: error: syntax error before '(' token
        ../../hash/hash.c: In function `hash_get':
        ../../hash/hash.c:539: error: syntax error before '(' token
        ../../hash/hash.c: In function `hash_put':
        ../../hash/hash.c:556: error: syntax error before '(' token
        ../../hash/hash.c:560: error: syntax error before '(' token
        ../../hash/hash.c: In function `hash_delete':
        ../../hash/hash.c:577: error: syntax error before '(' token
        ../../hash/hash.c:581: error: syntax error before '(' token
        ../../hash/hash.c: In function `hash_seq':
        ../../hash/hash.c:732: error: syntax error before '(' token
        make: *** [hash.o] Erreur 1

        donc j'essaie la suite du README:

        For the rest of this
        file, I'll use "MACH" as a fake architecture/OS name.

        To PORT to a new system, create the following subdirectories and
        symbolic links.

        mkdir MACH (for example: mkdir sunos.4.0)
        cd MACH
        cp ../Makefile .
        chmod 664 Makefile
        ln -s ../clib .
        mkdir include
        ln -s include sys
        cd include
        ln -s ../../include/*.h .
        rm compat.h
        cp ../../include/compat.h .
        chmod 664 compat.h
        cd ..

        The basic idea is that you now have a local area that you can modify.
        In particular, you have local copies of the Makefile and the include
        file compat.h. Read through the Makefile and compat.h and make whatever
        changes are appropriate to your system. If there's an architecture
        that's close to yours, you probably should diff the Makefile and
        compat.h in that tree against the standard ones and see what changes
        were necessary, as they're probably necessary for you as well. Then,
        enter "make" and see what happens!

        Donc je fais tout ca sauf que je n'ai absolument aucune idée de quoi modifier dans le Makefile et le compat.h donc je fais make dans le nouveau répertoire et ca me donne:

        cc -c -D__DBINTERFACE_PRIVATE -O -I. -Iinclude -I../../hash ../../hash/hash.c
        In file included from /usr/include/sys/types.h:133,
        from /usr/include/sys/param.h:42,
        from ../../hash/hash.c:41:
        /usr/include/time.h:76: error: syntax error before "typedef"
        /usr/include/time.h:79: error: syntax error before "__USING_NAMESPACE_STD"
        /usr/include/time.h: In function `__USING_NAMESPACE_STD':
        /usr/include/time.h:92: error: storage class specified for parameter `clockid_t'
        /usr/include/time.h:104: error: storage class specified for parameter `timer_t'
        In file included from /usr/include/sys/param.h:42,
        from ../../hash/hash.c:41:
        /usr/include/sys/types.h:151: error: storage class specified for parameter `ulong'
        /usr/include/sys/types.h:152: error: storage class specified for parameter `ushort'
        /usr/include/sys/types.h:153: error: storage class specified for parameter `uint'
        /usr/include/sys/types.h:191: error: storage class specified for parameter `int8_t'
        /usr/include/sys/types.h:192: error: storage class specified for parameter `int16_t'
        /usr/include/sys/types.h:193: error: storage class specified for parameter `int32_t'
        /usr/include/sys/types.h:194: error: storage class specified for parameter `int64_t'
        /usr/include/sys/types.h:197: error: storage class specified for parameter `u_int8_t'
        /usr/include/sys/types.h:198: error: storage class specified for parameter `u_int16_t'
        /usr/include/sys/types.h:199: error: storage class specified for parameter `u_int32_t'
        /usr/include/sys/types.h:200: error: storage class specified for parameter `u_int64_t'
        /usr/include/sys/types.h:202: error: storage class specified for parameter `register_t'
        In file included from /usr/include/sys/select.h:34,
        from /usr/include/sys/types.h:216,
        from /usr/include/sys/param.h:42,
        from ../../hash/hash.c:41:
        /usr/include/bits/sigset.h:23: error: storage class specified for parameter `__sig_atomic_t'
        /usr/include/bits/sigset.h:31: error: storage class specified for parameter `__sigset_t'
        In file included from /usr/include/sys/types.h:216,
        from /usr/include/sys/param.h:42,
        from ../../hash/hash.c:41:
        /usr/include/sys/select.h:38: error: storage class specified for parameter `__sigset_t'
        /usr/include/sys/select.h:38: error: conflicting types for '__sigset_t'
        /usr/include/bits/sigset.h:31: error: previous definition of '__sigset_t' was here
        /usr/include/sys/select.h:38: error: syntax error before "sigset_t"
        In file included from /usr/include/sys/types.h:216,
        from /usr/include/sys/param.h:42,
        from ../../hash/hash.c:41:
        /usr/include/sys/select.h:49: error: storage class specified for parameter `suseconds_t'
        /usr/include/sys/select.h:55: error: storage class specified for parameter `__fd_mask'
        /usr/include/sys/select.h:75: error: syntax error before "__fd_mask"
        /usr/include/sys/select.h:85: error: storage class specified for parameter `__fd_mask'
        /usr/include/sys/select.h:85: error: conflicting types for '__fd_mask'
        /usr/include/sys/select.h:55: error: previous definition of '__fd_mask' was here
        /usr/include/sys/select.h:85: error: syntax error before "fd_mask"
        /usr/include/sys/select.h:109: error: syntax error before "fd_set"
        /usr/include/sys/select.h:112: error: storage class specified for parameter `select'
        In file included from /usr/include/sys/param.h:42,
        from ../../hash/hash.c:41:
        /usr/include/sys/types.h:235: error: storage class specified for parameter `fsblkcnt_t'
        /usr/include/sys/types.h:239: error: storage class specified for parameter `fsfilcnt_t'
        In file included from /usr/include/sys/types.h:266,
        from /usr/include/sys/param.h:42,
        from ../../hash/hash.c:41:
        /usr/include/bits/pthreadtypes.h:35: error: storage class specified for parameter `_pthread_descr'
        /usr/include/bits/pthreadtypes.h:52: error: storage class specified for parameter `pthread_attr_t'
        /usr/include/bits/pthreadtypes.h:58: error: syntax error before "__extension__"
        /usr/include/bits/pthreadtypes.h:66: error: syntax error before "_pthread_descr"
        /usr/include/bits/pthreadtypes.h:68: error: `__pthread_cond_align_t' undeclared(first use in this function)
        /usr/include/bits/pthreadtypes.h:68: error: (Each undeclared identifier is reported only once
        /usr/include/bits/pthreadtypes.h:68: error: for each function it appears in.)
        /usr/include/bits/pthreadtypes.h:68: confused by earlier errors, bailing out
        make: *** [hash.o] Erreur 1

        Désolé d'avoir autant à vous faire lire mais vous pourriez m'éclairer, s'il vous plaît??
        Merci!
        0
        1. Contributeur
          make: *** [hash.o] Erreur 1 


          il me semble que dès ici tu peux t'arreter.....
          je suis pas spécialiste en programmation, donc je ne saurais pas te dire ce qui merde, mais ce qui est sur c'est que ca n'a pas été au bout de la compilation.....

          Phiphi
          0
        2. Oui, la compilation s'arrete ici, c'est justement ce à quoi je veux remédier, comment résoudre le probleme pour continuer la compilation?
          0
      2. Contributeur
        Salut Neolistic,

        La version de Berkeley DB que tu essayes de compiler est très ancienne... est-ce volontaire ?

        Il s'agit apparemment de la version 1.85 qui est la dernière release des versions 1 de Berkeley DB. Tu aurais moins de problèmes avec une version récente : http://www.sleepycat.com/download/db/

        Si tu tiens à compiler ce vieux code (mais fonctionne-t-il vraiment sur un système récent...), il faut :

        1. faire cd PORT/linux

        2. Récupérer le patch proposé sur le site pour modifier le Makefile de Linux http://www.sleepycat.com/update/1.85/patch.185.html

        wget "http://www.sleepycat.com/update/1.85/patch.1.1"

        3. patcher le Makefile avec

        patch Makefile patch.1.1

        4. là.. lorsque tu tentes de compiler en faisant un "make" tu as les mêmes erreurs que celles que tu rapportes. La première erreur indique qu'à la ligne 106 du fichier "../../hash/hash.h", on tente de déclarer un champ "errno" alors qu'il s'agit d'une fonction. Du coup, à chaque fois que dans ../../hash/hash.c on tente d'accéder au champ "errno" de cette structure, celà génère une erreur de syntaxe

        5. J'ai pu compiler en faisant les modifications suivantes :

        ligne 106 de "../../hash/hash.h", tu remplaces "errno" par "myerrno"

        lignes 508, 539, 556, 560, 577, 581 et 732 de "../../hash/hash.c", tu remplaces "hashp->errno" par "hashp->myerrno"

        lignes 183 et 193 de ../../hash/ndbm.c, tu remplaces "hp->errno" par "hp->myerrno"

        un "make" passe alors sans erreurs sur une Fedora Core 2, avec gcc 3.3.3, à l'exception d'un seul warning.

        Dal
        0
        1. Contributeur
          Note bien que les difficultés liées à la compilation de cette librairie sont dues à son ancienneté.

          Sur des sources récentes prévues pour être portables sous Linux, la modification du code source n'est normalement pas requise, et la génération du "Makefile" passe par un script "configure" et par une procédure du type de celle qui est mentionnée par Mamiemando.

          Celà est possible grâce aux GNU autotools, qui font des merveilles pour faciliter la portabilité du code.

          Voilà un peu de matière pour en savoir plus : http://sources.redhat.com/autobook/

          Dal
          0
        2. ok, merci j'essairai ca demain, pour la version, l'histoire c'est que je voulais installer un jeu qui me demandais la gnome-libs qui me demandait db 1.85 ou db 2.x compatible 1.86 (ou qlq chose comme ca)

          mais si ca se trouve la gnome-libs n'est meme pas la bonne et je me prend la tete pour des clous... j'ai pas trouvé le moyen d'être sur de savoir quel package télécharger

          A+
          0
      3. Contributeur
        Salut neolistic,

        je voulais installer un jeu qui me demandais la gnome-libs qui me demandait db 1.85 ou db 2.x compatible 1.86

        Sauf si le jeu que tu veux installer date d'il y a 8-10 ans, il est probable que le package que tu as "trouvé" et qui dépend de db 1.85 ne soit pas le bon.

        Lorsque tu installes un logiciel qui a des dépendances, la documentation de ce logiciel t'indique en général quelle version de la dépendance est demandée... tu n'installes pas au hasard.

        Lorsque tu le peux, tu installes la version de cette dépendance qui est livrée avec ta distribution, ou fournie par l'éditeur de ta distribution. Tu auras moins de chances d'installer des éléments inadaptés (et de rendre ton système instable).

        Tant que tu le peux aussi, utilise des rpm contenant ces éléments pré-compilés.

        Ces précautions te permettront aussi de faciliter la mise à jour de ton système.

        Dal
        0
        1. Ok c'est un vieille discussion mais comme je suis tombé dessus en ayant le même problème, ça peut servir à d'autres...

          le makefile de Berkeley DB 1.85 contient des options incompatibles aujourd'hui ( -I. ), il faut changer la ligne suivante:
          CL= ${CC} -c -D__DBINTERFACE_PRIVATE ${OORG} -I. -Iinclude

          par:

          CL= ${CC} -c -D__DBINTERFACE_PRIVATE ${OORG} -Iinclude -I../../include

          et à la fin du Makefile, remplacer les lignes par:
          mktemp.o:
          ${CC} -c -O -Iinclude clib/mktemp.c
          snprintf.o:
          ${CC} -c -O -Iinclude clib/snprintf.c

          Thierry
          0