bash: cpan: command not found - perl

I need to install few perl modules on web hosting server ( OS: Cent OS 6.4, perl v5.10.1) using ssh.
On server :
cpan -i Template::Toolkit
Is giving error:
bash: cpan: command not found
command perl -v is showing that perl is installed, then how is that possible cpan isn't.
Or do i need to add some path or change env setting.
env variable PATH value is
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

You have to install it with yum,
yum install perl-CPAN
but you don't need it as Template::Toolkit is already in yum repository,
yum install perl-Template-Toolkit

Related

Unable to install Bio::SeqIO module on Ubuntu for Windows 10 from Microsoft Store

I used Ubuntu 18.04 LTS for Windows from Microsoft store and tried to install BioPerl module Bio::SeqIO with cpanm Bio::SeqIO. Perl version is v5.26.1. It seems that module installation failed:
! Installing the dependencies failed: Module 'XML::Twig' is not installed, Module 'XML::LibXNL::Reader' is not installed, Module 'XML::LibXML' is not installed, Module 'XML::Parser::PerlSAX' is not installed, Module 'XML::DOM::XPath' is not installed, Module 'XML::DOM' is not installed
! Bailing out the installation for BioPerl-1.7.7
58 distributions installed
If i run a script with line use Bio::SeqIO; I get an error:
Can't locate Bio/SeqIO.pm in #INC (you may need to install the
Bio::SeqIO module) (#INC contains: ...
I am not sure how to proceed. I could try to install dependencies that failed with cpanm but I do not know if it is a proper way.
I tried this on my Windows 10 laptop:
Installed WSL Ubuntu 18.10 as described here, then
Using the system perl, i.e /usr/bin/perl (maybe it would have been better to use perlbrew and installed a custom perl and such avoid using sudo) from the Linux terminal window:
sudo apt-get update
sudo apt-get -y install make gcc libexpat1-dev
sudo cpan local::lib
sudo cpan App::cpanminus
sudo cpanm -n Time::Zone # <-- failed tests
sudo cpanm -n XML::DOM::XPath # <-- failed tests
sudo cpanm Bio::SeqIO
This worked for me.
Perhaps sudo apt-get install bioperl bioperl-run would install all modules which you might need in feature.
Bioperl

Cwd.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xde00080)

All Perl modules and 'cpan' stopped working after an upgrade of Ubuntu 16.04 LTS to 18.04 LTS. Every time I run my script it leads to the error
threads.c: loadable library and Perl binaries are mismatched (got handshake key 0xdb00080, needed 0xde00080)
when I try to open cpan it shows
Cwd.c: loadable library and Perl binaries are mismatched (got handshake key 0xdb00080, needed 0xde00080)
I had installed "Cwd", "threads" modules in ubuntu 16.04 where Perl version was 5.22.1, whereas in ubuntu 18.04 the Perl version is 5.26.1.
I tried to remove the old version of modules but failed. I deleted content on ~/.cpan folder.
PS:
Everything works fine in root user.
if I run
sudo su
cpan
works perfectly. But as a normal user, I cant run any perl modules/scripts/cpan.
How do I correct the issue?
How can I re-install cpan or cpan modules?
I tried to reinstall Perl which did not help
sudo apt-get --reinstall install perl
sudo apt-get --reinstall install libcwd-guard-perl
I installed cpan minus, cpan plus which gave the same error.
For solve problem next links can be used:
https://dev.to/foursixnine/about-perl-and-mismatched-binaries-346l
https://metacpan.org/pod/release/DBOOK/App-MigrateModules-0.002/script/perl-migrate-modules
Or in commands: (Replace to your perl5 folder, in my case it was ~/perl5)
mv <perl5> perl5_old
cpan
cpan App::MigrateModules
perl-migrate-modules --from perl5_old /usr/bin/perl
Where perl5 your perl folder, usually in path exists in ENV variable PERL5LIB.
I solved this issue by following https://github.com/Perl/perl5/issues/15861
I ran the command perl -MCPAN -e 'recompile()'
It recompile all the module, at last it worked.

Linux: How to install DBD::Pg module?

Postgres DB is already installed. I'm not using system perl I have installed another perl in "/srv/data203806/Migration/CPAN/localperl/bin". When I'm trying to install, It is asking for PATH TO pg_config:
[root1#frmrszvwb023 bin]# ./cpan install DBD::Pg
Reading '/root/.cpan/Metadata'
Database was generated on Fri, 07 Mar 2014 03:53:02 GMT
Running install for module 'DBD::Pg'
Running make for T/TU/TURNSTEP/DBD-Pg-3.0.0.tar.gz
Checksum for /root/.cpan/sources/authors/id/T/TU/TURNSTEP/DBD-Pg-3.0.0.tar.gz ok
CPAN.pm: Building T/TU/TURNSTEP/DBD-Pg-3.0.0.tar.gz
Configuring DBD::Pg 3.0.0
Path to pg_config?
No POSTGRES_HOME defined, cannot find automatically
Warning: No success on command[/srv/data203806/MUXmh-Migration/CPAN/localperl/bin/perl Makefile.PL]
'YAML' not installed, will not store persistent state
TURNSTEP/DBD-Pg-3.0.0.tar.gz
/srv/data203806/MUXmh-Migration/CPAN/localperl/bin/perl Makefile.PL -- NOT OK
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
Could not read metadata file. Falling back to other methods to determine prerequisites
Please help me to install DBD::Pg? How to get path to pg_config?
Just ran into this issue, and on Ubuntu 16.04 Xenial the package you're looking for is:
apt-get install libdbd-pg-perl
You have to install libpq-dev, e.g. on Ubuntu:
sudo apt-get install libpq-dev
On CentOS/RH you can fix it by installing perl-DBD-Pg package with yum
sudo yum install perl-DBD-Pg
From the README:
INSTALLATION:
Before installing, please use the "cpansign -v" program to
cryptographically verify that your copy of DBD::Pg is complete and
valid. The program "cpansign" is part of Module::Signature, available
from CPAN.
By default Makefile.PL uses App::Info to find the location of the
PostgreSQL library and include directories. However, if you want to
control it yourself, define the environment variables POSTGRES_INCLUDE
and POSTGRES_LIB, or define just POSTGRES_HOME. Note that if you have
compiled PostgreSQL with SSL support, you must define the POSTGRES_LIB
environment variable and add "-lssl" and "-lcrypto" to it, like this:
export POSTGRES_LIB="/usr/local/pgsql/lib -lssl -lcrypto"
The usual steps to install DBD::Pg:
perl Makefile.PL
make
make test
make install
Do steps 1 to 2 as a normal user, not as root!
If the script cannot find the pg_config information itself, it will
ask you for the path to it. Enter the complete path to the pg_config
file here, including the name of the file itself.
If you want to use a module, read the documentation.
Before installing perl module, you must install client for accessing Postgres DB. I just install server and header files:
sudo apt-get install postgresql
sudo apt-get install libpq-dev
You can try:
locate pg_config
This will show something like:
/usr/pgsql-10/bin/pg_config
/usr/pgsql-10/include/ecpg_config.h
/usr/pgsql-10/include/ecpg_config_x86_64.h
Then run:
POSTGRES_HOME=/usr/pgsql-10 ./cpan install DBD::Pg
UPD
If you still encounter issues with pg_config, you may need to add it to your PATH, e.g.:
export PATH=$PATH:/usr/pgsql-x.x/bin
where x.x is your version, such as /usr/pgsql-9.2./bin.
Fedora 29, plenv, perl v5.18.0
Once I got plenv working, I was able to install DBD::Pg with cpanm using these commands:
sudo dnf install postgresql postgresql-devel
cpanm --quiet --notest DBD::Pg
For ArchLinux (or any Distro using Pacman):
pacman -S perl-dbd-pg
For my Ubuntu 22 worked this:
sudo apt install build-essential
sudo apt install cpanminus
sudo apt-get install -y postgresql-server-dev-all
sudo cpanm DBD::Pg

Getting WebKit bindings to work with Perl and gkt2

I need to use WebKit in my perl + gtk2 application. Found a package Gtk2::WebKit on CPAN, but can't get it working.
cpan> install Gtk2::WebKit
gives following output:
Package webkit-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `webkit-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'webkit-1.0' found
at inc/Module/Install/PRIVATE/WebKit.pm line 24
*** can not find package webkit-1.0
*** check that it is properly installed and available in PKG_CONFIG_PATH
at inc/Module/Install/PRIVATE/WebKit.pm line 24
No 'Makefile' created'YAML' not installed, will not store persistent state
FLORA/Gtk2-WebKit-0.09.tar.gz
/usr/bin/perl Makefile.PL INSTALLDIRS=site -- NOT OK
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
Failed during this command:
FLORA/Gtk2-WebKit-0.09.tar.gz : writemakefile NO -- No 'Makefile' created
It looks as if cpan wasn't able to find webkit, but I'm not sure how to fix that (my first time using perl and cpan).
Env: perl 5.12.4, ubuntu 11.10
Install libwebkitgtk-devel: sudo apt-get install libwebkitgtk-devel.
sudo apt-get install libwebkitgtk-dev
For Debian/Ubuntu and similar, the package name to install is libwebkitgtk-dev.
For OpenSuse and other RPM-based systems, the package name is libwebkitgtk-devel.

Perl Ora2Pg on Ubuntu

I just tried Ora2Pg on my Ubuntu Jaunty Jackalope.
First of all, the installation was hard, but after downloading a few debs & rpms here & there, I was finally managed to install ora2pg via synaptic.
However, when I try to run this command
ora2pg /tmp/ora2pg.conf
I am getting a
install_driver(Oracle) failed: Can't load '/usr/lib/perl5/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /usr/lib/perl/5.10/DynaLoader.pm line 196.
at (eval 14) line 3
Compilation failed in require at (eval 14) line 3.
Perhaps a required shared library or dll isn't installed where expected
at /usr/share/perl5/Ora2Pg.pm line 566
Any ideas what's wrong and how to fix it?
Note: I don't perl. I just started browsing a bit it because of this.
This is the correct sequence for installation:
apt-get install libdbi-perl
apt-get install alien dpkg-dev debhelper build-essential
apt-get install libaio1
apt-get install make
apt-get install alien
apt-get install rpm
apt-get install libpq-dev
download DBD-Oracle-1.74 or last version
download DBD-Pg-3.5.3 or last version
download DBI-1.636 or last version
download ora2pg-17.5 or last version
download oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
download oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
download oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
after extract rpm package and install:
alien oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
alien oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
alien oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
dpkg -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.deb
dpkg -i oracle-instantclient12.1-devel_12.1.0.2.0-2_amd64.deb
dpkg -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.deb
then:
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
the path of oracle client installation
export ORACLE_HOME=/usr/lib/oracle/12.1/client64/
then, istall the perl extension for Oracle and Postgres
cd DBI-1.636
perl Makefile.PL
make && makeinstall
cd DBD-Oracle-1.74 o DBD-Oracle-1.64
perl Makefile.PL
make && makeinstall
cd DBD-Pg-3.5.3
perl Makefile.PL
make && makeinstall
and finally, install
cd ora2pg-17.x
perl Makefile.PL
make && makeinstall
check in the version is correct
ora2pg -v
and last configure ora2pg.conf on /etc/ora2pg/
insert in file, the configuration for connect to Oracle and Postgres.
DBD::Oracle can't find the Oracle client libraries because they're not in your library path. If you don't have the Oracle client libraries and you don't have a sysadmin to provide them for you, then you need to get the "Oracle Instantclient" package from the oracle website and install it. If you already have Instantclient installed, then you need to add its lib directory (something like /usr/lib/oracle/instantclient/lib or /opt/ora/instantclient10_1/lib) to your library path -- either by adding a line to /etc/ld.so.conf and running ldconfig as root, or by setting the LD_LIBRARY_PATH environment variable.
Pre-installation steps:
ORACLE Client must be installed and ORACLE_HOME must be set.
Install perl (version 5.6 and above)
Installation steps:
Install DBI (database interface module)
apt-get install cpanminus (for ubuntu)
yum install cpanminus (for Linux)
cpanm DBI
Install DBD::Oracle and DBD::Pg
cpanm DBD::Oracle
cpanm DBD::Pg
Download the latest version of ora2pg from http://sourceforge.net/projects/ora2pg/ and run the following commands:
tar -xvf ora2pg-18.0.tar
cd ora2pg-18.0/
perl Makefile.PL
su root
make
make install
Do the changes as per req
By default Ora2Pg will look to ora2pg.conf configuration file into /etc/ora2pg/ directory.
ORACLE_HOME /app/oracle/product/11.2.0
ORACLE_DSN dbi:Oracle:host=[hostname];sid=[SID name]
ORACLE_USER [SYSTEM]
ORACLE_PWD [password]
USER_GRANTS 1
Check the version of pra2pg:
ora2pg SHOW_VERSION
Run the below command
ora2pg -c /etc/ora2pg/ora2pg.conf
ora2pg -c /etc/ora2pg/ora2pg.conf -p -P 10 -J 10 -L 1000000
.sql file will create in the current directory have converted data into PostgreSql
Hope this will work.