Ручной интерактивный прокси для установки пакетов на сервер без интернета
Мне нужно установить некоторые пакеты rpm, python и R на сервер, который не подключен к Интернету: я могу только ssh к нему. Я могу скачать пакеты и скопировать их на сервер, а затем установить их вручную с rpm -i
и тому подобное. Но управление зависимостями и поиск нужного rpm-пакета громоздки и специфичны для каждого программного обеспечения (здесь это будет
yum deplist foo
+yumdownloader foo
+rpm -i foo.rpm
,- зеркало http://cran.r-project.org/src/contrib/ + https://stackoverflow.com/questions/10807804/offline-install-of-r-package-and-dependencies,
pip install --download ~/bar/ foo
+pip install --no-index --find-links ~/bar/ foo
Плюс некоторое управление зависимостями для R и pip.)
Поэтому я рассматриваю другой путь, который может работать для любого программного обеспечения:
- запускать "ручной прокси" локально, как интерактивный инструмент командной строки
- в новой консоли попросите yum/R/pip использовать этот прокси и установить какой-либо пакет
- всякий раз, когда yum запрашивает какой-либо файл из Интернета (например, PACKAGES или foo.tar.gz), прокси-сервер вручную печатает URL-адрес и ждет
- Я загружаю указанный URL с другого компьютера и отправляю его на сервер.
- Я говорю прокси-серверу вручную, что там есть файл, который отвечает на запрос yum.
Есть ли инструмент для реализации ручного прокси? Похоже, что mitmproxy может это сделать, может кто-нибудь со знанием этого инструмента подтвердить?
Я вижу эти потенциальные проблемы:
- Мне может понадобиться увеличить тайм-аут.
- Если менеджер пакетов yum, pip или R использует SSL, мне нужно установить сертификат mitmproxy
- установка mitmproxy и его зависимостей (на сервере, которому не хватает интернета) может быть более сложной, чем проблема, которую я пытаюсь решить.
Любой другой инструмент для этого также будет приветствоваться. Может быть, небольшого скрипта Python достаточно.
Изменить: Ответ на второй комментарий TessellatingHeckler:
- SSH вернуться с сервера? Возможно, но сетевой администратор может быть недоволен (плюс, настройка не тривиальна, так как мой компьютер также находится за прокси-сервером, поэтому мне потребуется двойной переход + ssh -R).
- github.com/inaz2/proxy2? Выглядит хорошо.
yum localinstall
? Это действительно лучше, чемrpm -i
, но моя цель здесь (получить некоторый опыт и) общее решение для любых менеджеров пакетов с поддержкой прокси. Менеджеры пакетов различаются по способам перечисления зависимостей и установки локального репо, и эти функции обычно менее документированы, чем указание им использовать прокси.