541 lines
13 KiB
Markdown
541 lines
13 KiB
Markdown
# Installer Perl
|
|
|
|
|
|
|
|
macOS Catalina est livré avec Perl:
|
|
|
|
```bash
|
|
$ which perl
|
|
/usr/bin/perl
|
|
|
|
$ perl -v
|
|
|
|
This is perl 5, version 18, subversion 4 (v5.18.4) built for darwin-thread-multi-2level
|
|
(with 2 registered patches, see perl -V for more detail)
|
|
```
|
|
|
|
|
|
|
|
### Homebrew:
|
|
|
|
On peut installer une version plus récente de Perl avec Homebrew:
|
|
|
|
```bash
|
|
$ brew install perl
|
|
```
|
|
|
|
```bash
|
|
$ brew info perl
|
|
zsh: correct 'perl' to 'perl5' [nyae]? n
|
|
|
|
perl: stable 5.30.0 (bottled), HEAD
|
|
Highly capable, feature-rich programming language
|
|
https://www.perl.org/
|
|
/usr/local/Cellar/perl/5.30.0 (2,440 files, 61.8MB) *
|
|
Poured from bottle on 2019-08-04 at 13:32:46
|
|
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/perl.rb
|
|
==> Options
|
|
--HEAD
|
|
Install HEAD version
|
|
==> Caveats
|
|
By default non-brewed cpan modules are installed to the Cellar. If you wish
|
|
for your modules to persist across updates we recommend using `local::lib`.
|
|
|
|
You can set that up like this:
|
|
PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib
|
|
echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"' >> ~/.zshrc
|
|
```
|
|
|
|
```bash
|
|
$ which perl
|
|
/usr/local/bin/perl
|
|
|
|
$ perl -v
|
|
|
|
This is perl 5, version 30, subversion 0 (v5.30.0) built for darwin-thread-multi-2level
|
|
|
|
Copyright 1987-2019, Larry Wall
|
|
|
|
Perl may be copied only under the terms of either the Artistic License or the
|
|
GNU General Public License, which may be found in the Perl 5 source kit.
|
|
|
|
Complete documentation for Perl, including FAQ lists, should be found on
|
|
this system using "man perl" or "perldoc perl". If you have access to the
|
|
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
|
|
```
|
|
|
|
#### cpan:
|
|
|
|
**cpan** gère les modules Perl.
|
|
|
|
```bash
|
|
$ cpan
|
|
Loading internal logger. Log::Log4perl recommended for better logging
|
|
|
|
CPAN.pm requires configuration, but most of it can be done automatically.
|
|
If you answer 'no' below, you will enter an interactive dialog for each
|
|
configuration option instead.
|
|
|
|
Would you like to configure as much as possible automatically? [yes] yes
|
|
|
|
|
|
Autoconfiguration complete.
|
|
|
|
commit: wrote '/Users/bruno/.cpan/CPAN/MyConfig.pm'
|
|
|
|
You can re-run configuration any time with 'o conf init' in the CPAN shell
|
|
Terminal does not support AddHistory.
|
|
|
|
To fix enter> install Term::ReadLine::Perl
|
|
|
|
|
|
cpan shell -- CPAN exploration and modules installation (v2.22)
|
|
Enter 'h' for help.
|
|
```
|
|
|
|
Sans argument, la commande **cpan** ouvre un shell:
|
|
|
|
```bash
|
|
$ cpan
|
|
Loading internal logger. Log::Log4perl recommended for better logging
|
|
|
|
cpan shell -- CPAN exploration and modules installation (v2.27)
|
|
Enter 'h' for help.
|
|
|
|
cpan[1]> h
|
|
```
|
|
|
|
```bash
|
|
cpan[1]> h
|
|
|
|
Display Information (ver 2.27)
|
|
command argument description
|
|
a,b,d,m WORD or /REGEXP/ about authors, bundles, distributions, modules
|
|
i WORD or /REGEXP/ about any of the above
|
|
ls AUTHOR or GLOB about files in the author's directory
|
|
(with WORD being a module, bundle or author name or a distribution
|
|
name of the form AUTHOR/DISTRIBUTION)
|
|
|
|
Download, Test, Make, Install...
|
|
get download clean make clean
|
|
make make (implies get) look open subshell in dist directory
|
|
test make test (implies make) readme display these README files
|
|
install make install (implies test) perldoc display POD documentation
|
|
|
|
Upgrade installed modules
|
|
r WORDs or /REGEXP/ or NONE report updates for some/matching/all
|
|
upgrade WORDs or /REGEXP/ or NONE upgrade some/matching/all modules
|
|
|
|
Pragmas
|
|
force CMD try hard to do command fforce CMD try harder
|
|
notest CMD skip testing
|
|
|
|
Other
|
|
h,? display this menu ! perl-code eval a perl command
|
|
o conf [opt] set and query options q quit the cpan shell
|
|
reload cpan load CPAN.pm again reload index load newer indices
|
|
autobundle Snapshot recent latest CPAN uploads
|
|
```
|
|
|
|
La commande **cpan** peut aussi s'utiliser avec arguments:
|
|
|
|
|
|
|
|
Avec <u>Perl installé via homebrew</u>, les modules sont installés dans Cellar (`Installing /usr/local/Cellar/perl/5.30.0/lib/perl5/site_perl/5.30.0/CPAN/DistnameInfo.pm`). Ils sont donc perdu à chaque mise-à-jour de Perl.
|
|
|
|
Il est donc conseillé d'utiliser `local::lib`
|
|
|
|
```bash
|
|
PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib
|
|
echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"' >> ~/.zshrc
|
|
|
|
# les dossiers suivants sont crées:
|
|
# $HOME/perl5/bin/
|
|
# $HOME/perl5/lib/
|
|
#
|
|
# à côté de $HOME/perl5/perlbrew/
|
|
```
|
|
|
|
Les modules sont alors installés ici `Installing /Users/bruno/perl5/lib/perl5/Log/Log4perl.pm`
|
|
|
|
|
|
|
|
##### Info sur un module: `cpan -D <module>`
|
|
|
|
```bash
|
|
$ cpan -D CPAN::DistnameInfo
|
|
Reading '/Users/bruno/.cpan/Metadata'
|
|
Database was generated on Tue, 17 Dec 2019 07:29:02 GMT
|
|
CPAN::DistnameInfo
|
|
-------------------------------------------------------------------------
|
|
CPAN: Module::CoreList loaded ok (v5.20190522)
|
|
(no description)
|
|
G/GB/GBARR/CPAN-DistnameInfo-0.12.tar.gz
|
|
/usr/local/Cellar/perl/5.30.0/lib/perl5/site_perl/5.30.0/CPAN/DistnameInfo.pm
|
|
Installed: 0.12
|
|
CPAN: 0.12 up to date
|
|
Graham Barr (GBARR)
|
|
gbarr@pobox.com
|
|
```
|
|
|
|
|
|
|
|
##### Liste des modules installés: `cpan -l`
|
|
|
|
```bash
|
|
$ cpan -l
|
|
Spiffy 0.46
|
|
YAML 1.29
|
|
CPAN::DistnameInfo 0.12
|
|
App::pmuninstall 0.30
|
|
Test::YAML 1.07
|
|
```
|
|
|
|
|
|
|
|
##### Désintaller un module:
|
|
|
|
Il n'y a pas de commande prévue pour ça.
|
|
|
|
On peut installer [pmuninstall](https://github.com/xaicron/pm-uninstall).
|
|
|
|
```bash
|
|
$ cpan -i App::pmuninstall
|
|
```
|
|
|
|
Puis pour désinstaller:
|
|
|
|
```bash
|
|
$ pm-uninstall -v App::cpnaminus
|
|
```
|
|
|
|
|
|
|
|
##### Modules mis-à-jour:
|
|
|
|
On peut installer [cpanoutdated](https://github.com/tokuhirom/cpan-outdated)
|
|
|
|
```bash
|
|
$ cpan -i App::cpanoutdated
|
|
```
|
|
|
|
et voir les modules 'outdated'
|
|
|
|
```bash
|
|
$ cpan-outdated -p
|
|
Compress::Raw::Bzip2
|
|
Compress::Raw::Zlib
|
|
Compress::Zlib
|
|
DB_File
|
|
|
|
$ cpan-outdated
|
|
P/PM/PMQS/Compress-Raw-Bzip2-2.093.tar.gz
|
|
P/PM/PMQS/Compress-Raw-Zlib-2.093.tar.gz
|
|
P/PM/PMQS/IO-Compress-2.093.tar.gz
|
|
P/PM/PMQS/DB_File-1.852.tar.gz
|
|
```
|
|
|
|
|
|
|
|
Il est recommandé d'installer les modules suivants:
|
|
|
|
- Term::ReadLine::Perl (réclamé par le shell cpan)
|
|
|
|
- CPAN::DistnameInfo (réclamé par l'installeur de module)
|
|
- Log::Log4perl
|
|
|
|
|
|
|
|
### PerlBrew:
|
|
|
|
On peut installer d'autres versions de Perl avec [PerlBrew](https://perlbrew.pl).
|
|
|
|
Il faut au préalable installer **berkeley-db**, sans quoi il y aura une erreur à l'installer de Perl avec perlbrew.
|
|
|
|
```bash
|
|
$ brew install berkeley-db
|
|
```
|
|
|
|
#### Installation de perlbrew:
|
|
|
|
```bash
|
|
$ curl -L https://install.perlbrew.pl | bash
|
|
% Total % Received % Xferd Average Speed Time Time Time Current
|
|
Dload Upload Total Spent Left Speed
|
|
100 170 100 170 0 0 245 0 --:--:-- --:--:-- --:--:-- 245
|
|
100 1554 100 1554 0 0 1935 0 --:--:-- --:--:-- --:--:-- 1935
|
|
|
|
## Download the latest perlbrew
|
|
|
|
## Installing perlbrew
|
|
Using Perl </usr/bin/perl>
|
|
perlbrew is installed: ~/perl5/perlbrew/bin/perlbrew
|
|
|
|
perlbrew root (~/perl5/perlbrew) is initialized.
|
|
|
|
Append the following piece of code to the end of your ~/.bash_profile and start a
|
|
new shell, perlbrew should be up and fully functional from there:
|
|
|
|
source ~/perl5/perlbrew/etc/bashrc
|
|
|
|
Simply run `perlbrew` for usage details.
|
|
|
|
Happy brewing!
|
|
|
|
## Installing patchperl
|
|
|
|
## Done.
|
|
```
|
|
|
|
Pour zsh, on ajoute la ligne suivant à `.zshenv`
|
|
|
|
```bash
|
|
source /Users/bruno/perl5/perlbrew/etc/bashrc
|
|
```
|
|
|
|
|
|
|
|
##### Puis on installe la version de Perl que l'on veux:
|
|
|
|
```bash
|
|
# Installer la dernière version de Perl:
|
|
$ perlbrew install [options] stable
|
|
|
|
# Installer une version précise de Perl:
|
|
$ perlbrew install [options] 5.x.xx
|
|
|
|
```
|
|
|
|
##### Liste des versions de Perl installées (dans $PERLBREW_ROOT):
|
|
|
|
```bash
|
|
$ perlbrew list
|
|
perl-5.30.1
|
|
```
|
|
|
|
##### On choisit la version que l'on veut utiliser:
|
|
|
|
```bash
|
|
$ perlbrew use 5.30.1
|
|
--------------------------------------------------------------------------------
|
|
WARNING: zsh perlbrew sub-shell is not working on Mac OSX Lion.
|
|
|
|
It is known that on MacOS Lion, zsh always resets the value of PATH on launching
|
|
a sub-shell. Effectively nullify the changes required by perlbrew sub-shell. You
|
|
may `echo $PATH` to examine it and if you see perlbrew related paths are in the
|
|
end, instead of in the beginning, you are unfortunate.
|
|
|
|
You are advised to include the following line to your ~/.zshenv as a better
|
|
way to work with perlbrew:
|
|
|
|
source /Users/bruno/perl5/perlbrew/etc/bashrc
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
A sub-shell is launched with 5.30.1 as the activated perl. Run 'exit' to finish it.
|
|
|
|
silverbook%
|
|
```
|
|
|
|
Pour bash, on ajoute `source ~/perl5/perlbrew/etc/bashrc` au *~/.bash_profile*.
|
|
|
|
Pour zsh, on ajoute `source /Users/bruno/perl5/perlbrew/etc/bashrc` au *~/.zshenv*.
|
|
|
|
|
|
|
|
##### Choisir la version de Perl dans le shell courant:
|
|
|
|
|
|
```bash
|
|
# perlbrew use [perl-<version> | <version> | <name>]
|
|
|
|
$ perlbrew use 5.30.1
|
|
|
|
$ which perl
|
|
/Users/bruno/perl5/perlbrew/perls/perl-5.30.1/bin/perl
|
|
|
|
$ perl -v
|
|
|
|
This is perl 5, version 30, subversion 1 (v5.30.1) built for darwin-2level
|
|
(with 1 registered patch, see perl -V for more detail)
|
|
|
|
Copyright 1987-2019, Larry Wall
|
|
|
|
Perl may be copied only under the terms of either the Artistic License or the
|
|
GNU General Public License, which may be found in the Perl 5 source kit.
|
|
|
|
Complete documentation for Perl, including FAQ lists, should be found on
|
|
this system using "man perl" or "perldoc perl". If you have access to the
|
|
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
|
|
```
|
|
|
|
##### Afficher la version courante de Perl:
|
|
|
|
```bash
|
|
$ perlbrew use
|
|
Currently using perl-5.30.1
|
|
```
|
|
|
|
##### Changer de version de Perl pour le shell courant et les futures sessions:
|
|
|
|
```bash
|
|
# perlbrew switch [ <name> ]
|
|
|
|
$ perlbrew switch perl-5.30.1
|
|
|
|
# sans paramètre, affiche la version courante
|
|
$ perlbrew switch
|
|
Currently switched to perl-5.30.1
|
|
```
|
|
|
|
##### Désactiver temporairement perlbrew (dans le shell courant):
|
|
|
|
```bash
|
|
# et reactiver le Perl par défaut
|
|
$ perlbrew off
|
|
```
|
|
|
|
##### Désactiver perlbrew:
|
|
|
|
```bash
|
|
# et reactiver le Perl par défaut
|
|
$ perlbrew switch-off
|
|
|
|
# pour réactiver perlbrew
|
|
$ perlbrew switch
|
|
```
|
|
|
|
##### Créer un alias:
|
|
|
|
```bash
|
|
$ perlbrew alias [-f] create <name> <alias>
|
|
|
|
$ perlbrew alias [-f] rename <old_alias> <new_alias>
|
|
|
|
$ perlbrew alias delete <alias>
|
|
```
|
|
|
|
##### Exécuter une commande pour chaque version de Perl installée:
|
|
|
|
```bash
|
|
$ perlbrew exec perl -e 'print "Hello from $]\n"'
|
|
$ perlbrew exec --with perl-5.12,perl-5.12-debug,perl-5.14.2
|
|
```
|
|
|
|
##### Variables d'environnement:
|
|
|
|
```bash
|
|
$ perlbrew env
|
|
unset PERLBREW_MANPATH
|
|
export PERLBREW_PATH="/Users/bruno/perl5/perlbrew/bin"
|
|
unset PERLBREW_PERL
|
|
export PERLBREW_ROOT="/Users/bruno/perl5/perlbrew"
|
|
export PERLBREW_VERSION="0.87"
|
|
```
|
|
|
|
##### Installer cpanm:
|
|
|
|
```bash
|
|
$ perlbrew install-cpanm
|
|
```
|
|
|
|
##### Mettre à jour perlbrew:
|
|
|
|
```bash
|
|
$ perlbrew self-upgrade
|
|
```
|
|
|
|
##### Nettoyer les dossier d'installation et les archives:
|
|
|
|
```bash
|
|
$ perlbrew clean
|
|
Removing /Users/bruno/perl5/perlbrew/build/perl-5.30.1
|
|
Removing /Users/bruno/perl5/perlbrew/dists/perl-5.30.1.tar.gz
|
|
|
|
Done
|
|
```
|
|
|
|
##### Afficher la version de perlbrew:
|
|
|
|
```bash
|
|
$ perlbrew version
|
|
/Users/bruno/perl5/perlbrew/bin/perlbrew - App::perlbrew/0.87
|
|
```
|
|
|
|
##### Mettre à jour Perl:
|
|
|
|
```bash
|
|
# met à jour les versions mineurs (5.14.0 -> 5.14.2)
|
|
$ perlbrew upgrade-perl
|
|
```
|
|
|
|
##### Télécharger Perl:
|
|
|
|
```bash
|
|
# télécharger l'archive Perl
|
|
$ perlbrew download perl-5.17.3
|
|
```
|
|
|
|
##### Liste des modules:
|
|
|
|
```bash
|
|
$ perlbrew list-modules
|
|
Modern::Perl
|
|
```
|
|
|
|
##### Cloner les modules entre 2 versions de Perl:
|
|
|
|
```bash
|
|
# perlbrew clone-modules <src_version> <dst_version>
|
|
|
|
$ perlbrew clone-modules 5.26.1 5.27.7
|
|
```
|
|
|
|
|
|
|
|
#### Installer des modules:
|
|
|
|
Avec perlbrew, on utilise **cpanm**:
|
|
|
|
```bash
|
|
$ cpanm Modern::Perl
|
|
--> Working on Modern::Perl
|
|
Fetching http://www.cpan.org/authors/id/C/CH/CHROMATIC/Modern-Perl-1.20190727.tar.gz ... OK
|
|
Configuring Modern-Perl-1.20190727 ... OK
|
|
Building and testing Modern-Perl-1.20190727 ... OK
|
|
Successfully installed Modern-Perl-1.20190727
|
|
1 distribution installed
|
|
```
|
|
|
|
Les modules sont installés ici:
|
|
|
|
```
|
|
/System/Volumes/Data/Users/bruno/perl5/perlbrew/perls/perl-5.30.1/lib/site_perl/5.30.1/darwin-2level/.meta/Modern-Perl-1.20190727
|
|
/System/Volumes/Data/Users/bruno/.cpanm/work/1576489302.28593/Modern-Perl-1.20190727
|
|
```
|
|
|
|
##### Mise-à-jour de cpanm:
|
|
|
|
```bash
|
|
$ cpanm --self-upgrade
|
|
It appears your cpanm executable was installed via `perlbrew install-cpanm`.
|
|
cpanm --self-upgrade won't upgrade the version of cpanm you're running.
|
|
|
|
Run the following command to get it upgraded.
|
|
|
|
perlbrew install-cpanm
|
|
```
|
|
|
|
##### N° de version:
|
|
|
|
```bash
|
|
$ cpanm --V
|
|
cpanm (App::cpanminus) 1.7044 on perl 5.030000 built for darwin-thread-multi-2level
|
|
Work directory is /Users/bruno/.cpanm/work/1576565969.69495
|
|
You have make /usr/bin/make
|
|
You have /usr/local/bin/wget
|
|
You have /usr/bin/tar: bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.6
|
|
You have /usr/bin/unzip
|
|
```
|
|
|