7

我怀疑公司防火墙正在阻止安装 gem。我已经定义了 HTTP_PROXY,并且可以通过以下命令查看远程 gem:

jruby -S gem list -r

但是当我去安装一个 gem 时,我得到一个 404:

jruby -S gem install rails

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

4

9 回答 9

9

对于红宝石宝石,将其放在我的 gem.bat 中,这对我有用

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

对于 jruby 宝石这有效

@"%~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 并复制所有的 gem,并在你安装之后最后修改日期。在目标电脑上,您将它们复制到同一个文件夹中,或者如果您随后在 bin 文件夹中清理并在那里开始安装

c:\ruby193\bin\gem.bat install --local gemname-x.x.x.gem

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

于 2012-01-26T16:38:16.370 回答
4
  1. 在 Internet Explorer 代理设置中查找您的代理服务器的名称。
  2. 在 gem 命令的 -p 选项中使用代理服务器的名称。

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

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

于 2009-12-23T16:05:35.977 回答
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(隧道其他 PPP),然后更新您的路由表以通过 VPN 路由流量。

  6. 您还可以使用开瓶器通过 SSH 连接(因此能够通过 SSH 安装 VPN,如 5)与外部的机器连接,在公司防火墙的另一侧,就像您自己在家一样。(这使用代理的HTTPS“CONNECT”模式来访问外部的SSH)。只需确保管理员(或至少一名负责人)处于循环状态,不要惊慌。

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

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

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

于 2009-12-14T20:19:04.763 回答
2

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

尝试设置http_proxy而不是HTTP_PROXY.

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

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

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

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

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

于 2009-12-14T23:35:50.897 回答
1

你可以使用这个工具: http: //ntlmaps.sourceforge.net/

gems 不支持代理身份验证,因此通过辅助代理(例如,您的机器)为您进行身份验证并让 gems 认为没有发生身份验证应该会让您的生活更轻松。

于 2009-12-18T15:04:46.393 回答
0

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

因此,即使您尝试将用户名和密码写入代理 URL,当您尝试下载和安装软件包时它也不起作用,尽管当您尝试在 FireFox 中显示页面时它工作得很好。我在一些公司网络和我的发行版的包管理器上遇到了类似的问题。

在这些情况下,您可能会使用类似ntlmaps的东西。您将其用作本地代理,然后将请求级联到公司代理。好消息是 ntlmaps 将能够使用公司代理验证奇怪的 NTLM 密码,并且您的所有应用程序都将能够连接到 ntlmaps,即使是那些不支持 NTLM 的应用程序。

于 2009-12-15T18:59:45.610 回答
0

自从 gemcutter.org 的人为亚马逊的 Cloudfront 制作了该模式并且能够通过我雇主的防火墙再次下载 gems 之后,我已经重新测试了这一点。

于 2010-01-10T22:27:47.977 回答
0

我描述了一个程序来绕过公司防火墙的任何限制:

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

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

于 2011-09-06T05:12:01.857 回答
0

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

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

**

于 2014-05-29T04:06:25.207 回答