
У меня есть сервер Red Hat (сервер 1), у которого нет доступа к Интернету. У меня также есть другой сервер Red Hat (сервер 2), у которого ЕСТЬ доступ к Интернету, и он также может получить доступ к серверу 1.
Мне нужно установить программы на сервере 1. В данном случае речь идет о модуле узла pm2. Я не уверен, как это можно сделать. Мне следует установить модуль на сервере 2, а затем загрузить его на сервер 1? Или вообще: какой подход следует использовать в этой ситуации?
решение1
Загрузите пакет (он должен заканчиваться на .rpm) на сервер 2, затем скопируйте файл с помощью scp на сервер 1 и запустите его rpm -Uvh package.rpm
как root.
решение2
node
Модули не обязательно поставляются упакованными в RPM. Он может — и делает — читать из сети (минуя систему RPM). Вы бы использовалиnode
менеджер пакетов (npm
) для установки в tarball, который можно скопировать на несетевую машину, ираспаковатьтам.
Theвеб-страница дляpm2
указывает, что он будет установлен (используя сеть) с npm
, приводя в качестве примера
npm install pm2 -g
Вы могли бы использовать npm pack
, чтобы сделать tarball из этой точки. Ответ отцтурцлвnode.js: Установка tar.gz на Linuxдостаточно хорошо объясняет: решите, куда его поместить на целевой машине, и распакуйте там.
Дальнейшее чтение:
Эта команда устанавливает пакет и все пакеты, от которых он зависит. Если у пакета есть файл shrinkwrap, установка зависимостей будет осуществляться с его помощью. Смотретьnpm-упаковка.
Проблемы npm #1349 — Как установить пакеты со всеми зависимостями в автономном режиме?, имеет комментарий (и пояснения):
Перечислите зависимости в
bundledDependencies
вашем файлеpackage.json
, а затем запуститеnpm pack
для создания tarball. Перенесите его на другую машину, и либо npm install<tarball>
или просто взломайте его вручную.