Как я могу установить модули Perl на ограниченном сервере? - PullRequest
3 голосов
/ 08 июля 2010

У меня есть сервер, на котором я могу ssh, но это все. В противном случае он полностью закрыт от внешнего мира. Я пытаюсь развернуть некоторые сценарии, которые я написал для него, но у них есть несколько зависимостей Perl (Params :: Validate, XML :: Simple и т. Д.). Я не могу получить их через yum, так как наш спутниковый сервер не имеет этих пакетов и обычная установка CPAN также не будет работать, так как хост ограничен. Перемещение исходников модуля и компиляция чрезвычайно утомительны. Я занимался этим более суток, пытаясь разрешить зависимости без конца. Есть ли способ обойти это? Любая помощь с благодарностью.

Ответы [ 5 ]

6 голосов
/ 08 июля 2010

Если вы можете, установите параллельную систему как можно ближе (насколько это возможно к архитектуре и версии perl) к вашей закрытой системе и установите все свои зависимости в отдельном каталоге lib, используя local :: lib.Затем вы можете просто просмотреть этот каталог в своей закрытой системе, и снова с помощью local :: lib (и настройкой некоторых переменных среды) ваш код сможет использовать этот каталог.

1 голос
/ 08 июля 2010

Вы пробовали cpan минус?Если нет, вот как это получить.

curl -L http://cpanmin.us | perl - App::cpanminus

Вы можете использовать его с local :: lib.: -D

В Chromatic есть отличное сообщение о том, как даже получить более новую (и множественную) версию (и) perl на ограниченную систему.

1 голос
/ 08 июля 2010

Если вы можете сменить хостинг-провайдера, самое время переключиться ;-) (лично я думаю Линодовый камень! ).

Предполагая, что это не так, вы можете попробовать установить параллельную систему, как указано @ Ether .

С другой стороны, если используемые вами модули и их зависимости являются чистыми модулями Perl, вы сможете использовать PAR :: Packer для упаковки вашего скрипта и его зависимостей и scp a один файл переходит на хост.

1 голос
/ 08 июля 2010

См. это , в нем объясняется несколько методов, которые можно использовать для запуска модулей CPAN в производство.

0 голосов
/ 15 мая 2013

Я использую SSH туннелирование для туннелирования с удаленного сервера обратно на локальный прокси-сервер.Таким образом, вы можете установить любые модули, которые вам нужны.Просто установите переменную http_proxy для локального порта, который удаленно пересылается (если это имеет смысл) с вашей локальной машины.

т.е.

ssh user@remote -R 3128:proxy_ip:3128  (for a tunnelling a Squid setup)

, затем на удаленном сервере в cpan

o conf http_proxy=http://localhost:3128
o conf commit
...