如何从代理(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来解决这个问题。
- 从www.fiddler2.com安装/运行Fiddler
-
运行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代理。
我尝试了一些这些解决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_PROXY
和PARENT_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上为我工作,使用本页的指示:
如果您在* 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添加到我的系统中。
- 开始 – >右键单击计算机 – >属性
- select“高级系统设置”
- 点击高级 – >环境variables
- 创build一个名为“
HTTP_PROXY
”的新系统variables,并将Value设置为您的代理服务器 - 重新启动或注销并重新login
根据您的身份validation要求, HTTP_PROXY
值可以像下面这样简单:
http://proxy-server-name
或者像其他人指出的那样更复杂
http://username:password@proxy-server-name:port-number