Как установить модули Perl с зависимостями в автономном режиме на Windows и Strawbery Perl?

Мне нужно установить Strawberry Perl и многие модули Perl (с зависимостями) на машину с Windows без доступа к Интернету (по соображениям безопасности).

Автономная установка Strawberry Perl работает отлично, но мне не удалось установить необходимые мне дополнительные модули.

Я подготовил CPAN-репозиторий на машине Ubuntu, используя Pinto:

pinto --root my_repo init
pinto --root my_repo pull -M Some::Mudule1 Some::Mudule2

Затем я перенес каталог my_repo на целевую машину как C:\some\path\my_repo и попробовал:

cpanm --mirror "file://C:/some/path/my_repo" --mirror-only Some::Mudule1 Some::Mudule2

Но в итоге появилось сообщение об ошибке:

! cannot open file 'C:\Users\dedek/.cpanm/sources/file%C%some%path%my_repo/02packages.details.txt.gz': No such file or directory opening compressed index
! Couldn't find module or a distribution Some::Mudule1
! cannot open file 'C:\Users\dedek/.cpanm/sources/file%C%some%path%my_repo/02packages.details.txt.gz': No such file or directory opening compressed index
! Couldn't find module or a distribution Some::Mudule2

Почему cpanm ищет такое странное место? Как я могу это исправить? Есть ли более простой способ установить модули Perl в автономном режиме? Было бы также неплохо, если бы я мог подготовить репозиторий, подобный CPAN, на машине с Windows. Но у меня не получилось установить Pinto на Windows, возможно ли это?


person dedek    schedule 16.09.2014    source источник
comment
Из связанного вопроса stackoverflow.com/questions/4825188 я заметил, что версия Strawberry Perl PortableZIP может решить проблему. Но мне все еще любопытно, что не так с моим подходом.   -  person dedek    schedule 16.09.2014


Ответы (1)


Наконец я нашел свою ошибку. В исходном репозитории типа CPAN, созданном Пинто, есть символическая ссылка modules -> stacks/master/modules. И эта ссылка была отброшена при переносе (с помощью WinSP). Когда я скопировал my_repo/stacks/master/modules в my_repo/modules, все работало правильно.

Я был бы очень признателен за более актуальное сообщение об ошибке от cpanm!

person dedek    schedule 16.09.2014