Как выяснить, для каких зависимостей дистрибутива CPAN требуется компилятор? - PullRequest
4 голосов
/ 23 ноября 2010

Мне нужно установить инструмент Perl на рабочий сервер, на котором нет компилятора. Я могу нормально установить дистрибутивы CPAN через local :: lib, но отсутствие компилятора означает, что я должен попросить системных администраторов установить дополнительные модули. Из-за того, что у них есть среднее время выполнения 1-2 недели, даже для самых нелепо простых задач, процесс попытки установить, попросить их установить то, что мешало, попытаться установить снова и т. Д. И т. Д., Чрезвычайно болезненный. *

Так как я могу быстро выяснить, для каких зависимостей dist требуется компилятор c, чтобы я мог просто дать им список?

Ответы [ 4 ]

6 голосов
/ 23 ноября 2010

При поиске модуля в CPAN на http://search.cpan.org, обратите внимание на крайнюю правую часть окна браузера. Там вы увидите ссылку под названием Зависимости . Это прямо под ссылкой для загрузки модуля.

Если вы нажмете на эту ссылку, вы перейдете к http://deps.cpantesters.org, который покажет вам дерево зависимостей для этого модуля. Например, посмотрите на это для File :: Spec в http://deps.cpantesters.org/?module=File::Spec&perl=5.12.1&os=any+OS&pureperl=on&devperls=on.

Это не идеально, но даст вам хорошее представление о том, какие модули вам нужны.

Лучший способ - использовать команду cpan или менеджер ppm в Windows. Они автоматически загрузят зависимые модули.

4 голосов
/ 23 ноября 2010

Может быть, вы можете просто установить все необходимое на тестовом сервере, а затем упаковать приложение вместе с его зависимостями, используя PAR ?

3 голосов
/ 23 ноября 2010

Как сказал Дэвид, cpantesters пытается выяснить, является ли модуль "чистым" ..
их объяснение того, как они делают это , может быть полезным.угадайте, вы могли бы просто установить модули в аналогичную систему и скопировать их поверх?Или это против "правил"?;)

0 голосов
/ 23 ноября 2010

Разобрался с решением:

Отследите системные вызовы с помощью Technet ProcMon (для Windows) или strace в Linux, затем запустите набор тестов и отфильтруйте результат для «/ auto /». Таким образом, вы увидите все библиотеки DLL, которые он пытается загрузить, и сможете обработать диски, требующие компилятора.

...