Как обновить Ruby Gems из-за прокси (ISA-NTLM)

брандмауэр, за которым я стою, работает под управлением Microsoft ISA server в режиме только NTLM. Хэш кто-нибудь имеет успех, получая свои рубиновые драгоценные камни для установки/обновления через Ruby SSPI gem или другим методом?

... или я просто ленив?

Примечание: rubysspi-1.2.4 не работает.

Это также работает для "igem", часть проекта IronRuby

18 ответов


Я не смог заставить мою работу работать с коммутатором командной строки, но я смог сделать это, просто установив мой HTTP_PROXY переменные среды. (Обратите внимание, что случай кажется важным). У меня есть пакетный файл, в котором есть такая строка:

SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%

Я установил четыре ссылочные переменные, прежде чем я доберусь до этой строки, очевидно. Например, если мое имя пользователя "wolfbyte" мой пароль "секрет" и мой прокси-сервер называется "pigsy" и работает на порту 8080:

SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080

вы можете быть осторожны, как вы управляете этим, потому что он хранит ваш пароль в виде обычного текста в сеансе машины, но я не думаю, что это должно быть слишком большой проблемой.


для ОС Windows я использовал Fiddler для решения этой проблемы.

  1. установить / запустить скрипач из www.fiddler2.com
  2. Run gem:

    $ gem install --http-proxy http://localhost:8888 $gem_name
    

это сработало:

gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name

Я использую cntlm (http://cntlm.sourceforge.net/) на работе. Конфигурация очень похожа на ntlmaps.

отлично работает, а также позволяет мне подключить Мой Ubuntu box к прокси-серверу ISA.

проверить http://cntlm.wiki.sourceforge.net/ дополнительные сведения


Я пробовал некоторые из этих решений, и никто из них не работал. Я наконец нашел решение, которое работает для меня:

gem install -p http://proxy_ip:proxy_port rails

С помощью -p параметр для передачи прокси. Я использую Gem версии 1.9.1.


это отлично решило мою проблему:

gem install -p http://proxy_ip:proxy_port compass

возможно, Вам потребуется добавить к нему имя пользователя и пароль:

gem install -p http://[username]:[password]@proxy_ip:proxy_port compass

создать .файл gemrc (либо в /etc /gemrc, либо~/.gemrc или, например, с шеф-поваром gem in/opt/chef/embedded/etc / gemrc), содержащим:

http_proxy: http://proxy:3128

тут вы можете gem install как обычно.


Если у вас возникли проблемы с аутентификацией через прокси-сервер, обязательно установите переменные среды точно в следующем формате:

set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password

на user:password@ синтаксис, похоже, не работает, и есть также некоторые плохо названные переменные среды, плавающие вокруг переполнения стека и различных сообщений форума.

также имейте в виду, что это может занять некоторое время для ваших драгоценных камней, чтобы начать загрузку. Сначала я думал, что это не работает, но с небольшим терпением они начали загрузку, как и ожидалось.


Я пробовал все вышеперечисленные решения, однако ни один из них не работал. Если вы на linux / macOS, я настоятельно рекомендую использовать tsocks через SSH-туннель. Что вам нужно для того, чтобы эта настройка работала, это машина, на которой вы можете войти через ssh, и в дополнение к этому установлена программа под названием tsocks.

идея здесь заключается в создании динамического туннеля через SSH (прокси socks5). Затем мы настраиваем tsocks для использования этого туннеля и запуска наших приложений в этом дело:

tsocks gem install ...

или для учета rails 3.0:

tsocks bundle install

более подробное руководство можно найти в разделе:

http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/

несмотря на то, что эта процедура написана для Ubuntu, она должна быть применима ко всем машинам на базе Unix. Альтернативой tsocks для Windows является FreeCap (http://www.freecap.ru/eng/). Жизнеспособный клиент SSH в windows называется замазка.


сообщений об этой теме предостаточно, и чтобы помочь другим сэкономить часы попыток различных решений, вот окончательный результат моих часов возиться.

три решения вокруг интернета на данный момент являются: rubysspi apserver cntlm

rubysspi работает только с компьютера Windows, AFAIK, поскольку он полагается на библиотеку Win32Api. Поэтому, если вы находитесь в окне Windows, пытаясь запустить через прокси-сервер, это решение для вас. Если вы находитесь на Linux дистрибутив, вы удачи.

apserver кажется мертвым проектом. Ссылка, указанная в сообщениях, которые я видел, привела к странице 404 на sourceforge. Я ищу "apserver" на sourceforge ничего не возвращает.

ссылка sourceforge для cntlm, которую я видел, перенаправляет на http://cntlm.awk.cz/, но это время истекло. Поиск в sourceforge открывает эту ссылку, которая работает:http://sourceforge.net/projects/cntlm/

после загрузки и настройки cntlm мне удалось установить gem через прокси, поэтому это кажется лучшим решением для дистрибутивов Linux.


обходным путем является установка http://apserver.sourceforge.net на локальном компьютере настройте его и запустите gems через этот прокси-сервер.

  • установить: просто скачайте apserver 097 (а не экспериментальный 098!) и распаковать вещи.
  • настройки: редактирование сервера.cfg-файл и поместите значения для вашего прокси-сервера MS в PARENT_PROXY и PARENT_PROXY_PORT. Введите значения для домена и пользователя. Оставьте пароль пустым (ничего после двоеточия) – вам будет предложено при запуске он.
  • выполнить apserver: cd aps097; python main.py
  • Запустить Драгоценные Камни:gem install—http-proxy http://localhost:5865/ library

Я работаю за прокси и только что установил SASS, загрузив непосредственно из http://rubygems.org.

Я тогда побежал sudo gem install [path/to/downloaded/gem/file]. Я не могу сказать, что это сработает для всех драгоценных камней, но это может помочь некоторым людям.


это сработало для меня в окне Windows:

set HTTP_PROXY=http://server:port
set HTTP_PROXY_USER=username
set HTTP_PROXY_PASS=userparssword
set HTTPS_PROXY=http://server:port
set HTTPS_PROXY_USER=username
set HTTPS_PROXY_PASS=userpassword

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

трюк, в моем случае, был HTTPS_PROXY наборы. Без них я всегда получал ошибку аутентификации прокси-сервера 407.


rubysspi-1.3.1 работал для меня в Windows 7, используя инструкции с этой страницы:

http://www.stuartellis.eu/articles/installing-ruby/


Если вы находитесь в системе *nix, используйте это:

export http_proxy=http://${proxy.host}:${port}
export https_proxy=http://${proxy.host}:${port}

а затем попробуйте:

gem install ${gem_name}

Если вы хотите использовать прокси SOCKS5, вы можете попробовать rubygems-socksproxyhttps://github.com/gussan/rubygems-socksproxy.

Это работает для меня на OSX 10.9.3.


если за прокси, вы можете перейти к Ruby загрузки, нажмите кнопку Загрузить, которая загрузит указанное обновление ( или драгоценный камень ) в нужное место.

далее, через командную строку Ruby, перейдите к загруженному местоположению с помощью:pushd [directory]

например : pushd D:\Setups

затем выполните следующую команду: gem install [update name] --local

например: gem install rubygems-update --local.

протестировано в Windows 7 с версией обновления Ruby 2.4.1.

для проверки использовать следующая команда:ruby -v


вместо редактирования пакетных файлов (которые вам, возможно, придется сделать для других Ruby gems, например, Bundler), вероятно, лучше сделать это один раз и сделать это правильно.

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

  1. Пуск -> щелкните правой кнопкой мыши Компьютер -> Свойства
  2. Выберите "Дополнительные Параметры Системы"
  3. Нажмите Дополнительно - > Переменные Среды
  4. создать новая системная переменная с именем "HTTP_PROXY", и установите значение для вашего прокси-сервера
  5. перезагрузка или выход из системы и снова

в зависимости от ваших требований к аутентификации,HTTP_PROXY значение может быть таким же простым, как:

http://proxy-server-name

или более сложным, как указывали другие

http://username:password@proxy-server-name:port-number