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

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

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

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

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

7.08.2008 05:21:16
Я получил rubysspi на работу, но требуется много хлопот. Если вы хотите использовать его из оболочки Git Bash, вам понадобится псевдоним, добавленный в ваш файл .bashrc, например, так:alias gem='ruby -rspa `which gem`'
iconoclast 8.06.2012 18:01:23
Если у вас возникают проблемы с прокси-сервером после выполнения действий , sudo-Esudo -E doSomething
kayleeFrye_onDeck 28.06.2016 20:40:26
20 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

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

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

214
29.01.2016 17:28:20
Кажется, что 'gem' не может распознать обратную косую черту в строке прокси, будь то по аргументу http_proxy env var или --http-proxy. например, из моего окна Ubuntu --http-proxy http: // domain \\ userid @ server: port выдает ошибку: «неверный аргумент: --http-proxy ...»; К счастью, мой прокси-сервер не требовал спецификации домена, а гем работал без него.
spoulson 29.04.2009 18:57:47
ISA позволяет администратору указать домен по умолчанию для аутентификации. Вы можете попытаться оставить домен и просто использовать свое имя пользователя, как подсказывает spoulson. Если ваш ISA-администратор указал указанный домен по умолчанию, а учетная запись пользователя находится в этом домене, это должно сработать для вас (при условии, что на брандмауэре нет правил блокировки)
squillman 16.06.2009 15:07:43
@spoulson Вам нужно URI кодировать обратную косую черту, если вам нужен домен, например http: // domain% 5Cuserid @ server: port.
Ian G 1.11.2010 11:31:48
К вашему сведению, в Windows вы можете добавить строку set http_proxy в gem.bat, чтобы вам не приходилось каждый раз устанавливать прокси.
Ed Manet 18.08.2011 15:28:06
Кстати, если ваш пароль содержит специальные символы, вы должны их кодировать. Например, заменить @на и %40т. Д.
Andrey Regentov 26.09.2016 05:55:19

Обходной путь - установить 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
5
29.01.2016 18:11:56
Прочитайте в группе Google, что «apserver» теперь является «NTLM Authorization Server»; позор, что поиск первого не перенаправляет к последнему.
Darren Bishop 11.08.2010 11:35:12
Привет, Джарин, я пошел по ссылке, которую ты указал в своем комментарии, и не смог найти эту загрузку. Есть ли способ, как я могу скачать его из другого места?
Matrich 26.08.2010 06:49:41
@ Матрич согласно комментарию Даррена. apserver теперь переименован и найден здесь: ntlmaps.sourceforge.net
atomicules 7.01.2011 09:38:27

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

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

Проверьте http://cntlm.wiki.sourceforge.net/ для получения дополнительной информации

48
31.08.2008 21:59:45
Это наименее болезненный способ из всех опробованных. В Ubuntu / Debian я делаю apt-get install cntlm, редактирую config и затем экспортирую http_proxy = " localhost: 3128 ". Работает!
Konrads 11.09.2012 12:18:54
Отлично работает и на окнах. Спасибо!
Subrat Pattnaik 27.10.2014 10:23:43

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

На данный момент существует три решения в Интернете: 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.

7
10.03.2009 11:37:13

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

  1. Установить / запустить Fiddler с www.fiddler2.com
  2. Запустите камень:

    $ gem install --http-proxy http://localhost:8888 $gem_name
218
29.01.2016 18:09:35
Работал угощение, намного проще чем ntlmaps и cntlm.
atomicules 7.01.2011 13:13:03
Это сработало для меня. Обратите внимание, что Fiddler не нужен во всех ситуациях. Просто gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_nameэто все, что было нужно для меня.
Polaris878 13.04.2011 20:02:16
В Windows 7 флаг --http-proxy должен идти после имени гема, например, gem install <gemaname> --http-proxy yourproxy.address; порт . В противном случае он будет жаловаться на неверный параметр командной строки.
Alek Davis 14.02.2017 18:56:52
Работает на Windows 10
ggiunta 15.02.2017 21:59:39
Это то, что работало для меня за корпоративным прокси. Скрипач не нужен. Например, чтобы установить jekyll gem, просто запустите: sudo gem install jekyll --http-proxy=http://web-proxy.company.com:8080
Joseph 13.04.2018 05:34:06

Я перепробовал все вышеперечисленные решения, однако ни одно из них не сработало. Если вы используете 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 на окнах называется замазкой.

8
6.09.2011 05:04:51
Я нашел эту статью в своих резервных копиях и переиздал ее с тем же URL.
ByScripts 2.01.2014 15:06:52
URL все еще недоступен. Предоставляя ссылку на сторонний сайт, не связанный с Stack Exchange, суммируйте основные части здесь и отдайте должное этому сайту. Таким образом, когда ссылка разрывается, важная часть все еще здесь.
the Tin Man 29.01.2016 18:07:58

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

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

2
4.11.2011 07:46:25
Сайт больше не существует!
Suriyaa 31.03.2016 12:08:32

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

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

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

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

11
29.01.2016 17:29:51
Принятие подсказки Бенджамина Вуттона отлично сработало на моем ноутбуке с Windows 7, подключенном к корпоративной локальной сети. В окне командной строки в командной строке DOS я установил HTTP_PROXY как http: // localhost: 8888 (игнорируйте пробелы), а затем использовал свое имя пользователя и пароль в локальной сети для HTTP_PROXY_USER и HTTP_PROXY_PASS соответственно.
raycarr 9.12.2013 06:26:25

Это полностью сработало:

gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
129
29.01.2016 17:30:58
Это самый актуальный ответ, он работает и с Windows. Мне пришлось добавить свое имя пользователя и пароль, хотя: gem install --http-proxy http: // [ пользователь ]: [ пароль ] @ [ сервер ]: [ порт ]
vanderwyst 22.12.2012 23:35:27
Я не мог установить Джекил и продолжал получать SSL_connect SYSCALL returned=5 errno=0 state=unknown state (https://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/jekyll-3.0.0.gemspec.rz). Это сработало для меняgem install --http-proxy http://127.0.0.1:8580 jekyll
Majid Fouladpour 8.11.2015 07:42:47
Я добавил псевдоним в свой профиль bash: alias geminstall='gem install --http-proxy ${http_proxy}'чтобы сделать мою жизнь проще.
bgStack15 15.02.2016 16:37:52

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

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

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

40
29.01.2016 18:04:04
Получил установку, заменив часть прокси на имя пользователя: пароль @ proxy_ip: proxyport
Gary Tsui 24.09.2013 07:58:58
Я должен был добавить, proxy_ipчто используется для httpsсоединений, чтобы работать! Отлично: D (версия для драгоценностей 2.0.14)
madlymad 13.10.2015 10:42:06

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

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

4
29.01.2016 18:03:16

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

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

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

gem install ${gem_name}
3
29.01.2016 17:30:26

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

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

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

gem install -p http://[username]:[password]@proxy_ip:proxy_port compass
16
9.04.2014 08:48:40

Вместо того, чтобы редактировать командные файлы (что вам, возможно, придется сделать для других гемов Ruby, например, 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
1
29.01.2016 18:02:40

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

У меня работает на OSX 10.9.3.

1
6.06.2014 16:52:33

Если за прокси-сервером вы можете перейти к загрузкам 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

1
11.08.2014 13:27:13

Это работало для меня в коробке 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 прокси.

3
29.01.2016 17:30:06

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

http_proxy: http://proxy:3128

Тогда вы можете gem installкак обычно.

18
9.05.2016 17:04:19
Если он работает, --http-proxyно не с .gemrcфайлом, это может произойти из sudoконфигурации. Я должен был проверить /etc/sudoersфайл, чтобы добавить: Defaults env_keep = "http_proxy ftp_proxy"before:Defaults env_reset
DependencyHell 2.01.2020 10:28:57

Быстрый ответ: добавьте конфигурацию прокси с параметром для установки / обновления

gem install --http-proxy http://host:port/ package_name

gem update --http-proxy http://host:port/ package_name
5
18.06.2019 07:27:10
При добавлении ответа на старый вопрос с существующими ответами полезно объяснить, что добавляет ваш ответ, что является новым.
Jason Aller 17.06.2019 22:29:29
указывать команду напрямую, без подробностей, читая все подробности (быстрые ответы)
Shantonu 18.06.2019 04:10:34
и, установка переменной среды не является
Shantonu 18.06.2019 04:12:08
Пожалуйста, добавьте все объяснения к самому ответу, а не к разделу комментариев
Nico Haase 18.06.2019 07:07:42

для любого туннеля с SSH; Вы можете создать версию gemкоманды, которая использует прокси SOCKS:

  1. Установите socksifyс помощью gem install socksify(по крайней мере, вам нужно будет выполнить этот шаг без прокси)
  2. Скопируйте ваш существующий самоцвет

    cp $(command which gem) /usr/local/bin/proxy_gem
  3. Откройте его в своем любимом редакторе и добавьте его вверху (после Шебанга)

    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
  4. Настройте свой туннель

    ssh -D 8123 -f -C -q -N user@proxy
  5. Запустите команду gem с proxy_gem

    SOCKS_PROXY=localhost:8123 proxy_gem push mygem
0
3.04.2020 14:10:52