This is a test version of Biostars. For the public version, visit https://www.biostars.org.
efetch error LWP::Protocol::https not installed

I'm trying to use fetch to download a sequence. However, I keep on getting 501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed) even though I have ran sudo cpan install LWP::Protocol::https

The terminal output is as follows:

$ efetch -db nuccore -id AF086833 -format fasta
501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)
No do_post output returned from 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=AF086833&rettype=fasta&retmode=text&edirect=7.00&tool=edirect&email=kjsdhjasv@MacBook-Air.local'
Result of do_post http request is
$VAR1 = bless( {
                 '_rc' => 501,
                 '_content' => 'LWP will support https URLs if the LWP::Protocol::https module
is installed.
',
                 '_msg' => 'Protocol scheme \'https\' is not supported (LWP::Protocol::https not installed)',
                 '_request' => bless( {
                                        '_method' => 'POST',
                                        '_content' => 'db=nuccore&id=AF086833&rettype=fasta&retmode=text&edirect=7.00&tool=edirect&email=kjsdhjasv@MacBook-Air.local',
                                        '_uri' => bless( do{\(my $o = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi')}, 'URI::https' ),
                                        '_headers' => bless( {
                                                               'content-type' => 'application/x-www-form-urlencoded',
                                                               'user-agent' => 'libwww-perl/6.26'
                                                             }, 'HTTP::Headers' )
                                      }, 'HTTP::Request' ),
                 '_headers' => bless( {
                                        'client-warning' => 'Internal response',
                                        'content-type' => 'text/plain',
                                        '::std_case' => {
                                                          'client-warning' => 'Client-Warning',
                                                          'client-date' => 'Client-Date'
                                                        },
                                        'client-date' => 'Mon, 02 Oct 2017 15:56:40 GMT'
                                      }, 'HTTP::Headers' )
               }, 'HTTP::Response' );
efetch

I am unable to replicate the error, are you sure that the edirect eutils are installed properly?

Probably conflict of Perl versions. What is the result of

which perl

and

head -n1 $(which efetch)

I've installed all the conda packages in your list. It still pop out the error msg. any ideas?

3 answers

Hi,

How did you install Entrez direct tool?

This is due to a mistake in the installation of Entrez direct tool. Try this code to install it!

mkdir -p ~/src 
curl https://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.zip > ~/src/edirect.zip 
unzip -o ~/src/edirect.zip  -d ~/src 
echo 'export PATH=~/src/edirect:$PATH' >> ~/.bashrc 
source  ~/.bashrc

Tarek

Your solution worked. Thanks so much!

For those who have installed entrez-direct using Conda virtual environment, and are encountering the error above, you can install the libraries in the following way into the already activated virtual environment.

conda install perl-io-socket-ssl perl-net-ssleay perl-lwp-protocol-https entrez-direct

add -c bioconda if bioconda is not in your channels already

I met the same problem when I use efetch, but the given solutions didn't work out.

I tried

cpanm Crypt::SSLeay IO::Socket::SSL::Utils LWP::Protocol::https

and it worked!

Log in to answer this question.