[Moscow.pm] установка зависимостей perl

Alexandr Gomoliako zzz на zzz.org.ua
Сб Май 19 17:18:01 PDT 2012


> тут еще проблема, что следующую зависимость видишь только, как ставишь очередной модуль

Знаю два способа, как посмотреть:

  cpanm --scandeps DBD::Oracle
    или
  http://deps.cpantesters.org/?module=DBD::Oracle

> я счастлив а то я думал, как я на продакшене буду ставить DBD::Oracle без рутовых прав прав и make
> все мои тесты заработали, кроме prove
> там такая ошибка

Да легко все ставить и рутовые права не нужны. В перл принято, что все
модули собираются и работают без установки. Для этого при сборке (perl
Makefile.PL && make) они помещаются в две директории: blib/lib и
blib/arch. В первую все .pm, во вторую все .so, которые из xs
получаются.
Например, если что-то зависит от JSON::XS и EV и они лежат в
../JSON-XS и ../EV, то нужно просто добавить их в PERL5LIB:

  export PERL5LIB=../JSON-XS/blib/lib:../JSON-XS/blib/arch:../EV/blib/lib:../EV/blib/arch
  perl  myscript.pl
    или
  perl -I../JSON-XS/blib/lib -I../JSON-XS/blib/arch -I../EV/blib/lib
-I../EV/blib/arch  myscript.pl

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

> File::Glob object version 1.02 does not match bootstrap parameter 1.06

Это значит, что .so модули (xs) из одного перла, а их .pm из другого.
Т.е. @INC неправильный, многие CORE модули уже не заработают. Это
из-за тех советов в вики. Лучше поставить самому.


Подробная информация о списке рассылки Moscow-pm