Модуль Perl не удается установить с CPAN / cpanm - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь установить некоторые модули perl, которые являются зависимостями для программы, которую я хочу установить (MEME-suite). Запуск "perl dependencies.pl дает мне следующее:

Checking Required Perl Modules:
HTML::PullParser missing.
HTML::Template missing.
HTML::TreeBuilder missing.
XML::Simple missing. On Ubuntu, you may need to first run 'sudo apt-get install libexpat-dev'
XML::Parser::Expat missing.

Checking Optional Modules:
Log::Log4perl missing. Used for logging and debugging by developers.
Math::CDF missing. Only required for fasta-enriched-center script (which is not called by the web scripts).
XML::Compile::SOAP11 missing. Used for downloading sequence databases from RSAT.
On Ubuntu, you may first need to run 'sudo apt-get install libxml2-dev'
XML::Compile::WSDL11 missing. Used for downloading sequence databases from RSAT
XML::Compile::Transport::SOAPHTTP missing. Used for downloading sequence databases from RSAT

Однако, когда я пытаюсь установить модули perl, которые мне не хватает, используя: либо «cpan HTML :: PullParser», либо «cpanm HTML :: PullParser», я получаю сообщение об ошибке и следующий журнал данных:

cpanm (App::cpanminus) 1.7044 on perl 5.026002 built for x86_64-linux-thread-multi
Work directory is /home/weilii/.cpanm/work/1541617377.2551
You have make /usr/bin/make
You have /usr/bin/wget
You have /bin/tar: tar (GNU tar) 1.29
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
You have /usr/bin/unzip
Searching HTML::PullParser () on cpanmetadb ...
--> Working on HTML::PullParser
Fetching http://www.cpan.org/authors/id/G/GA/GAAS/HTML-Parser-3.72.tar.gz
-> OK
Unpacking HTML-Parser-3.72.tar.gz
Entering HTML-Parser-3.72
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.24)
Configuring HTML-Parser-3.72
Running Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for HTML::Parser
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have XSLoader 0 ... Yes (0.27)
Checking if you have HTML::Tagset 3 ... Yes (3.20)
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.24)
Building and testing HTML-Parser-3.72
cp Parser.pm blib/lib/HTML/Parser.pm
cp lib/HTML/TokeParser.pm blib/lib/HTML/TokeParser.pm
cp lib/HTML/LinkExtor.pm blib/lib/HTML/LinkExtor.pm
cp lib/HTML/HeadParser.pm blib/lib/HTML/HeadParser.pm
cp lib/HTML/Filter.pm blib/lib/HTML/Filter.pm
cp lib/HTML/Entities.pm blib/lib/HTML/Entities.pm
cp lib/HTML/PullParser.pm blib/lib/HTML/PullParser.pm
Running Mkbootstrap for Parser ()
chmod 644 "Parser.bs"
"/home/weilii/miniconda3/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Parser.bs blib/arch/auto/HTML/Parser/Parser.bs 644
"/home/weilii/miniconda3/bin/perl" "/home/weilii/miniconda3/lib/5.26.2/ExtUtils/xsubpp"  -typemap '/home/weilii/miniconda3/lib/5.26.2/ExtUtils/typemap' -typemap '/home/weilii/.cpanm/work/1541617377.2551/HTML-Parser-3.72/typemap'  Parser.xs > Parser.xsc
mv Parser.xsc Parser.c
"/home/weilii/miniconda3/bin/perl" mkhctype >hctype.h
"/home/weilii/miniconda3/bin/perl" mkpfunc >pfunc.h
/tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc -c   -D_REENTRANT -D_GNU_SOURCE --sysroot=/tmp/build/80754af9/perl_1527832170752/_build_env/x86_64-conda_cos6-linux-gnu/sysroot -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -O2   -DVERSION=\"3.72\" -DXS_VERSION=\"3.72\" -fPIC --sysroot=/tmp/build/80754af9/perl_1527832170752/_build_env/x86_64-conda_cos6-linux-gnu/sysroot "-I/home/weilii/miniconda3/lib/5.26.2/x86_64-linux-thread-multi/CORE"  -DMARKED_SECTION Parser.c
/bin/sh: 1: /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc: not found
Makefile:357: recipe for target 'Parser.o' failed
make: *** [Parser.o] Error 127
-> FAIL Installing HTML::PullParser failed. See /home/weilii/.cpanm/work/1541617377.2551/build.log for details. Retry with --force to force install it.

Кажется, я не могу установить это или несколько других зависимостей MEME для установки. Я ОЧЕНЬ новичок в Linux, и мой поиск на этом и других форумах не привел меня к каким-либо решениям.

Я пробовал это, используя «sudo cpan HTML :: PullParser», и когда я делаю это таким образом, он утверждает, что «HTML :: PullParser обновлен (3.57)». но он по-прежнему отображается как не установленный, когда я запускаю "perl dependencies.pl", чтобы проверить зависимости для MEME.

У меня также установлена ​​miniconda, и я думаю, что проблема может быть связана с тем, что cpan указывает на мою системную установку perl, в то время как MEME проверяет зависимости в установке miniconda?

Любая помощь в установке этих модулей, чтобы я мог установить MEME, была бы очень полезна, так как мне нужна программа для моих исследований, и я уже несколько недель бьюсь головой об эту стену, и мой советник начинает волноваться со мной .

Я чувствую себя очень растерянным в том, как решить проблему.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Проблема в используемом вами Perl.

Модуль, который вы пытаетесь установить, содержит части, написанные на C. Чтобы скомпилировать их, perl вызывает тот же компилятор C, с которым он был скомпилирован. То есть путь к компилятору C был задан, когда сам Perl был настроен (а затем скомпилирован).

Ваш Perl пытается использовать компилятор C /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc, который выглядит как временный путь сборки, а не как тот, который будет присутствовать в вашей собственной системе.

Вы также можете видеть, что используется perl /home/weilii/miniconda3/bin/perl, а не системный perl (который, вероятно, имеет рабочую конфигурацию компилятора C).

Предположительно, это та "миниконда", которую вы упомянули. Он установлен в вашем домашнем каталоге и перечисляется в вашем PATH перед системными каталогами, так что perl сначала находится там. Делая sudo cpan ..., вы запускаете cpan от имени пользователя root (который не имеет ваших настроек PATH), поэтому он находит системный Perl, который имеет не только работающий компилятор C, но также и совершенно другой набор установленных модулей. .

То есть HTML::PullParser установлен в вашей системной perl («в актуальном состоянии»), но когда вы запускаете perl от имени обычного пользователя, выполняется perl miniconda, который имеет другой набор каталогов модулей (и неправильная конфигурация компилятора C).

Я ничего не знаю о миниконде. Я бы попытался исправить ситуацию с точки зрения Perl:

  • Никогда не используйте sudo cpan. Установка новых модулей (или обновление старых модулей) в системных каталогах - плохая идея.
  • Решите, какой Perl использовать. Perl миниконды выглядит разбитым, так что нет. Наш выбор: 1) системный perl или 2) пользовательский perl в нашем домашнем каталоге (легко устанавливается через perlbrew ).
  • Если пользовательский Perl: Plain cpan HTML::PullParser (или любой другой модуль) должен работать нормально. Он установит все под ~/perl5/perlbrew.
  • Если системный perl: установить local :: lib . Он состоит из двух частей:

    • Установить local::lib. Обычно для этого есть системный пакет (например, с Debian apt-get install liblocal-lib-perl должен работать).
    • Добавьте eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" к вашему .bashrc и запустите новую оболочку.

    Теперь обычный cpan HTML::PullParser (или любой другой модуль) должен просто работать.

В любом случае вам придется удалить ~/miniconda3/bin с вашего PATH.

0 голосов
/ 07 ноября 2018

Просматривая предоставленные вами журналы, я вижу две отсутствующие зависимости, упомянутые в вашем первом блоке.

sudo apt-get install libexpat-dev
sudo apt-get install libxml2-dev

Похоже, что они необходимы, и выполнение вышеуказанного подтвердит их наличие.

Во втором блоке я замечаю

/bin/sh: 1: /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc: not found

, что означает, что вы пропали без вести gcc

Ubuntu предоставляет набор готовых пакетов, которые содержат основные инструменты, необходимые для сборки из исходного кода, включая gcc. См. https://packages.ubuntu.com/trusty/build-essential для полного списка.

sudo apt-get install build-essential

Как только вышеперечисленное будет установлено, дайте Perl, установленному еще раз, и это должно сработать.

...