如何从代理(ISA-NTLM)后面更新Ruby Gems

我在后面的防火墙是以NTLM-only模式运行Microsoft ISA服务器。 哈希任何人有成功得到他们的Rubygem安装/更新通过Ruby SSPIgem或其他方法?

…或者我只是懒惰?

注意:rubysspi-1.2.4不起作用。

这也适用于IronRuby项目的一部分“igem”

我不能从命令行切换到我的工作,但是我可以通过设置我的HTTP_PROXY环境variables来完成。 (请注意,这种情况似乎很重要)。 我有一个batch file,它有这样一行:

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

我很明显地在这条线之前设置了四个引用的variables。 举例来说,如果我的用户名是“wolfbyte”,我的密码是“secret”,我的代理被称为“pigsy”,并在端口8080上运行:

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

您可能需要小心如何pipe理,因为它将密码以纯文本的forms存储在机器的会话中,但我认为这不应该成为太大的问题。

对于Windows操作系统,我使用了Fiddler来解决这个问题。

  1. 从www.fiddler2.com安装/运行Fiddler
  2. 运行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/ )。 configuration与ntlmaps非常相似。

  • gem install –http-proxy http:// localhost:3128 _name_of_gem_

伟大的作品,也允许我连接我的Ubuntu盒到ISA代理。

查看http://cntlm.wiki.sourceforge.net/了解更多信息;

我尝试了一些这些解决scheme,并没有一个工作。 我终于find了适合我的解决scheme:

 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 

如果您在通过代理进行身份validation时遇到问题,请务必按照以下格式设置环境variables:

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

user:password@语法似乎并没有工作,也有一些严重命名的环境variables浮动在堆栈溢出和各种论坛post。

另外请注意,您的gem可能需要一段时间才能开始下载。 起初我以为这是行不通的,但有一点耐心,他们开始按预期下载。

创build一个.gemrc文件(在/ etc / gemrc或〜/ .gemrc中,或者在/ opt / chef / embedded / etc / gemrc中使用chef gem),包含:

 http_proxy: http://proxy:3128 

然后你可以照常gem install

我尝试了所有上述解决scheme,但是他们都没有工作。 如果你在Linux / MacOS上,我强烈build议通过SSH隧道使用tsocks。 为了使这个设置正常工作,你需要一台可以通过sshlogin的机器,另外还有一个名为tsocks的程序。

这里的想法是通过SSH(socks5代理)创build一个dynamic隧道。 然后我们configurationtsocks来使用这个隧道,并启动我们的应用程序,在这种情况下:

 tsocks gem install ... 

或者考虑导轨3.0:

 tsocks bundle install 

更详细的指导可以在下面find:

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

尽pipe为Ubuntu编写的程序应该适用于所有基于Unix的机器。 Windows的tsocks的替代品是FreeCap( http://www.freecap.ru/eng/ )。 在Windows上一个可行的SSH客户端被称为腻子。

关于这个话题的post比比皆是,为了帮助他人节省数小时的尝试不同的解决scheme,这是我的修补时间的最后结果。

目前互联网上的三种解决scheme是:rubysspi apserver cntlm

rubysspi只适用于Windows机器AFAIK,因为它依赖于Win32Api库。 所以如果你在一个试图通过代理运行的Windows机器上,这是你的解决scheme。 如果您在Linux发行版上,那么您运气不好。

apserver似乎是一个死的项目。 在我看到的post中列出的链接导致sourceforge上的404页面。 我在sourceforge上search“apserver”什么也没有返回。

我见过的cntlm的sourceforge链接redirect到http://cntlm.awk.cz/ ,但是超时了。 在sourceforge上search就可以看到这个链接,它可以工作: http : //sourceforge.net/projects/cntlm/

下载并configurationcntlm后,我已经设法通过代理安装gem,所以这似乎是Linux发行版的最佳解决scheme。

解决方法是在本地机器上安装http://apserver.sourceforge.net ,configuration它并通过这个代理运行gem。

  • 安装:只需下载apserver 097(而不是实验098!)并解压。
  • configuration:编辑server.cfg文件,并将您的MS代理的值放在PARENT_PROXYPARENT_PROXY_PORT 。 inputDOMAIN和USER的值。 将PASSWORD留空(冒号后面没有任何内容) – 启动时会提示您。
  • 运行apserver: cd aps097; python main.py cd aps097; python main.py
  • 运行Gems: gem install—http-proxy http://localhost:5865/ library

我在一个代理的后面工作,直接从http://rubygems.org下载安装SASS。;

然后我运行sudo gem install [path/to/downloaded/gem/file] 。 我不能说这会适用于所有的gem,但它可能会帮助一些人。

这在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 

我有一个batch file,用于在需要时设置环境值。

在我的例子中,诀窍是HTTPS_PROXY集合。 没有他们,我总是得到一个407代理身份validation错误。

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-socksproxy https://github.com/gussan/rubygems-socksproxy

它在OSX 10.9.3上适用于我。

如果在代理之后,您可以导航到Ruby下载 ,单击下载,它将下载指定的更新(或Gem)到所需的位置。

接下来,通过Ruby命令行,使用以下命令导航到下载的位置: pushd [directory]

例如: pushd D:\Setups

然后运行以下命令: gem install [update name] --local

例如: gem install rubygems-update --local

使用Ruby更新版本2.4.1testingWindows 7。

要检查使用以下命令: ruby -v

而不是编辑batch file(您可能需要为其他Rubygem,例如Bundler编辑),最好这样做一次,然后正确地执行。

在Windows上,在我的公司代理之后,我所要做的就是将HTTP_PROXY环境variables添加到我的系统中。

  1. 开始 – >右键单击计算机 – >属性
  2. select“高级系统设置”
  3. 点击高级 – >环境variables
  4. 创build一个名为“ HTTP_PROXY ”的新系统variables,并将Value设置为您的代理服务器
  5. 重新启动或注销并重新login

根据您的身份validation要求, HTTP_PROXY值可以像下面这样简单:

 http://proxy-server-name 

或者像其他人指出的那样更复杂

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