Perl では外部モジュールを利用するのに CPAN を利用します。
CPAN とは
CPAN(シーパン、Comprehensive Perl Archive Network)とは、Perl のライブラリ・モジュールやその他の Perl で書かれたソフトウェアを集めた巨大なアーカイブです。
ja.wikipedia.org
セットアップ
初期設定
まっさらな環境で CPAN コマンドを利用しようとすると、初期設定が行われます。
cpan コマンドを実行すると以下のような流れで初期設定が行われます。
デフォルトyesなのでそのままエンターを押せばすべて自動的によしなに設定がされます。
$ 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] <install_help> Warning: You do not have write permission for Perl library directories. To install modules, you need to configure a local Perl library directory or escalate your privileges. CPAN can help you by bootstrapping the local::lib module or by configuring itself to use 'sudo' (if available). You may also resolve this problem manually if you need to customize your setup. What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] Autoconfiguration complete. Attempting to bootstrap local::lib... Writing /home/hoge/.cpan/CPAN/MyConfig.pm for bootstrap... commit: wrote '/home/hoge/.cpan/CPAN/MyConfig.pm' Fetching with HTTP::Tiny: http://www.cpan.org/authors/01mailrc.txt.gz Reading '/home/hoge/.cpan/sources/authors/01mailrc.txt.gz' ............................................................................DONE Fetching with HTTP::Tiny: http://www.cpan.org/modules/02packages.details.txt.gz Reading '/home/hoge/.cpan/sources/modules/02packages.details.txt.gz' Database was generated on Fri, 25 Nov 2022 07:29:01 GMT HTTP::Date not available .............. New CPAN.pm version (v2.34) available. [Currently running version is v2.28] You might want to try install CPAN reload cpan to both upgrade CPAN.pm and run the new version without leaving the current session. ..............................................................DONE Fetching with HTTP::Tiny: http://www.cpan.org/modules/03modlist.data.gz Reading '/home/hoge/.cpan/sources/modules/03modlist.data.gz' DONE Writing /home/hoge/.cpan/Metadata Fetching with HTTP::Tiny: http://www.cpan.org/authors/id/H/HA/HAARG/local-lib-2.000029.tar.gz Fetching with HTTP::Tiny: http://www.cpan.org/authors/id/H/HA/HAARG/CHECKSUMS Checksum for /home/hoge/.cpan/sources/authors/id/H/HA/HAARG/local-lib-2.000029.tar.gz ok 'YAML' not installed, will not store persistent state Configuring H/HA/HAARG/local-lib-2.000029.tar.gz with Makefile.PL Attempting to create directory /home/hoge/perl5 Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for local::lib Writing MYMETA.yml and MYMETA.json HAARG/local-lib-2.000029.tar.gz /usr/bin/perl Makefile.PL --bootstrap -- OK Running make for H/HA/HAARG/local-lib-2.000029.tar.gz cp lib/POD2/DE/local/lib.pod blib/lib/POD2/DE/local/lib.pod cp lib/local/lib.pm blib/lib/local/lib.pm cp lib/POD2/PT_BR/local/lib.pod blib/lib/POD2/PT_BR/local/lib.pod cp lib/lib/core/only.pm blib/lib/lib/core/only.pm Manifying 4 pod documents HAARG/local-lib-2.000029.tar.gz /usr/bin/make -- OK The current configuration of allow_installing_outdated_dists is 'ask/no', but for this option we would need 'CPAN::DistnameInfo' installed. Please install 'CPAN::DistnameInfo' as soon as possible. As long as we are not equipped with 'CPAN::DistnameInfo' this option does not take effect Running make test for HAARG/local-lib-2.000029.tar.gz PERL_DL_NONLAZY=1 "/usr/bin/perl" "-I/home/hoge/perl5/lib/perl5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/bad_variables.t ...... ok t/carp-mismatch.t ...... ok t/classmethod.t ........ ok t/de-dup.t ............. ok t/lib-core-only.t ...... ok t/pipeline.t ........... ok t/shell.t .............. ok t/stackable.t .......... ok t/subroutine-in-inc.t .. ok t/taint-mode.t ......... ok All tests successful. Files=10, Tests=173, 2 wallclock secs ( 0.05 usr 0.01 sys + 1.35 cusr 0.34 csys = 1.75 CPU) Result: PASS HAARG/local-lib-2.000029.tar.gz /usr/bin/make test -- OK Running make install for HAARG/local-lib-2.000029.tar.gz Manifying 4 pod documents Installing /home/hoge/perl5/lib/perl5/local/lib.pm Installing /home/hoge/perl5/lib/perl5/POD2/PT_BR/local/lib.pod Installing /home/hoge/perl5/lib/perl5/POD2/DE/local/lib.pod Installing /home/hoge/perl5/lib/perl5/lib/core/only.pm Installing /home/hoge/perl5/man/man3/POD2::DE::local::lib.3pm Installing /home/hoge/perl5/man/man3/POD2::PT_BR::local::lib.3pm Installing /home/hoge/perl5/man/man3/lib::core::only.3pm Installing /home/hoge/perl5/man/man3/local::lib.3pm Appending installation info to /home/hoge/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod HAARG/local-lib-2.000029.tar.gz /usr/bin/make install -- OK local::lib is installed. You must now add the following environment variables to your shell configuration files (or registry, if you are on Windows) and then restart your command line shell and CPAN before installing modules: PATH="/home/hoge/perl5/bin${PATH:+:${PATH}}"; export PATH; PERL5LIB="/home/hoge/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB; PERL_LOCAL_LIB_ROOT="/home/hoge/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT; PERL_MB_OPT="--install_base \"/home/hoge/perl5\""; export PERL_MB_OPT; PERL_MM_OPT="INSTALL_BASE=/home/hoge/perl5"; export PERL_MM_OPT; Would you like me to append that to /home/hoge/.zshrc now? [yes] commit: wrote '/home/hoge/.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 that, maybe try> install Term::ReadLine::Perl cpan shell -- CPAN exploration and modules installation (v2.28) Enter 'h' for help. cpan[1]>
設定内容確認
CPAN シェルで、o conf というコマンドを発行すると、設定状況を一覧することができます。
cpan[1]> o conf $CPAN::Config options from /home/hoge/.cpan/CPAN/MyConfig.pm: commit [Commit changes to disk] defaults [Reload defaults from disk] help [Short help about 'o conf' usage] init [Interactive setting of all options] allow_installing_module_downgrades [ask/no] allow_installing_outdated_dists [ask/no] applypatch [] auto_commit [0] build_cache [100] build_dir [/home/hoge/.cpan/build] build_dir_reuse [0] build_requires_install_policy [yes] bzip2 [/usr/bin/bzip2] cache_metadata [1] check_sigs [0] cleanup_after_install [0] colorize_debug undef colorize_output [0] colorize_print undef colorize_warn undef commandnumber_in_prompt [1] commands_quote undef connect_to_internet_ok [1] cpan_home [/home/hoge/.cpan] curl undef dontload_hash undef dontload_list undef ftp undef ftp_passive [1] ftp_proxy [] ftpstats_period undef ftpstats_size undef getcwd [cwd] gpg [/usr/bin/gpg] gzip [/usr/bin/gzip] halt_on_failure [0] histfile [/home/hoge/.cpan/histfile] histsize [100] http_proxy [] inactivity_timeout [0] index_expire [1] inhibit_startup_message [0] keep_source_where [/home/hoge/.cpan/sources] load_module_verbosity [none] lynx undef make [/usr/bin/make] make_arg [] make_install_arg [] make_install_make_command [/usr/bin/make] makepl_arg [INSTALLDIRS=site] mbuild_arg [] mbuild_install_arg [] mbuild_install_build_command [./Build] mbuildpl_arg [--installdirs site] ncftp undef ncftpget undef no_proxy [] pager [/usr/bin/less] password undef patch [/usr/bin/patch] patches_dir undef perl5lib_verbosity [none] plugin_list prefer_external_tar [1] prefer_installer [MB] prefs_dir [/home/hoge/.cpan/prefs] prerequisites_policy [follow] proxy_pass undef proxy_user undef randomize_urllist undef recommends_policy [1] scan_cache [atstart] shell [/bin/zsh] show_unparsable_versions [0] show_upload_date [0] show_zero_versions [0] suggests_policy [0] tar [/usr/bin/tar] tar_verbosity [none] term_is_latin [1] term_ornaments [1] test_report [0] trust_test_report_history [0] unzip [/usr/bin/unzip] urllist 0 [http://www.cpan.org/] urllist_ping_external undef urllist_ping_verbose undef use_prompt_default [0] use_sqlite [0] username undef version_timeout [15] wait_list undef wget [/usr/bin/wget] yaml_load_code [0] yaml_module [YAML] cpan[2]>
モジュールインストール
以下のようなコマンドで、DBI と DBD::MySQL がインストールできます。
cpan> install DBI cpan> install DBD::MySQL