Как мне обновить Ruby Gems из-за прокси (ISA-NTLM)
Вопрос
Брандмауэр, за которым я стою, запускает Microsoft ISA server в режиме только NTLM.У кого-нибудь есть успех в установке / обновлении своих Ruby gems с помощью Ruby SSPI gem или другого метода?
...или я просто ленюсь?
Примечание:rubysspi-1.2.4 не работает.
Это также работает для "igem", части проекта IronRuby
Решение
Я не смог заставить свой работать с помощью переключателя командной строки, но я смог сделать это, просто установив свой 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 -http-прокси http://localhost:3128 _наимено_ф_гема_
Отлично работает, а также позволяет мне подключить мой Ubuntu box к ISA proxy.
Проверьте 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, либо, например, с помощью chef gem в /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@
синтаксис, похоже, не работает, и есть также некоторые переменные среды с неправильными именами, плавающие в Stack Overflow и различных сообщениях на форуме.
Также имейте в виду, что для начала загрузки ваших драгоценных камней может потребоваться некоторое время.Сначала я подумал, что это не работает, но, проявив немного терпения, они начали загрузку, как и ожидалось.
Я перепробовал все вышеперечисленные решения, однако ни одно из них не сработало.Если вы используете 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 называется putty.
Сообщений на эту тему предостаточно, и чтобы помочь другим сэкономить часы на пробовании различных решений, вот конечный результат моих многочасовых усилий.
На данный момент в Интернете существует три решения:rubysspi apserver cntlm
rubysspi работает только с компьютера с Windows, AFAIK, поскольку он полагается на библиотеку Win32Api.Так что, если вы используете Windows Box, пытаясь запустить через прокси-сервер, это решение для вас.Если вы используете дистрибутив 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!) и распакуйте.
- Настройка:Отредактируйте файл server.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.
Если вы используете систему * 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, используя инструкции с этой страницы:
Если вы хотите использовать прокси SOCKS5, вы можете попробовать rubygems-socksproxy https://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
переменная окружения в моей системе.
- Пуск -> щелкните правой кнопкой мыши Компьютер -> Свойства
- Выберите "Дополнительные системные настройки".
- Нажмите Дополнительно -> Переменные среды
- Создайте новую системную переменную с именем "
HTTP_PROXY
", и установите Значение для вашего прокси-сервера - Перезагрузитесь или выйдите из системы и снова войдите в систему
В зависимости от ваших требований к аутентификации, HTTP_PROXY
значение может быть таким же простым, как:
http://proxy-server-name
Или более сложный, как указывали другие
http://username:password@proxy-server-name:port-number