OVH Cloud OVH Cloud

Module et rep. d'installation personnalise

4 réponses
Avatar
Tony Moutaux
Bonjour a tous.

Je m'essaie un peu a Perl. Je dispose d'un compte sur un serveur
fonctionnant sous Unix. Mes droits sont restreints. Le systeme dispoe de
Perl mais pas de tous les modules que j'aimerais utiliser. Il me faut
donc en ajouter. Apres avoir ramener une archive du CPAN (par exemple
MIME::Base64 ou MailTools etc), gunzip et tar -xf, je peux lancer la
creation du makefile, la compilatione t les tests. Lorsque je demande
une bete installation, bien sur n'ayant pas les droits d'administration,
je me fais jeter.

Je cherche depuis hier les options pour indiquer un repertoire personnel
pour installer les modules une fois compiler. J'ai beau m'echiner avec
des options comme PREFIX, LIB ou INSTALLPRIVLIB dans le Makefile.PL
apparemment le "make install" s'en moque completement.

Comment installer un module dans un repertoire alternatif de
l'installation principale ? (Pour l'utilisation, ma variable PERL5LIB
est deja positionnee.)

Merci de votre aide.
Tony

4 réponses

Avatar
none
Tony Moutaux wrote:
Bonjour a tous.

Je m'essaie un peu a Perl. Je dispose d'un compte sur un serveur
fonctionnant sous Unix. Mes droits sont restreints. Le systeme dispoe de
Perl mais pas de tous les modules que j'aimerais utiliser. Il me faut
donc en ajouter. Apres avoir ramener une archive du CPAN (par exemple
MIME::Base64 ou MailTools etc), gunzip et tar -xf, je peux lancer la
creation du makefile, la compilatione t les tests. Lorsque je demande
une bete installation, bien sur n'ayant pas les droits d'administration,
je me fais jeter.

Je cherche depuis hier les options pour indiquer un repertoire personnel
pour installer les modules une fois compiler. J'ai beau m'echiner avec
des options comme PREFIX, LIB ou INSTALLPRIVLIB dans le Makefile.PL
apparemment le "make install" s'en moque completement.

Comment installer un module dans un repertoire alternatif de
l'installation principale ? (Pour l'utilisation, ma variable PERL5LIB
est deja positionnee.)

Merci de votre aide.
Tony

Sans vouloir trop m'avancer, je crois qu'il suffit d'ajouter les

répertoires contenant tes modules dans @INC. En effet, quand il ne
trouve pas un module, il te dit que le .pm que tu veux utiliser n'est
pas contenu dans @INC.

Qu'on me corrige si je me trompe!!!

Avatar
Tony Moutaux
Bonjour et merci pour cette idee.

none wrote:
Tony Moutaux wrote:
...
Je cherche depuis hier les options pour indiquer un repertoire
personnel pour installer les modules une fois compiler. J'ai beau
m'echiner avec des options comme PREFIX, LIB ou INSTALLPRIVLIB dans le
Makefile.PL apparemment le "make install" s'en moque completement.
...

Sans vouloir trop m'avancer, je crois qu'il suffit d'ajouter les
répertoires contenant tes modules dans @INC. En effet, quand il ne
trouve pas un module, il te dit que le .pm que tu veux utiliser n'est
pas contenu dans @INC.

Qu'on me corrige si je me trompe!!!


Je ne suis pas sur que @INC serve a l'installation des modules et
permette d'indiquer le repertoire cible pour cette installation.

Je vais quand meme refourer mon nez dans tout ca. Mais si j'ai bien @INC
et les variable PERL5LIB et PERLIB ainsi qu'une "use" vers le path d'une
librairie, cela sert plutot a l'execution.

Mon probleme c'est a l'installation, apres compilation du module, je
voudrais placer le resultat dans un repertoire perso plutot que dans les
communs du systeme (auxquels je n'ai d'ailleurs pas acces).

Tony


Avatar
Dav'
Mon probleme c'est a l'installation, apres compilation du module, je
voudrais placer le resultat dans un repertoire perso plutot que dans
les

communs du systeme (auxquels je n'ai d'ailleurs pas acces).


Bonjour,

Alors je crois qu'il ne faut pas modifier le makefile mais l'executer
dans ton shell en fixant les variables d'environement suivantes :

PERL5LIB=/users/moi/pmodules/lib/perl5/site_perl/5.005/:/users/moi/pmodul es/lib/perl5/5.00503

PERLMAN=/users/moi/pmodules/pman/

Pour lancer le make j'ai fait :

perl Makefile.PL PREFIX=$HOME/moi/pmodules/
INSTALLMAN1DIR=$PERLMAN/man1 INSTALLMAN3DIR=$PERLMAN/man3

Ceci va construire ton module dans $HOME/moi/pmodules/ et les sous
repertoires. Ce chemin ne sera effectivement pas dans le @INC par
defaut de Perl lors de l'execution du script. Pour specifier que ce
repertoire doit etre utilisé pour rechercher les modules il faut faire
:

use lib qw( /chemin/des/modules ) ;

Avatar
Tony Moutaux
Merci beaucoup Dav' !

En fait en fouillant ce matin, je suis tomber sur INSTALLMAN1DIR et j'ai
vu ou ca "couillait" a l'install : les pages man. J'ai fouille et trouve
qu'on pouvait specifier le repertoire des man pages ou meme supprimer
leur installation avec INSTALLMAN1DIR=none (pareil avec la 3).

Bref tu as donne exactement la reponse que j'ai trouve. Ca me conforte :
je ne me suis pas plante ;-)

Merci.
Tony