Vous n'êtes pas identifié(e).
Bonjour,
Quand on installe PostgreSQL via aptitude dans Ubuntu 10.04 LTS, il installe la version 8.4.
J'ai donc installé la version 9.1, via l'installateur graphique fourni par Enterprise DB.
Tout fonctionne bien, à l'exception du langage pl/perl, que je n'arrive pas à installer.
Quand je fais "create language plperl;" :
1°/ Dans un premier temps, il me met le message d'erreur "ERROR: could not load library "/opt/PostgreSQL/9.1/lib/postgresql/plperl.so": libperl.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type"
Je me suis rendu compte que dans /usr/lib je n'ai en effet aucun fichier qui s'appelle "libperl.so", j'ai un fichier "libperl.so.5.10.1" et un lien symbolique sur ce fichier, nommé "liberl.so.5.10".
J'ai donc créé un deuxième lien symbolique sur ce fichier "libperl.so.5.10.1", lien que j'ai appelé "libperl.so".
2°/ Après avoir fait ça, il me met un message d'erreur différent : "ERROR: could not load library "/opt/PostgreSQL/9.1/lib/postgresql/plperl.so": /opt/PostgreSQL/9.1/lib/postgresql/plperl.so: undefined symbol: Perl_sv_2bool_flags"
J'ai cherché sur le net, rien trouvé. Une idée ? Faut-il une version particulière de libperl ? Quelqu'un a-t-il déjà réussi à installer pl/perl pour PostgreSQL 9.1 sous Ubuntu 10.04 LTS ?
Merci.
Hors ligne
Quelle version de perl avez-vous ? Que vous dit la commande "ldd /opt/PostgreSQL/9.1/lib/postgresql/plperl.so" ?
Guillaume.
Hors ligne
Dans le premier cas de figure (donc avant que ne je crée un lien symbolique "libperl.so" sur le fichier "libperl.so.5.10.1") la commande "ldd /opt/PostgreSQL/9.1/lib/postgresql/plperl.so" me donne :
linux-gate.so.1 => (0x003eb000)
libperl.so => not found
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0x00a5f000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00c8f000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x00ae4000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0x00dbd000)
libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0x00e10000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x008aa000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00110000)
/lib/ld-linux.so.2 (0x00e64000)
Dans un second temps (donc après avoir créé ce lien symbolique), la commande "ldd /opt/PostgreSQL/9.1/lib/postgresql/plperl.so" me donne :
linux-gate.so.1 => (0x005c2000)
libperl.so => /usr/lib/libperl.so (0x00110000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0x0025d000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00e2d000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x009f0000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0x004ae000)
libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0x005e4000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x007c8000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00ca6000)
/lib/ld-linux.so.2 (0x002a8000)
Hors ligne
Mais donc quel est la version de Perl ?
Guillaume.
Hors ligne
Le fichier libperl qui est installé est le libperl.so.5.10.1
J'en déduis donc que c'est la version 5.10.1 de Perl qui est installée, non ?
J'ai installé Ubuntu 10.04LTS, j'ai téléchargé toutes ses mises à jour, puis j'ai installé PostgreSQL 9.1 (via l'installateur d'Enterprise DB). C'est tout.
Hors ligne
Non, ça, c'est le langage plperl distribut par PostgreSQL. Mais vous devez aussi avoir l'interpréteur perl installé sur le serveur (ce qui devrait être fait par défaut). Donc quelle est la version de l'interpréteur perl installé survotre machine ?
Guillaume.
Hors ligne
Non, ça, c'est le langage plperl distribut par PostgreSQL.
Ah non ! Le fichier "libperl.so.5.10.1" n'a pas été installé par PostgreSQL, il était déjà présent avant l'installation de PostgreSQL (je travaille dans des machines virtuelles et je fais des snapshots au fur et à mesure des installation, ce qui me permet facilement de revenir en arrière pour vérifier ce genre de points). Donc je viens de vérifier, "libperl.so.5.10.1" est installé d'origine dans Ubuntu, ce n'est pas installé par PostgresSQL.
Mais vous devez aussi avoir l'interpréteur perl installé sur le serveur (ce qui devrait être fait par défaut). Donc quelle est la version de l'interpréteur perl installé survotre machine ?
Je ne sais pas, y-a-t-il une commande pour voir ça ? Comme dit, vu la version de libperl qui est installée, j'en déduis que c'est perl 5.10.1 que j'ai.
Une dernière remarque : en partant de la même machine, si au lieu d'installer PostgreSQL 9.1 j'installe la version 8.4 (via les dépôts synaptics), tout marche bien, je peux faire un "create language plperl;" sans aucun problème. Ce n'est que dans la version 9.1 que j'ai ce problème.
Hors ligne
OK, j'avais mal lu les messages. PostgreSQL veut un fichier appelé plperl.so pour ajouter le langage Perl dans votre base. libperl.so n'est pas ce fichier. Soit plperl.so n'est pas installé par le one-click installer (ce qui serait étonnant vu qu'il fournit libperl.so), soit vous avez oublié une option lors de l'installation.
Guillaume.
Hors ligne
non non non, "plperl.so" est bien installé... Je le vois bien dans "/opt/PostgreSQL/9.1/lib/postgresql".
et il y a vraiment très peu d'options lors de l'installation graphique de PostgreSQL, et j'ai tout laissé par défaut. D'ailleurs ça ne parle jamais de perl dans l'installation.
reprenez ce que j'ai écrit dans mon tout premier post :
Quand je fais "create language plperl;" :
1°/ Dans un premier temps, il me met le message d'erreur "ERROR: could not load library "/opt/PostgreSQL/9.1/lib/postgresql/plperl.so": libperl.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type"
Je me suis rendu compte que dans /usr/lib je n'ai en effet aucun fichier qui s'appelle "libperl.so", j'ai un fichier "libperl.so.5.10.1" et un lien symbolique sur ce fichier, nommé "liberl.so.5.10".
J'ai donc créé un deuxième lien symbolique sur ce fichier "libperl.so.5.10.1", lien que j'ai appelé "libperl.so".2°/ Après avoir fait ça, il me met un message d'erreur différent : "ERROR: could not load library "/opt/PostgreSQL/9.1/lib/postgresql/plperl.so": /opt/PostgreSQL/9.1/lib/postgresql/plperl.so: undefined symbol: Perl_sv_2bool_flags"
On voit bien au premier message qu'il n'arrive pas à charger "plperl.so" car il lui manque "libperl.so".
Et quand par la suite je crée un lien symbolique "libperl.so" sur le fichier "libperl.so.5.10.1", le message change, cette fois il ne se plaint plus de ne pas trouver "libperl.so", mais il n'arrive pas à charger "plperl.so" (qu'il trouve bien cependant)
A noter que par curiosité j'ai fait un "sudo find / -name libperl.so" sur ma machine Ubuntu 10.04 avec PostgreSQL 8.4 (donc l'installation pour laquelle je n'ai pas eu de problème pour créer le langage plperl) : il ne me trouve aucun fichier "libperl.so", il a juste "plperl.so" et le "libperl.so.5.10.1" installé par Ubuntu.
Ma déduction logique serait de dire que le plperl de PostgreSQL 9.1 est incompatible avec le Ubuntu 10.04... c'est surprenant quand même
Dernière modification par bebert73 (29/10/2011 17:54:57)
Hors ligne
Ca se confirme, à mon avis PL/PERL ne peut pas être installé avec PostgreSQL 9.1 sous Ubuntu 10.04
Je suis tombé sur ça :
http://packages.ubuntu.com/fr/oneiric/p … plperl-9.1
PL/PERL 9.1 nécessite la version 5.12.4 minimum de perl.
Or Ubuntu 10.04 ne possède que la version 5.10, et impossible via les dépôts d'installer une version supérieure. J'ai bien essayé de l'installer manuellement, mais perl 5.12 exige au préalable qu'on désinstalle perl 5.10, or avec toutes les dépendances la désinstallation est une usine à gaz.
Bref, je vais tout simplement installer la toute dernière version d'Ubuntu pour utiliser PG 9.1.
Hors ligne