Bonjour, bonsoir.
Je vous souhaite une superbe bonne année. Que tous nos projets les plus fous, ceux (que nous) réalis.e.ons se concrétisent La bonne santé à toutes, et tous !
Bon sinon çà fait 3 jours que j’essaie d’installer « perl » dans un non-standard répertoire.
Je souhaitais installer/tester une installation de « perl » dans un répertoire Linux autre que celui par default.
-
Premièrement pour ne pas casser le « perl » de la machine.
-
Deuxièmement pour tester l’installation depuis la dernière version de « perl ».
-
Troisièmement pour apprendre « perl » et pouvoir faire ce que je veux dans les répertoires, tester les modules, apprendre le « perl » (je ne connais pas, ou très furtivement ce langage, le « perl »).
En plus de pouvoir être un langage Web (CGI.pm), il peut travailler avec la machine (je ne sais pas trop expliquer) ou avec des « composants » externes grâce aux sockets ou interaction en dehors du protocole Web (HTTP/HTTPS).
C’est, donc, un language que j’aimerai connaitre, le « perl ».
J’ai, donc, installé un environnement « perl » dans le répertoire de ma « homedirectory ».
Je vous explique où j’en suis, et comment j’ai fais pour installer « perl » dans mon répertoire personnel → certes c’est sûrement pas le meilleur tutoriel mais pour l’instant j’arrive à lancer des scripts depuis mon environnement personnel et en mon utilisateur.
J’ai installé la dernière version « stable », la perl-5.36.0.
Je tourne sur une distribution Linux Debian 11 (bullseye) (noyau d’installation, le 5.10.0-19) où j’ai installé le noyau Linux (une version 6.0.9) que j’ai récupérais depuis kernel.org - Pour l’instant tout va bien - C’est un VPS d’OVH (4,10 € /mois TTC) loué pour faire des essaies de l’« actualité Linux ».
/!\ Je ne suis pas « administrateur système » de profession (plutôt développeur Web et passionné de bons réseaux) et d’autres peuvent vous aider (ainsi que moi) et tout les jours sur ce langage entre autre. Je préfère écrire ce « papier » / discussion pour que des professionnel.les puissent m’aider et vous aider si vous souhaitez essayer ce language, le « perl ».
WikipediA : Perl est un langage de programmation créé par Larry Wall en 1987 pour traiter facilement de l’information de type textuel. Ce langage, interprété, s’inspire des structures de contrôle et d’impression du langage C, mais aussi de langages de scripts sed, awk et et shell (sh).
J’écris cette méthode pour installer « perl » dans son répertoire personnel Linux.
Je vous lie les documentions Web qui m’ont aidés :
Perl Source - www.cpan.org
INSTALL - Build and Installation guide for perl 5. - metacpan.org
local::lib - create and use a local lib/ for perl modules with PERL5LIB
FindBin - Locate directory of original perl script - metacpan.org
Others :
Installation into a Nonstandard Directory (Practical mod_perl)
Install and manage Perl modules in your home directory on Carbonate
Vous pouvez installer « perl » sous Windows. Sur MacOS il est déjà installé (peut-être que ce « sujet » peut vous intéresser aussi, si vous souhaitez installer « perl » dans votre répertoire perso).
FAQ Perl * Comment installer Perl ?
IDE ( Integrated Development Environment) : EPIC (Eclipse Perl Integration) - How To Install
Lien complémentaire :
Installation des modules Perl CPAN (Comprehensive Perl Archive Network) sous Windows, Linux et MacOS
Perl Examples 1997 of Matthew Lewis
guru99.com → Perl Tutorial: Variable, Array, Hashes with Programming Example : The tutorial is specially designed to help them who has little or no knowledge on Perl
Linuxtricks.fr → PERL : Mémo pour scripter - Wiki : Introduction Je script, je script, mais parfois, j’ai un sacré trou de mémoire … et je galère à trouver ce que je cherche sur…
Bon rentrons dans le sujet :
1èrement j’ai vérifié la version de mon environnement :
root@vps:/home/orj # perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for x86_64-linux-gnu-thread-multi
(with 47 registered patches, see perl -V for more detail)
Copyright 1987-2021, Larry Wall....
J’ai, donc la version de 5.32.1.
Puis j’ai vérifié l’environnement :
root@vps:/home/orj # perl -V
Summary of my perl5 (revision 5 version 32 subversion 1) configuration:
Platform:
osname=linux
osvers=4.19.0
archname=x86_64-linux-gnu-thread-multi
uname='linux localhost 4.19.0 #1 smp debian 4.19.0 x86_64 gnulinux '
config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1'
hint=recommended
useposix=true
d_sigaction=define
useithreads=define
usemultiplicity=define
use64bitint=define
use64bitall=define
uselongdouble=undef
usemymalloc=n
default_inc_excludes_dot=define
bincompat5005=undef
Compiler:
cc='x86_64-linux-gnu-gcc'
ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
optimize='-O2 -g'
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include'
ccversion=''
gccversion='10.2.1 20210110'
gccosandvers=''
intsize=4
longsize=8
ptrsize=8
doublesize=8
byteorder=12345678
doublekind=3
d_longlong=define
longlongsize=8
d_longdbl=define
longdblsize=16
longdblkind=3
ivtype='long'
ivsize=8
nvtype='double'
nvsize=8
Off_t='off_t'
lseeksize=8
alignbytes=8
prototype=define
Linker and Libraries:
ld='x86_64-linux-gnu-gcc'
ldflags =' -fstack-protector-strong -L/usr/local/lib'
libpth=/usr/local/lib /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=libc-2.31.so
so=so
useshrplib=true
libperl=libperl.so.5.32
gnulibc_version='2.31'
Dynamic Linking:
dlsrc=dl_dlopen.xs
dlext=so
d_dlsymun=undef
ccdlflags='-Wl,-E'
cccdlflags='-fPIC'
lddlflags='-shared -L/usr/local/lib -fstack-protector-strong'
Characteristics of this binary (from libperl):
Compile-time options:
HAS_TIMES
MULTIPLICITY
PERLIO_LAYERS
PERL_COPY_ON_WRITE
PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT
PERL_MALLOC_WRAP
PERL_OP_PARENT
PERL_PRESERVE_IVUV
USE_64_BIT_ALL
USE_64_BIT_INT
USE_ITHREADS
USE_LARGE_FILES
USE_LOCALE
USE_LOCALE_COLLATE
USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC
USE_LOCALE_TIME
USE_PERLIO
USE_PERL_ATOF
USE_REENTRANT_API
USE_THREAD_SAFE_LOCALE
Locally applied patches:
DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
[.......]
DEBPKG:fixes/regcomp-memleak - https://bugs.debian.org/994834 [GH #18604] [5f41fa4] regcomp.c: Remove memory leak
Built under linux
Compiled at Sep 24 2021 16:10:58
@INC:
/etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.32.1
/usr/local/share/perl/5.32.1
/usr/lib/x86_64-linux-gnu/perl5/5.32
/usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl-base
/usr/lib/x86_64-linux-gnu/perl/5.32
/usr/share/perl/5.32
/usr/local/lib/site_perl
j’ai lu sur la page INSTALL - Build and Installation guide for perl 5, la commande perl -V:config_args
qui m’a permis de l’envoyer par rapport à ma configuration personnelle/souhaitée.
root@vps:/home/orj/perl-5.36.0 # perl -V:config_args
config_args='-Dmksymlinks -Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/dummy/build/dir=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.32 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.32 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.32 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.32.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.32.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Ui_xlocale -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.32.1';
Entre parenthèse : je ne trouvais pas le Makefile.PL
dans la racine du tar.gz téléchargé → il y a un fichier Configure
(SH) qui permet de configurer notre installation personnalisée.
J’ai téléchargé et décompréssé l’archive tar.gz sur le site de perl (et attribué les droits à mon utilisateur « orj ») :
orj@vps:~ # wget https://www.cpan.org/src/5.0/perl-5.36.0.tar.gz
orj@vps:~ # tar xzvfp perl-5.36.0.tar.gz
orj@vps:~ # sudo chown orj.lab3w perl-5.36.0 -R
Donc, dans mon répertoire personnel, j’ai créais un dossier « myperl5 » pour y placer « perl ».
orj@vps:~ # mkdir myperl5
orj@vps:~ # mkdir myperl5/common/
orj@vps:~ # mkdir myperl5/common/bin/
orj@vps:~ # mkdir myperl5/common/lib/
orj@vps:~ # mkdir myperl5/share/
Je retourne dans le répertoire des sources de « perl-5.36.0 » puis j’envoie la configuration adaptée à mon répertoire personnel :
orj@vps:~ # cd perl-5.36.0
J’hésite entre configurer x86_64-linux-gnu
ou x86_64-linux-gnu-thread-multi
:
- Différence entre le résultat de la commande
perl -V:config_args -> -Darchname=x86_64-linux-gnu
- et le retour de la commande
perl -V
qui me retournPlateform -> archname=x86_64-linux-gnu-thread-multi
Donc, je configure la demande d’installation de « perl » dans un répertoire non-standard → mon répertoire personnel :
orj@vps:~/perl-5.36.0 # sh Configure \
-Dusethreads \
-Dcc=x86_64-linux-gnu-gcc \
-Dcpp=x86_64-linux-gnu-cpp \
-Dld=x86_64-linux-gnu-gcc \
-Dccflags=-DDEBIAN
-Darchname=x86_64-linux-gnu \
-Dprefix=/home/orj/myperl5/ \
-Dscript=/home/orj/myperl5/common/bin \
-Dprivlib=/home/orj/myperl5/common/lib/perl/5.36 \
-Darchlib=/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36 \
-Dvendorprefix=/home/orj/myperl5/ \
-Dvendorlib=/home/orj/myperl5/common/lib/perl5 \
-Dvendorarch=/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5/5.36 \
-Dsiteprefix=/home/orj/myperl5/ \
-Dsitelib=/home/orj/myperl5/common/share/perl/5.36.0 \
-Dsitearch=/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0
J’y suis arrivé comme cela - Peut-être qu’il a des « meilleures » options à ajouter.
J’ai validé « entrer » sur les options par default « vais-je dire » → sauf celles qui récupérées les réperoires « standards » ou qui touchées à « perl » du système.
Je n’ai pas ajouté de modules « extra » - sinon il me manquait des dépendances.
Ensuite, donc, envoyer les commandes suivantes :
orj@vps:~/perl-5.36.0 # make
orj@vps:~/perl-5.36.0 # make test
orj@vps:~/perl-5.36.0 # make install
Je me retrouve avec les répertoires suivant :
orj@vps:~ # ls -l myperl5/
total 8
drwxr-xr-x 6 orj lab3w 4096 Jan 3 16:26 common
drwxr-xr-x 2 orj lab3w 4096 Jan 3 16:26 share
orj@vps:~ # ls -l myperl5/common/
total 16
drwxr-xr-x 2 orj lab3w 4096 Jan 3 16:26 bin
drwxr-xr-x 4 orj lab3w 4096 Jan 3 16:26 lib
drwxr-xr-x 4 orj lab3w 4096 Jan 3 16:27 man
drwxr-xr-x 3 orj lab3w 4096 Jan 3 16:26 share
orj@vps:~ # ls myperl5/common/bin/
perl perl5.36.0
orj@vps:~ # ls -l myperl5/common/bin/perl
-rwxr-xr-x 2 orj lab3w 3951072 Jan 3 16:26 myperl5/common/bin/perl
orj@vps:~ # ls -l myperl5/common/lib/perl/5.36/
total 1776
[........]
drwxr-xr-x 10 orj lab3w 4096 Jan 3 16:26 CPAN
-r--r--r-- 1 orj lab3w 147862 Jan 3 16:26 CPAN.pm
[........]
-r--r--r-- 1 orj lab3w 55916 Jan 3 16:26 warnings.pm
orj@vps:~/myperl5 # ls -l myperl5/share/
total 532
-rwxr-xr-x 1 orj lab3w 15393 Jan 3 16:26 corelist
-rwxr-xr-x 1 orj lab3w 8378 Jan 3 16:26 cpan
-rwxr-xr-x 1 orj lab3w 41898 Jan 3 16:26 enc2xs
-rwxr-xr-x 1 orj lab3w 3087 Jan 3 16:26 encguess
-rwxr-xr-x 1 orj lab3w 29245 Jan 3 16:26 h2ph
-rwxr-xr-x 1 orj lab3w 60952 Jan 3 16:26 h2xs
-rwxr-xr-x 1 orj lab3w 4308 Jan 3 16:26 instmodsh
-rwxr-xr-x 1 orj lab3w 5010 Jan 3 16:26 json_pp
-rwxr-xr-x 1 orj lab3w 15796 Jan 3 16:26 libnetcfg
-rwxr-xr-x 2 orj lab3w 45197 Jan 3 16:26 perlbug
-rwxr-xr-x 1 orj lab3w 280 Jan 3 16:26 perldoc
-rwxr-xr-x 1 orj lab3w 10843 Jan 3 16:26 perlivp
-rwxr-xr-x 2 orj lab3w 45197 Jan 3 16:26 perlthanks
-rwxr-xr-x 1 orj lab3w 8378 Jan 3 16:26 piconv
-rwxr-xr-x 1 orj lab3w 4554 Jan 3 16:26 pl2pm
-rwxr-xr-x 1 orj lab3w 4155 Jan 3 16:26 pod2html
-rwxr-xr-x 1 orj lab3w 15052 Jan 3 16:26 pod2man
-rwxr-xr-x 1 orj lab3w 10821 Jan 3 16:26 pod2text
-rwxr-xr-x 1 orj lab3w 4116 Jan 3 16:26 pod2usage
-rwxr-xr-x 1 orj lab3w 3667 Jan 3 16:26 podchecker
-rwxr-xr-x 1 orj lab3w 13677 Jan 3 16:26 prove
-rwxr-xr-x 1 orj lab3w 3584 Jan 3 16:26 ptar
-rwxr-xr-x 1 orj lab3w 2663 Jan 3 16:26 ptardiff
-rwxr-xr-x 1 orj lab3w 4413 Jan 3 16:26 ptargrep
-rwxr-xr-x 1 orj lab3w 9997 Jan 3 16:26 shasum
-rwxr-xr-x 1 orj lab3w 19467 Jan 3 16:26 splain
-rwxr-xr-x 1 orj lab3w 7959 Jan 3 16:26 streamzip
-rwxr-xr-x 1 orj lab3w 5185 Jan 3 16:26 xsubpp
-rwxr-xr-x 1 orj lab3w 70211 Jan 3 16:26 zipdetails
J’ai dû recharger mon fichier .bashrc
ou me déconnecter et me re-identifier.
orj@vps:~/myperl5 # source /home/orj/.bashrc
Mes variables « ajoutées » à .bashrc
sont celles-ci :
# après plusieurs test d'intallation
#PATH="/home/orj/perl5/bin${PATH:+:${PATH}}"; export PATH;
#PERL5LIB="/home/orj/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
#PERL_LOCAL_LIB_ROOT="/home/orj/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
#PERL_MB_OPT="--install_base \"/home/orj/perl5\""; export PERL_MB_OPT;
#PERL_MM_OPT="INSTALL_BASE=/home/orj/perl5"; export PERL_MM_OPT;
# J'ai configuré comme cela
#eval `/usr/bin/perl -V:archname`
PATH="/home/orj/myperl5/common/bin${PATH:+:${PATH}}"; export PATH;
#PERL5LIB="/home/orj/myperl5/common/lib/perl/$archname:/home/orj/myperl5/common/lib/perl/5.36${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL5LIB="/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36:/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0:/home/orj/myperl5/common/lib/perl/5.36${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERLLIB=$PERL5LIB; export PERLLIB;
#PERL_LOCAL_LIB_ROOT="/home/orj/myperl5/common/lib/perl/$archname:/home/orj/myperl5/common/lib/perl/5.36${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_LOCAL_LIB_ROOT=$PERL5LIB; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/home/orj/myperl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/home/orj/myperl5"; export PERL_MM_OPT;
Qui me retourne le résultat de la commande « /home/orj/myperl5/common/bin/perl -V
»
orj@vps:~ # perl -V
Summary of my perl5 (revision 5 version 36 subversion 0) configuration:
Platform:
osname=linux
osvers=6.0.9-ninja
archname=x86_64-linux-gnu-thread-multi
uname='linux vps 6.0.9-ninja #2 smp preempt_dynamic thu dec 15 19:58:40 utc 2022 x86_64 gnulinux '
config_args='-Dusethreads -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Darchname=x86_64-linux-gnu -Dprefix=/home/orj/myperl5/ -Dscript=/home/orj/myperl5/common/bin -Dprivlib=/home/orj/myperl5/common/lib/perl/5.36 -Darchlib=/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36 -Dvendorprefix=/home/orj/myperl5/ -Dvendorlib=/home/orj/myperl5/common/lib/perl5 -Dvendorarch=/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5/5.36 -Dsiteprefix=/home/orj/myperl5/ -Dsitelib=/home/orj/myperl5/common/share/perl/5.36.0 -Dsitearch=/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0'
hint=previous
useposix=true
d_sigaction=define
useithreads=define
usemultiplicity=define
use64bitint=define
use64bitall=define
uselongdouble=undef
usemymalloc=n
default_inc_excludes_dot=define
Compiler:
cc='x86_64-linux-gnu-gcc'
ccflags ='-DDEBIAN -fwrapv -D_FORTIFY_SOURCE=2'
optimize='-O2'
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
ccversion=''
gccversion='10.2.1 20210110'
gccosandvers=''
intsize=4
longsize=8
ptrsize=8
doublesize=8
byteorder=12345678
doublekind=3
d_longlong=define
longlongsize=8
d_longdbl=define
longdblsize=16
longdblkind=3
ivtype='long'
ivsize=8
nvtype='double'
nvsize=8
Off_t='off_t'
lseeksize=8
alignbytes=8
prototype=define
Linker and Libraries:
ld='x86_64-linux-gnu-gcc'
ldflags =' -fstack-protector-strong -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib /usr/lib64
libs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
libc=libc-2.31.so
so=so
useshrplib=false
libperl=libperl.a
gnulibc_version='2.31'
Dynamic Linking:
dlsrc=dl_dlopen.xs
dlext=so
d_dlsymun=undef
ccdlflags='-Wl,-E'
cccdlflags='-fPIC'
lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'
Characteristics of this binary (from libperl):
Compile-time options:
HAS_TIMES
MULTIPLICITY
PERLIO_LAYERS
PERL_COPY_ON_WRITE
PERL_DONT_CREATE_GVSV
PERL_MALLOC_WRAP
PERL_OP_PARENT
PERL_PRESERVE_IVUV
USE_64_BIT_ALL
USE_64_BIT_INT
USE_ITHREADS
USE_LARGE_FILES
USE_LOCALE
USE_LOCALE_COLLATE
USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC
USE_LOCALE_TIME
USE_PERLIO
USE_PERL_ATOF
USE_REENTRANT_API
USE_THREAD_SAFE_LOCALE
Built under linux
Compiled at Jan 3 2023 15:58:34
%ENV:
PERL5LIB="/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36:/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0:/home/orj/myperl5/common/lib/perl/5.36"
PERLLIB="/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36:/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0:/home/orj/myperl5/common/lib/perl/5.36"
PERL_LOCAL_LIB_ROOT="/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36:/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0:/home/orj/myperl5/common/lib/perl/5.36"
PERL_MB_OPT="--install_base "/home/orj/myperl5""
PERL_MM_OPT="INSTALL_BASE=/home/orj/myperl5"
@INC:
/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36
/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0
/home/orj/myperl5/common/lib/perl/5.36
/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5.36.0
/home/orj/myperl5/common/share/perl/5.36.0
/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl5/5.36
/home/orj/myperl5/common/lib/perl5
/home/orj/myperl5/common/lib/x86_64-linux-gnu/perl/5.36
/home/orj/myperl5/common/lib/perl/5.36
Et la commande « perl -v
» (/home/orj/myperl5/common/bin/perl
) depuis mon utilisateur « orj » :
orj@vps:~ # perl -v
This is perl 5, version 36, subversion 0 (v5.36.0) built for x86_64-linux-gnu-thread-multi
Copyright 1987-2022, Larry Wall
[...]
Puis j’ai testé un script perso « perl » :
orj@vps:~/myperl5 # mkdir myscripts
orj@vps:~/myperl5 # vim myscripts/helloworld.pl
use strict;
use warnings;
use FindBin;
use File::Spec;
print "\n//--------------------------------------------\n\n";
my $firstname = "ORJ";
print "Hello World, my name is $firstname !\n";
print "Hello World, my name is ${firstname} !\n";
print 'Hello World, my name is '.$firstname.' !'."\n";
print "Hello World, my name is ".$firstname." !\n";
print "\n//--------------------------------------------\n\n";
print "Le répertoire de mon script est : " . ${FindBin::Bin} . "\n";
print "Le nom de base de mon script est : " . $FindBin::Script . "\n";
print "L'emplacement canonique de mon script est : " . File::Spec->catfile($FindBin::Bin, $FindBin::Script) . "\n";
print "\n//--------------------------------------------\n\n";
Qui me retourne → Whouha
orj@vps:~/myperl5 # perl myscripts/helloworld.pl
//--------------------------------------------
Hello World, my name is ORJ !
Hello World, my name is ORJ !
Hello World, my name is ORJ !
Hello World, my name is ORJ !
//--------------------------------------------
Le répertoire de mon script est : /home/orj/myperl5/myscripts
Le nom de base de mon script est : helloworld.pl
L'emplacement canonique de mon script est : /home/orj/myperl5/myscripts/helloworld.pl
//--------------------------------------------
Sinon à titre d’information :
L’installation m’a créait un répertoire .cpan
dans ma « homedirectory ».
orj@vps:~ # ls -l .cpan/
total 40728
drwxr-xr-x 2 orj lab3w 4096 Jan 3 16:40 CPAN
-rw-r--r-- 1 orj lab3w 41685103 Jan 3 15:35 Metadata
drwxr-xr-x 31 orj lab3w 4096 Jan 3 15:39 build
drwxr-xr-x 2 orj lab3w 4096 Jan 3 15:36 prefs
drwxr-xr-x 4 orj lab3w 4096 Jan 3 15:35 sources
J’ai mon fichier « personnel » de configuration :
orj@vps:~ # cat .cpan/CPAN/MyConfig.pm
$CPAN::Config = {
'allow_installing_module_downgrades' => q[ask/no],
'allow_installing_outdated_dists' => q[ask/no],
'applypatch' => q[],
'auto_commit' => q[0],
'build_cache' => q[100],
'build_dir' => q[/home/orj/.cpan/build],
'build_dir_reuse' => q[0],
'build_requires_install_policy' => q[yes],
'bzip2' => q[/usr/bin/bzip2],
'cache_metadata' => q[1],
'check_sigs' => q[0],
'cleanup_after_install' => q[0],
'commandnumber_in_prompt' => q[1],
'connect_to_internet_ok' => q[1],
'cpan_home' => q[/home/orj/.cpan],
'ftp_passive' => q[1],
'ftp_proxy' => q[],
'getcwd' => q[cwd],
'gpg' => q[/usr/bin/gpg],
'gzip' => q[/usr/bin/gzip],
'halt_on_failure' => q[0],
'histfile' => q[/home/orj/.cpan/histfile],
'histsize' => q[100],
'http_proxy' => q[],
'inactivity_timeout' => q[0],
'index_expire' => q[1],
'inhibit_startup_message' => q[0],
'keep_source_where' => q[/home/orj/.cpan/sources],
'load_module_verbosity' => q[none],
'make' => q[/usr/bin/make],
'make_arg' => q[],
'make_install_arg' => q[],
'make_install_make_command' => q[/usr/bin/make],
'makepl_arg' => q[],
'mbuild_arg' => q[],
'mbuild_install_arg' => q[],
'mbuild_install_build_command' => q[./Build],
'mbuildpl_arg' => q[],
'no_proxy' => q[],
'pager' => q[/usr/bin/less],
'patch' => q[/usr/bin/patch],
'perl5lib_verbosity' => q[none],
'plugin_list' => [],
'prefer_external_tar' => q[1],
'prefer_installer' => q[MB],
'prefs_dir' => q[/home/orj/.cpan/prefs],
'prerequisites_policy' => q[follow],
'pushy_https' => q[1],
'recommends_policy' => q[1],
'scan_cache' => q[atstart],
'shell' => q[/bin/bash],
'show_unparsable_versions' => q[0],
'show_upload_date' => q[0],
'show_zero_versions' => q[0],
'suggests_policy' => q[0],
'tar' => q[/usr/bin/tar],
'tar_verbosity' => q[none],
'term_is_latin' => q[1],
'term_ornaments' => q[1],
'test_report' => q[0],
'trust_test_report_history' => q[0],
'unzip' => q[/usr/bin/unzip],
'urllist' => [q[https://cpan.org/]],
'use_prompt_default' => q[0],
'use_sqlite' => q[0],
'version_timeout' => q[15],
'wget' => q[/usr/bin/wget],
'yaml_load_code' => q[0],
'yaml_module' => q[YAML],
};
1;
__END__
Je n’ai pas encore « essayer » d’installer d’autres modules à mon répertoire.
Comme je le disais, j’ai écris ce papier pour « manque d’informations FRançaise » sur ce language - Installation / programation etc
Je vous ajoute le manuel, la Documentation Perl en français - Chaque document est disponible au format POD (original), HTML, PDF et *ROFF (man). L’ensemble de cette documentation existe maintenant sous la forme d’un module Perl. Il s’appelle POD2::FR
et il est disponible sur CPAN
Merci pour votre compréhension et pour votre participation
Pour celles et ceux qui auraient réussis à suivre c’est pour pouvoir installer Mail::Dmarc
à SpamAssassin de Zimbra → SpamAssassin - DMARC Filter + Email Reporting entre autres
À demain
Bonne soirée.
Romain