2012-03-02 2 views
2

Установка модулей Perl из командной строки Linux с помощью команды cpan работает отлично, такие как:perldoc не показывает документацию для установленных PERL модулей

$ cpan [Module] 

и после окончания я могу найти в документации модуля через:

$ perldoc [Module] 

но делать это через cfengine, который бы просто автоматизировать скрипту cpan команду (в shellcommands: список), модуль инсталлируется, но perldoc не будет работать на него:

$ perldoc Text::Histogram 
No documentation found for "Text::Histogram".* 

Однако применение:

$ man Text::Histogram 

будет работать нормально.

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

Какие-либо намеки об этом?

+1

Используете ли вы другой пользователь (чем cfengine) при попытке запустить обычную команду cpan? – summea

+1

У вас есть несколько «perl» в вашей системе, но может быть, только один «perldoc»? Попробуйте 'perl $ (который perldoc) :: Module'. – mob

+0

Хотя я хотел бы знать ответ на этот вопрос, если он работает с 'man', для чего вам нужен' perldoc'? Просто любопытно. Хм ... может быть, если у вас установлен пакет [pmtools] (http://search.cpan.org/dist/pmtools-1.10/), я могу спросить о конфликтующих путях manpaths против '@ INC'. – tchrist

ответ

2

perldoc ищет модуль Perl, включая путь (@INC). Если perldoc не может найти его, perl не сможет его найти. Попробуйте perl -wle 'use The::Module', чтобы узнать, может ли perl его загрузить. Если это может найти его, то что-то странное происходит.

Что случилось, если вы установили модуль через стороннюю программу (даже если он использует клиент cpan), он устанавливается в другое место и/или с другим perl, чем тот, повторное использование в командной строке. Там есть ряд причин для этого, три, скорее всего, являются ...

  • Он имеет различные PATH, чем вы и нашел другую копию cpan для другого perl.
  • Он настроен клиентом cpan по-разному, чтобы установить его на другой PATH.
  • cpan настроен для установки под домашним каталогом, и он работает как другой пользователь.

Существует также нечетная вероятность того, что модуль не имеет документации.

Вы можете увидеть, что делает perldoc, чтобы найти модуль с perldoc -D The::Module (это может быть -v в старых версиях).