#ruby #linux #installation #rubygems #firewall
#ruby #linux #установка #rubygems #брандмауэр
Вопрос:
Я пытаюсь установить fpm на сервере Linux за брандмауэром. Для этого я использую прокси-сервер с аутентификацией.
gem install --no-document -p http://proxyuser:proxypassword@proxyserver.tld:proxyport fpm
Сбой с ошибкой:
ERROR: Could not find a valid gem 'fpm' (>=0), here is why:
Unable to download data from https://rubygems.org - no such name (https://api.rubygems.org/specs.4.8.gz)
Та же ошибка возникает, когда я использую прокси с переменными окружения http_proxy / https_proxy.
Когда я использую curl для загрузки https://api.rubygems.org/specs.4.8.gz все работает нормально. Либо с использованием переменных окружения http_proxy https_proxy, либо с использованием curl -x.
Я погуглил несколько часов, и единственными решениями, которые я нашел, были обходные пути и никакого реального решения. Например. «Попробуйте использовать gem на компьютере без брандмауэра» и т. Д.
Итак, это важные моменты:
- Операционная система: Linux (Suse)
- Есть брандмауэр, есть прокси с аутентификацией.
- DNS-разрешение работает при использовании curl или wget.
- У меня есть пользователь, которому разрешено загружать исполняемые файлы.
- Я являюсь пользователем root в системе.
- Я не могу загрузить файлы gem с другого компьютера, потому что мне не разрешено загружать файлы с USB-накопителя.
Ответ №1:
Теперь я сделал это с помощью следующего скрипта:
#!/bin/bash
/bin/false
while [ $? -ne 0 ]; do
sleep 5
zypper --non-interactive install ruby-devel gcc make
done
GEMS="arr-pm-0.0.10.gem backports-3.17.1.gem cabin-0.6.0.gem childprocess-0.9.0.gem clamp-1.0.0.gem ffi-1.10.0.gem json-1.7.7.gem pleaserun-0.0.29.gem ruby-xz-0.2.3.gem fpm-1.11.0.gem stud-0.0.23.gem dotenv-2.7.6.gem insist-1.0.0.gem mustache-0.99.8.gem io-like-0.3.1.gem"
for package in $GEMS
do
curl -x http://PROXYNAME:PROXYPORT -U "PROXYUSER:PROXYPASS" https://rubygems.org/downloads/$package -s --output $package
done
gem install -l --no-document fpm
Установка выполняется без каких-либо ошибок, но если я пытаюсь запустить fpm, я получаю сообщение об ошибке:
/usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- backports/2.0.0/stdlib/ostruct (LoadError)
from /usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/lib64/ruby/gems/2.1.0/gems/fpm-1.11.0/lib/fpm/package.rb:7:in `<top (required)>'
from /usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/lib64/ruby/gems/2.1.0/gems/fpm-1.11.0/lib/fpm.rb:3:in `<top (required)>'
from /usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/lib64/ruby/gems/2.1.0/gems/fpm-1.11.0/bin/fpm:4:in `<main>'