从公司防火墙后面安装宝石

时间:2009-12-14 19:40:23

标签: ruby rubygems jruby firewall

我怀疑企业防火墙阻止了宝石的安装。我定义了HTTP_PROXY,我可以通过以下命令查看远程gems:

jruby -S gem list -r

但是当我去安装宝石时,我得到了一个404:

jruby -S gem install rails

除了维护内部gem存储库之外,是否有解决此问题的良好解决方法?

9 个答案:

答案 0 :(得分:9)

对于ruby gems,把它放在我的gem.bat中这对我有用

@"%~dp0ruby.exe" "%~dpn0" %* --http-proxy http://domainname.ccc.com:8080

对于jruby gems来说,这是有效的

@"%~dp0jruby.exe" "%~dpn0" %* -p http://domainname.ccc.com:8080

同样设置环境变量就像

一样
set http-proxy=http://domainname.ccc.com:8080

或者您的代理服务器是否需要身份验证

set http-proxy=http://user:password@host:port)

编辑:对于拥有非常严格的防火墙或无法访问互联网的人(例如在服务器上),您可以执行以下操作:在可以免费访问互联网的PC上安装gem,然后检查文件夹C:\ Ruby193 \ lib \ ruby​​ \ gems \ 1.9.1 \ cache并复制所有宝石,其中包含您安装完成后最后修改的日期。在目标PC上,您将它们复制到同一文件夹中,或者如果您之后在bin文件夹中清理并使用

开始安装
c:\ruby193\bin\gem.bat install --local gemname-x.x.x.gem

gemname-x.x.x.gem是您要安装的基础gem的gem文件名。应该安装具有所有依赖项的gem。这适用于Windows,但其他操作系统可以使用相同的技术,只需适应一些事情。 成功

答案 1 :(得分:4)

  1. 查看Internet Explorer代理设置以查找代理服务器的名称。
  2. 在gem命令的-p选项中使用代理服务器的名称。

    gem update rails -p http://mylocalproxy.mycompany.com

  3. 如果这不起作用,您可以随时在互联网上设置自己的代理服务器。

答案 2 :(得分:2)

我不是Ruby的专家。尽管如此,我可能会提供以下“通用”建议(对于安装程序的许多情况都很有用):

  1. 检查正在运行的安装协议。某些安装程序从镜像而不是主站点下载包,而某些镜像可能使用FTP或其他东西而不是HTTP。因此,您可能需要相应地更新设置,并与管理员确认公司代理能够从FTP站点检索数据。

  2. 检查安装程序正在运行的用户(某些安装程序必须将权限升级为“root”。因此,继承了另一个已定义的HTTP_PROXY的环境)。

  3. 检查安装程序用于下载软件包的内容(许多分发软件包管理器依赖于curl / libcurl,它将代理参数存储在rc文件中)。关于homedir应包含rc文件的用户,与2相同的警告。

  4. 透明代理:可以将最初针对Web的即时HTTP / FTP请求传输到代理。公司代理(如果它可以使用这样的安装)或一些迷你本地代理,然后级联到公司代理。

  5. 在您的计算机和公司内允许查看网络的特殊计算机之间通过SSH(请参阅SSH手册页)设置快速VPN(请参阅SSH其他PPP),然后更新路由表以路由流量通过VPN。

  6. 您还可以使用corkscrew通过SSH连接(因此可以通过SSH安装VPN,如5),使用外部机器,在公司防火墙的另一端,就像您自己的在家。 (这使用代理的HTTPS“CONNECT”模式来访问外部的SSH)。只要确保管理员是 - 或者至少有一个负责人 - 保持循环并且不要惊慌。

  7. 绝望措施:通过仅允许HTTP请求的代理在两台运行每个http tunnel的计算机之间创建一个隧道。然后使用隧道建立SSH VPN。

  8. 这些解决方案并非特定于Ruby,但可以帮助您完成过度限制防火墙背后的任何绝望解决方案。

    1到4应该适用于大多数情况。如果面对一些奇怪的和/或偏执的防火墙,你将不得不求助于5到7。 7是相当极端但总是有效,尽管有时会带来灾难性的表现。

答案 3 :(得分:2)

简单的事情:当您尝试列表和安装时,您是否在同一个shell会话中?也许你忘了第二次设置env?

尝试设置http_proxy而不是HTTP_PROXY

确保代理设置是有效的网址(见下文)

您有多个代理选项吗?打开IE并在地址栏中输入wpad。您可能会看到其他一些可能性。

您的代理是否经过身份验证?如果是这样,您是否在URL中拥有凭据。我是这样的(在窗户上):

set http_proxy=http://myuserid:mypassword@internetproxy:3128

您的密码是否有标点符号?仅使用数字和字母进行尝试,因为:@(以及可能还有其他)在URL字符串本身中很重要。

答案 4 :(得分:1)

您可以使用此工具: http://ntlmaps.sourceforge.net/

宝石不支持代理身份验证,因此通过辅助代理(例如,您的机器)为您进行身份验证,让宝石认为没有身份验证可以让您的生活更轻松。

答案 5 :(得分:0)

另一个愚蠢的问题,但什么是企业代理软件?一些基于Windows的软件倾向于使用所有客户端都不支持的奇怪的身份验证标准(NTLM哈希等)(例如,wget不支持它),但许多浏览器都支持这些标准。

因此,即使您尝试将用户名和密码写入代理URL,当您尝试下载并安装软件包时,它也无法正常工作,但是当您尝试在FireFox中显示页面时,它的效果非常好。我和一些公司网络以及我的发行版的包管理器有类似的问题。

在这种情况下,您可能会使用ntlmaps之类的内容。您将它用作本地代理,然后将请求级联到公司代理。好处是ntlmaps将能够使用公司代理验证奇怪的NTLM密码,并且所有应用程序都能够连接到ntlmaps,甚至是那些不支持NTLM的应用程序。

答案 6 :(得分:0)

我已经重新测试了这一点,因为gemcutter.org人员将模式转换为亚马逊的Cloudfront,并且能够通过我雇主的防火墙再次下载宝石。

答案 7 :(得分:0)

我描述了一个程序来解决企业防火墙的任何限制:

How do I update Ruby Gems from behind a Proxy (ISA-NTLM)

它基本上使用ssh隧道和程序tsocks。

答案 8 :(得分:0)

1.GO到您安装ruby的驱动器。 2.您将根据您安装的版本找到名为“ruby200-x64”的文件夹或与其类似的文件夹。 3.在文件夹打开... bin / 4.找到gem.bat,用任何文本编辑器打开它,你会发现一堆设置。 5.在@“%~dp0ruby.exe”“%~dpn0”%*之后放置代理服务器地址和端口。  **

  

@“%~dp0ruby.exe”“%~dpn0”%* --http-proxy   http://domainname.ccc.com:8080

**