Как обновить Ruby Gems из-за прокси (ISA-NTLM)
Брандмауэр, за которым я работаю, работает на сервере Microsoft ISA в режиме только NTLM. У кого-нибудь есть успехи, когда они получают свои Ruby гемы для установки / обновления через Ruby SSPI gem или другим способом?
... или я просто ленивый?
Примечание: rubysspi-1.2.4 не работает.
Это также работает для "Igem", часть проекта IronRuby
18 ответов
Я не смог заставить мой работать с помощью переключателя командной строки, но я смог сделать это, просто установив мой HTTP_PROXY
переменная окружения. (Обратите внимание, что дело кажется важным). У меня есть командный файл с такой строкой:
SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%
Я установил четыре переменные, на которые ссылаются, прежде чем я доберусь до этой строки очевидно. Например, если мое имя пользователя "wolfbyte", мой пароль "secret", а мой прокси-сервер называется "pigsy" и работает через порт 8080:
SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080
Возможно, вы захотите быть осторожным, как вы управляете этим, потому что он хранит ваш пароль в виде простого текста в сеансе машины, но я не думаю, что это должно быть слишком большой проблемой.
Для ОС Windows я использовал Fiddler, чтобы обойти эту проблему.
- Установить / запустить Fiddler с www.fiddler2.com
Запустите камень:
$ 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.
- gem install --http-proxy http://localhost:3128/ _name_of_gem_
Прекрасно работает, а также позволяет мне подключить мой Ubuntu box к прокси ISA.
Проверьте http://cntlm.wiki.sourceforge.net/ для получения дополнительной информации
Я попробовал некоторые из этих решений, и ни одно из них не сработало. Я наконец нашел решение, которое работает для меня:
gem install -p http://proxy_ip:proxy_port rails
с использованием -p
параметр для передачи прокси. Я использую Gem версии 1.9.1.
Создайте файл.gemrc (либо в /etc/gemrc или ~/.gemrc, либо, например, с chef gem в /opt/chef/ внедренный /etc/gemrc), содержащий:
http_proxy: http://proxy:3128
Тогда ты можешь gem install
по-прежнему.
Это решило мою проблему отлично:
gem install -p http://proxy_ip:proxy_port compass
Вам может понадобиться добавить ваше имя пользователя и пароль к нему:
gem install -p http://[username]:[password]@proxy_ip:proxy_port compass
Если у вас возникают проблемы с аутентификацией через прокси-сервер, убедитесь, что переменные среды установлены точно в следующем формате:
set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password
user:password@
Синтаксис, кажется, не работает, и есть некоторые плохо названные переменные среды, плавающие вокруг Переполнения стека и различных сообщений на форуме.
Также имейте в виду, что загрузка ваших драгоценных камней может занять некоторое время. Сначала я думал, что это не работает, но с небольшим терпением они начали скачивать, как и ожидалось.
Быстрый ответ: добавьте конфигурацию прокси с параметром для установки / обновления
gem install --http-proxy http://host:port/ package_name
gem update --http-proxy http://host:port/ package_name
Я перепробовал все вышеперечисленные решения, однако ни одно из них не сработало. Если вы используете Linux/ MacOS, я настоятельно рекомендую использовать tsocks через ssh-туннель. Для того, чтобы эта настройка работала, вам нужен компьютер, на котором вы можете войти через ssh, и в дополнение к этому установлена программа под названием tsocks.
Идея заключается в том, чтобы создать динамический туннель через SSH (прокси socks5). Затем мы настраиваем tsocks для использования этого туннеля и запуска наших приложений, в этом случае:
tsocks gem install ...
или для учета рельсов 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 на окнах называется замазкой.
Сообщений об этой теме предостаточно, и чтобы помочь другим сэкономить часы, пытаясь найти разные решения, вот окончательный результат моих часов работы.
На данный момент существует три решения в Интернете: 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 мне удалось установить гем через прокси, так что это, кажется, лучшее решение для дистрибутивов Linux.
Обходной путь - установить http://apserver.sourceforge.net/ на локальном компьютере, настроить его и запустить гем через этот прокси.
- Установка: Просто скачайте apserver 097 (а не экспериментальный 098!) И распакуйте.
- Настройка: отредактируйте файл server.cfg и поместите значения для вашего прокси-сервера MS в
PARENT_PROXY
а такжеPARENT_PROXY_PORT
, Введите значения для ДОМЕНА и ПОЛЬЗОВАТЕЛЯ. Оставьте ПАРОЛЬ пустым (ничего после двоеточия) - вам будет предложено запустить его. - Запустите apserver:
cd aps097; python main.py
- Run Gems:
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.
Если вы работаете в системе *nix, используйте это:
export http_proxy=http://${proxy.host}:${port}
export https_proxy=http://${proxy.host}:${port}
а затем попробуйте:
gem install ${gem_name}
rubysspi-1.3.1 работал для меня на Windows 7, используя инструкции с этой страницы:
Если за прокси-сервером вы можете перейти к загрузкам Ruby, нажмите "Загрузить", чтобы загрузить указанное обновление (или Gem) в нужное место.
Затем с помощью командной строки 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, например, Bundler), вероятно, лучше сделать это один раз и сделать это правильно.
В Windows за моим корпоративным прокси все, что мне нужно было сделать, это добавить HTTP_PROXY
переменная окружения для моей системы.
- Пуск -> щелкните правой кнопкой мыши Компьютер -> Свойства
- Выберите "Расширенные настройки системы"
- Нажмите Дополнительно -> Переменные среды
- Создайте новую системную переменную с именем "
HTTP_PROXY
"и установите значение для вашего прокси-сервера - Перезагрузитесь или выйдите и снова войдите
В зависимости от ваших требований к аутентификации HTTP_PROXY
Значение может быть таким простым:
http://proxy-server-name
Или более сложный, как указали другие
http://username:password@proxy-server-name:port-number
Если вы хотите использовать SOCKS5 прокси, вы можете попробовать rubygems-socksproxy https://github.com/gussan/rubygems-socksproxy.
У меня работает на OSX 10.9.3.
Для всех, кто использует SSH-туннель; вы можете создать версиюgem
команда, использующая прокси SOCKS:
- Установить
socksify
сgem install socksify
(вам нужно будет сделать этот шаг, по крайней мере, без прокси) Скопируйте существующий gem exe
cp $(command which gem) /usr/local/bin/proxy_gem
Откройте его в своем любимом редакторе и добавьте вверху (после шебанга)
require 'socksify' if ENV['SOCKS_PROXY'] require 'socksify' host, port = ENV['SOCKS_PROXY'].split(':') TCPSocket.socks_server = host || 'localhost' TCPSocket.socks_port = port.to_i || 1080 end
Настройте свой туннель
ssh -D 8123 -f -C -q -N user@proxy
Запустите команду gem с помощью proxy_gem
SOCKS_PROXY=localhost:8123 proxy_gem push mygem