Skip to content


RT и Perl modules hell

Что делать с perl-модулями при установке RT

Установка RT

Наверняка каждый, кто сталкивался с установкой RT (Request Tracker) от BestPractical, вспоминал "незлим тихим словом" того, кто придумал такое огромное количество зависимостей данного программного продукта от разнообразных perl-модулей. Многие десятки их! И я, естественно, не смог устоять перед соблазном установить часть их с помощью yum (дело было под 6-ой CentOS), так как это намного быстрее, чем через CPAN. Те, что не нашлись yum-ом, ставил CPAN-ом, попивая чаек и краем глаза поглядывая на многие экраны сообщений от него в консоли. Да, CPAN – сцуко многословный.

Когда количество нехватающих модулей снизилось до четырех вот этих с пометкой MISSING

# perl sbin/rt-test-dependencies
perl:
 >=5.10.1(5.10.1) ...found
users:
 rt group (rt) ...found
 bin owner (root) ...found
 libs owner (root) ...found
 libs group (bin) ...found
 web owner (apache) ...found
 web group (apache) ...found
CLI dependencies:
CORE dependencies:   
 HTML::FormatText::WithLinks::AndTables ...MISSING
 HTML::Mason::PSGIHandler >= 0.52 ...MISSING
 HTML::FormatText::WithLinks >= 0.14 ...MISSING
 Plack::Handler::Starlet ...MISSING
DASHBOARDS dependencies:
GD dependencies:
GPG dependencies:
GRAPHVIZ dependencies:
ICAL dependencies:
MAILGATE dependencies:
SMIME dependencies:
USERLOGO dependencies:
 
SOME DEPENDENCIES WERE MISSING.
CORE missing dependencies:
 HTML::FormatText::WithLinks >= 0.14 ...MISSING
 HTML::Mason::PSGIHandler >= 0.52 ...MISSING
 HTML::FormatText::WithLinks::AndTables ...MISSING
 Plack::Handler::Starlet ...MISSING
 
Perl library path for /usr/bin/perl:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5

я с прискорбием осознал, что дальше дело не двигается. Yum-ом их найти не удалось, а perl -MCPAN -e shell ругался малопонятными матюками и тоже отказывался что-либо устанавливать. Так, модуль Plack::Handler::Starlet хотел Server::Starter, Server::Starter хотел Net::EmptyPort, Net::EmptyPort хотел IO::Socket::IP, а IO::Socket::IP при попытке установки выдавал грусть-печальное

Socket version 1.97 required--this is only version 1.82 at /root/.cpan/build/IO-Socket-IP-0.37-nWpYmj/blib/lib/IO/Socket/IP.pm line 30.

Ушел гуглить и таки понял, что я не единственный, к счастью, кто столкнулся с такой бедой. Тадам! Запомните эту магическую командочку:

perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'

Судя по man-у, оно делает рекомпиляцию динамически загружаемых модулей CPAN-а, что-то там попутно обновляя. Колбасило долго, где-то с пол-часа, и в конце концов выдало не шибко оптимистичную простыню:

Running install for module 'Thread'
The most recent version "3.04" of the module "Thread"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install Thread   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'Tie::Array'
The most recent version "1.06" of the module "Tie::Array"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install Tie::Array   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'Tie::Hash'
The most recent version "1.05" of the module "Tie::Hash"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install Tie::Hash   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'Tie::Hash::NamedCapture'
The most recent version "0.09" of the module "Tie::Hash::NamedCapture"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install Tie::Hash::NamedCapture   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'Tie::Scalar'
The most recent version "1.04" of the module "Tie::Scalar"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install Tie::Scalar   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'Tie::StdHandle'
The most recent version "4.4" of the module "Tie::StdHandle"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install Tie::StdHandle   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Time::Zone is up to date (2.24).
Tree::Simple::Visitor is up to date (1.29).
Running install for module 'UNIVERSAL'
The most recent version "1.13" of the module "UNIVERSAL"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install UNIVERSAL   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'Unicode::UCD'
The most recent version "0.64" of the module "Unicode::UCD"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install Unicode::UCD   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'XML::Parser::Expat'
Running make for T/TO/TODDR/XML-Parser-2.44.tar.gz
  Has already been unwrapped into directory /home/avz/.cpan/build/XML-Parser-2.44-TDESRf   
Could not make: Unknown error
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'attributes'
The most recent version "0.27" of the module "attributes"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install attributes   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
autodie::exception is up to date (2.29).
autodie::exception::system is up to date (2.29).
autodie::hints is up to date (2.29).
bigint is up to date (0.43).
bigrat is up to date (0.43).
Running install for module 'blib'
The most recent version "1.06" of the module "blib"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install blib   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'bytes'
The most recent version "1.05" of the module "bytes"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install bytes   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'charnames'
The most recent version "1.43" of the module "charnames"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install charnames   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'diagnostics'
The most recent version "1.34" of the module "diagnostics"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install diagnostics   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'feature'
The most recent version "1.42" of the module "feature"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install feature   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
fields is up to date (2.23).
Running install for module 'filetest'
The most recent version "1.03" of the module "filetest"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install filetest   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'integer'
The most recent version "1.01" of the module "integer"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install integer   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'less'
The most recent version "0.03" of the module "less"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install less   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'locale'
The most recent version "1.09" of the module "locale"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install locale   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'mro'
The most recent version "1.18" of the module "mro"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install mro   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'open'
The most recent version "1.10" of the module "open"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install open   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'overload'
The most recent version "1.26" of the module "overload"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install overload   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'overloading'
The most recent version "0.02" of the module "overloading"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install overloading   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 're'
The most recent version "0.32" of the module "re"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install re   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'sigtrap'
The most recent version "1.08" of the module "sigtrap"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install sigtrap   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'sort'
The most recent version "2.02" of the module "sort"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install sort   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'strict'
The most recent version "1.11" of the module "strict"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install strict   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'subs'
The most recent version "1.02" of the module "subs"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install subs   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'utf8'
The most recent version "1.19" of the module "utf8"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install utf8   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'vars'
The most recent version "1.03" of the module "vars"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install vars   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'vmsish'
The most recent version "1.04" of the module "vmsish"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install vmsish   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'warnings'
The most recent version "1.36" of the module "warnings"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install warnings   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running install for module 'warnings::register'
The most recent version "1.04" of the module "warnings::register"
is part of the perl-5.24.0 distribution. To install that, you need to run
  force install warnings::register   --or--
  install R/RJ/RJBS/perl-5.24.0.tar.gz
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Could not read '/home/avz/.cpan/build/Mouse-v2.4.5-gtPyV1/META.yml'. Falling back to other methods to determine prerequisites
Could not read '/home/avz/.cpan/build/Crypt-SSLeay-0.72-ypNjbf/META.yml'. Falling back to other methods to determine prerequisites
Could not read '/home/avz/.cpan/build/DateTime-TimeZone-Local-Win32-1.94-knZrvf/META.yml'. Falling back to other methods to determine prerequisites
Could not read '/home/avz/.cpan/build/GD-2.56-KfYkXO/META.yml'. Falling back to other methods to determine prerequisites
Could not read '/home/avz/.cpan/build/multidimensional-0.012-GF5S2z/META.yml'. Falling back to other methods to determine prerequisites
Could not read '/home/avz/.cpan/build/bareword-filehandles-0.004-AL8LD9/META.yml'. Falling back to other methods to determine prerequisites
Could not read '/home/avz/.cpan/build/GD-2.53-R0PZ76/META.yml'. Falling back to other methods to determine prerequisite

И хотя, на первый взгляд, все эти "Can't test", "Could not make: Unknown error" и "Could not read" выглядят весьма депрессивно, на деле оказалось, что появился некоторый прогресс. Так, теперь вместо сообщений об ошибках процесс установки модуля Server::Starter тупо зависал с сообщением "received TERM, sending TERM to all workers:1125" на консоли:

t/04-starter-dir.t ..... ok
t/05-killolddelay.t .... start_server (pid:1038) starting now...
starting new worker 1039
t/05-killolddelay.t .... 5/28 received HUP, spawning a new worker
starting new worker 1125
new worker is now running, sending TERM to old workers:1039
sleeping 3 secs before killing old workers
t/05-killolddelay.t .... 6/28 killing old workers
old worker 1039 died, status:0
t/05-killolddelay.t .... 7/28 received TERM, sending TERM to all workers:1125
 
^C  KAZUHO/Server-Starter-0.32.tar.gz
  ./Build test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports KAZUHO/Server-Starter-0.32.tar.gz
Failed during this command:
 KAZUHO/Server-Starter-0.32.tar.gz            : make_test NO

Спустя минут 5 созерцания этой красоты у меня сложилось впечатление, что это таки делает мне нервы, и нажал Ctrl-C. Так как тут речь идет о выполнении каких-то тестов, решил попробовать запустить в CPAN-shell вместо "install Server::Starter" команду "notest install Server::Starter". И шо вы думаете? Таки помогло!

cpan[5]> notest install Server::Starter 
Running install for module 'Server::Starter'
  KAZUHO/Server-Starter-0.32.tar.gz
  Has already been unwrapped into directory /home/avz/.cpan/build/Server-Starter-0.32-0
  KAZUHO/Server-Starter-0.32.tar.gz
  Has already been prepared
  KAZUHO/Server-Starter-0.32.tar.gz
  Has already been made
  KAZUHO/Server-Starter-0.32.tar.gz
  Skipping test because of notest pragma
Running Build install
Building Server-Starter
Installing /usr/local/share/man/man1/start_server.1
Installing /usr/local/share/perl5/Server/Starter.pm
Installing /usr/local/share/perl5/Server/Starter/Guard.pm
Installing /usr/local/share/man/man3/Server::Starter.3pm
Installing /usr/local/bin/start_server
  KAZUHO/Server-Starter-0.32.tar.gz
  ./Build install  -- OK

Ну а далее perl -MCPAN -e shell далее все четыре недостающих модуля установил без сучка и задоринки и взору предстала вожделенная картина:

# perl sbin/rt-test-dependencies
perl:
 >=5.10.1(5.10.1) ...found
users:
 rt group (rt) ...found
 bin owner (root) ...found
 libs owner (root) ...found
 libs group (bin) ...found
 web owner (apache) ...found
 web group (apache) ...found
CLI dependencies:
CORE dependencies:
DASHBOARDS dependencies:
GD dependencies:
GPG dependencies:
GRAPHVIZ dependencies:
ICAL dependencies:
MAILGATE dependencies:
SMIME dependencies:
USERLOGO dependencies:
 
All dependencies have been found.

Перемога!

Posted in *nix, Howto.

Tagged with , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

You must be logged in to post a comment.