2015-02-24 2 views
4

Почему я могу получить «Не удается найти загружаемый объект для модуля» даже после установки модуля?

Может ли кто-нибудь указать мне на возможные причины того, что Perl не найдет установленный модуль?

$ ll /usr/share/perl5/Unix/Processors.pm 
-rw-r--r-- 1 root root 3.2K Sep 11 12:39 /usr/share/perl5/Unix/Processors.pm 

Ok,

$ perldoc -l Unix::Processors 
/usr/share/perl5/Unix/Processors.pm 

Хорошо, но

$ perl -MUnix::Processors -e1 
Can't locate loadable object for module Unix::Processors in @INC (@INC contains: /usr/lib/cegma /usr/share/mocat/src /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at -e line 0 
Compilation failed in require. 
BEGIN failed--compilation aborted. 

ИСПРАВЛЕНО: Я поставил скомпилированный Processors.so рядом с .pm, когда он должен находиться в каталоге auto.

+2

Похоже, что установка была неполной. Кажется, что отсутствует библиотека C. – toolic

+4

Как вы установили модуль? –

+0

* «Я поставил скомпилированные Processors.so рядом с .pm, когда он должен быть в автокаталоге» * Нельзя «помещать» файлы в любом месте. Вы должны * установить * модуль из дистрибутивного пакета, загруженного из CPAN – Borodin

ответ

10

Модуль Unix::Processors имеет компонент XS (C), который должен быть скомпилирован и связан как часть процесса установки. Сообщение об ошибке Can't locate loadable object ссылается на данный компонент (общая библиотека), а не сам файл .pm модуля

Это является признаком неправильно установленным модулем, и чаще всего происходит, когда файл .pm был просто скопирован на место вместо правильной установки, как описано в perldoc perlmodinstall. Это также может произойти, если установка была принудительной, независимо от ошибок на этапах сборки и тестирования.