It is recommended to copy and paste each cpanm command individually, as they may be interactive. If cpanm commands ask for options, choose the defaults.

Before installing cpan packages check that there are no PERL environment variables set. If there are, packages may be installed into root's home directory and processes may not work when started on system boot. You should remove the variables from /root/.bashrc (or wherever set them) and then logout and login to the shell to clear the variables. To check for PERL environment variables run:

  • env | grep PERL

On machines running CentOS:

  • dnf config-manager --set-enabled powertools
  • [If the above fails, try dnf config-manager --set-enabled crb instead]
  • dnf install -y epel-release
  • dnf install -y chrony expat-devel gcc gcc-c++ ghostscript gnutls-devel libjpeg-devel libpng-devel libtiff libtiff-devel libunistring-devel make mysql mysql-devel ncurses-devel net-tools nfs-utils openssl-devel patch perl-core perl-CGI perl-CGI perl-Date-Calc perl-Digest-SHA perl-Email-Sender perl-ExtUtils-Embed perl-HTML-Template perl-libwww-perl perl-LWP-Protocol-https perl-Net-IP perl-Net-Server perl-Socket6 perl-Sys-Syslog perl-Time-HiRes perl-XML-Simple perl-Redis psmisc subversion tar unzip wget zip zlib-devel
  • wget --no-check-certificate -O - http://cpanmin.us | perl - App::cpanminus
  • cpanm --force DBI DBD::mysql Crypt::JWT Date::Calc::XS Digest::Bcrypt Env::C JSON~2.90 JSON::XS MIME::Entity Protocol::WebSocket::Client String::LCSS Sub::Name Term::ReadKey Text::CSV Text::Levenshtein Sub::Util Class::Load::XS Module::Pluggable URI::Encode JSON::WebToken Crypt::OpenSSL::RSA

On machines running Debian:

  • apt-get install default-libmysqlclient-dev
  • [If the above fails, try apt-get install libmysqlclient-dev instead]
  • apt-get install mysql-client
  • [If the above fails, try apt-get install mariadb-client instead]
  • apt-get install ntp
  • [If the above fails, try apt-get install chrony instead]
  • apt-get install cpanminus gcc g++ ghostscript libc6-dev libcrypt-ssleay-perl libdate-calc-perl libdate-calc-xs-perl libdigest-sha-perl libgnutls28-dev libhtml-template-perl libjpeg-dev libjson-webtoken-perl libncurses-dev libnet-ip-perl libnet-server-perl libpng-dev libsocket6-perl libssl-dev libsub-name-perl libterm-readkey-perl libtext-csv-perl libtext-levenshtein-perl libtext-levenshteinxs-perl libtiff5 libtiff5-dev libtiff-tools libunistring-dev libwww-perl libxml-simple-perl libredis-perl make ncftp net-tools nfs-common ngrep psmisc subversion unzip zip zlib1g-dev
  • [If either libtiff5 or libtiff5-dev is not available above, try with libtiff6 or libtiff-dev]
  • apt-get --no-install-recommends install pkg-config # pkg-config will be needed to later build HTMLDOC
  • cpanm --force DBI DBD::mysql Crypt::JWT Digest::Bcrypt Email::Sender Env::C JSON~2.90 JSON::XS MIME::Entity Protocol::WebSocket::Client String::LCSS Module::Pluggable URI::Encode JSON::WebToken Crypt::OpenSSL::RSA

On machines running Fedora:

  • yum -y install gcc gcc-c++ ghostscript gnutls-devel libjpeg-devel libpng-devel libtiff libtiff-devel make mysql-devel ncftp ncurses-devel ngrep ntp openssl-devel patch perl-Crypt-SSLeay perl-Date-Calc perl-CGI perl-Digest-SHA perl-Email-Sender perl-HTML-Template perl-JSON perl-Net-Server perl-Socket6 perl-Sub-Name perl-XML-Simple perl-libwww-perl perl-LWP-Protocol-https perl-Redis psmisc subversion wget zlib-devel
  • wget --no-check-certificate -O - http://cpanmin.us | perl - App::cpanminus
  • cpanm --force DBI DBD::mysql Crypt::JWT Digest::Bcrypt Env::C MIME::Entity Protocol::WebSocket::Client String::LCSS Text::Levenshtein Module::Pluggable URI::Encode JSON::WebToken Crypt::OpenSSL::RSA

On machines running Redhat Enterprise:

  • yum -y install expat-devel gcc gcc-c++ ghostscript gnutls-devel libjpeg-devel libpng-devel libtiff libtiff-devel make mysql-devel ncurses-devel openssl-devel ntp perl-Crypt-SSLeay perl-CGI perl-Digest-SHA perl-JSON perl-libwww-perl perl-LWP-Protocol-https perl-Socket6 perl-Redis psmisc subversion zlib-devel
  • wget --no-check-certificate -O - http://cpanmin.us | perl - App::cpanminus
  • cpanm --force DBI DBD::mysql Crypt::JWT Date::Calc Date::Calc::XS Digest::Bcrypt Email::Sender Env::C HTML::Template MIME::Entity Net::IP Net::Server Protocol::WebSocket::Client String::LCSS Sub::Name Term::ReadKey Text::CSV Text::Levenshtein Time::HiRes XML::Simple Module::Pluggable URI::Encode JSON::WebToken Crypt::OpenSSL::RSA

On machines running Rocky Linux:

  • dnf config-manager --set-enabled powertools
  • [If the above fails, try dnf config-manager --set-enabled crb instead]
  • dnf install -y epel-release
  • dnf install -y chrony expat-devel gcc gcc-c++ ghostscript git gnutls-devel libjpeg-devel libpng-devel libtiff libtiff-devel libunistring-devel make mysql mysql-devel ncurses-devel net-tools nfs-utils openssl-devel patch perl-core perl-CGI perl-CGI perl-Date-Calc perl-Digest-SHA perl-Email-Sender perl-ExtUtils-Embed perl-HTML-Template perl-libwww-perl perl-LWP-Protocol-https perl-Net-IP perl-Net-Server perl-Socket6 perl-Sys-Syslog perl-Time-HiRes perl-XML-Simple perl-Redis psmisc tar unzip wget zip zlib-devel
  • wget --no-check-certificate -O - http://cpanmin.us | perl - App::cpanminus
  • cpanm --force DBI DBD::mysql Crypt::JWT Date::Calc::XS Digest::Bcrypt Env::C JSON~2.90 JSON::XS MIME::Entity Protocol::WebSocket::Client String::LCSS Sub::Name Term::ReadKey Text::CSV Text::Levenshtein Sub::Util Class::Load::XS Module::Pluggable URI::Encode JSON::WebToken Crypt::OpenSSL::RSA

Additional packages for Rocky 9 compatible systems:

  • dnf install -y chkconfig initscripts

On machines running Ubuntu:

  • apt-get install default-libmysqlclient-dev # If this fails, use libmysqlclient-dev instead
  • apt-get install ntp # If this fails, use chrony instead
  • apt-get install cpanminus gcc g++ ghostscript libc6-dev libcrypt-ssleay-perl libdate-calc-perl libdate-calc-xs-perl libdigest-sha-perl libemail-sender-perl libgnutls28-dev libhtml-template-perl libjpeg-dev libjson-webtoken-perl libncurses-dev libnet-ip-perl libnet-server-perl libpng-dev libsocket6-perl libsub-name-perl libterm-readkey-perl libtext-csv-perl libtext-levenshtein-perl libtext-levenshteinxs-perl libtiff5-dev libtiff-tools libunistring-dev libwww-perl libxml-simple-perl libredis-perl make ncftp nfs-common ngrep patch psmisc subversion unzip xpdf-utils zip zlib1g-dev mysql-client libssl-dev libunistring-dev net-tools
  • [If either libtiff5 or libtiff5-dev is not available above, try with libtiff6 or libtiff-dev]
  • apt-get --no-install-recommends install pkg-config # pkg-config will be needed to later build HTMLDOC
  • cpanm --force DBI DBD::mysql Crypt::JWT Data::Dumper Digest::Bcrypt Env::C IO::Socket::INET JSON~2.90 JSON::XS LWP::UserAgent MIME::Entity String::LCSS Protocol::WebSocket::Client Module::Pluggable URI::Encode JSON::WebToken Crypt::OpenSSL::RSA

On all systems do:

  • mysql -V

to get the MySQL version that is installed and then do:

  • perl -MDBD::mysql -le 'print $DBD::mysql::VERSION'

to get the version of DBD::mysql that is installed.

If MySQL is version 8.x or later and DBD::mysql is version 4.x or older than 5.003, then do:

  • cpanm DBD::mysql

to install the latest DBD::mysql 5.x version from CPAN.

If MySQL is version 5.x and DBD::mysql is version 5.x, then do:

  • cpanm DBD::mysql@4.023

or whichever DBD::mysql 4.x version is supported by the OS.