0

我位于不允许我 rsync 出去的公司防火墙后面,并且需要 HTTP/HTTPS 代理。我在这个环境中的 macports 步骤中遇到了 rvm 中断的问题。

总结一下:

  • 我正在尝试做rvm install ruby-1.9.3-p286

  • rvm 想使用 macports。

  • macports 想使用 rsync 进行更新,但我无法 rsync 输出。

  • 我设置了一个本地 macports 源代码库,但它似乎没有帮助 - macports 仍然想使用 rsync。

  • 关于类似问题的建议建议更改port selfupdateport syncrvm 的脚本。但这并没有帮助 - macports 然后死去试图做一个svn update

  • 但是我可以svn update手动完成,所以我不明白问题出在哪里。


以下是详细信息:

我按照本指南在防火墙后面使用 macports,方法是在本地签出 repo,并将以下内容设置为/opt/local/etc/macports/sources.conf.

    #rsync://rsync.macports.org/release/tarballs/ports.tar [default]
    file:///opt/local/var/macports/sources/svn.macports.org/trunk/dports/ [default]

我与指南的唯一不同之处是我为 10.8 而不是 10.5 安装了 macports。

但是,出于某种原因,rvm 的 macports 似乎仍然使用 rsync:

$ rvm install ruby-1.9.3-p286
Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10.8/x86_64/ruby-1.9.3-p286.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Installing requirements for osx, might require sudo password.
Password:
DEBUG: Copying /Users/tim/Library/Preferences/com.apple.dt.Xcode.plist to 
    /opt/local/var/macports/home/Library/Preferences
DEBUG: MacPorts sources location: 
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs --->  Updating MacPorts base sources using rsync
rsync: failed to connect to rsync.macports.org: Connection refused (61)
rsync error: error in socket IO (code 10) at /SourceCache/rsync/rsync-42/rsync/clientserver.c(105) [receiver=2.6.9]
Command failed: /usr/bin/rsync -rtzv --delete-after     rsync://rsync.macports.org/release/tarballs/base.tar     /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
Exit code: 10
DEBUG: Error synchronizing MacPorts sources: command execution failed
while executing
"macports::selfupdate [array get global_options] base_updated"
Error: /opt/local/bin/port: port selfupdate failed: Error synchronizing MacPorts sources: command execution failed

这与此问题非常相似,其中答案建议进行以下更改:

$ diff -u .rvm/scripts/functions/requirements/osx_port.org .rvm/scripts/functions/requirements/osx_port
--- .rvm/scripts/functions/requirements/osx_port.org 2013-05-28 16:58:37.000000000 +0900
+++ .rvm/scripts/functions/requirements/osx_port 2013-05-28 16:58:50.000000000 +0900
@@ -82,7 +82,7 @@

 requirements_osx_port_update_system()
 {
- __rvm_try_sudo 端口 -dv 自我更新 || 返回$?
+ __rvm_try_sudo 端口 -dv 同步 || 返回$?
 }

 requirements_osx_port_define()

不幸的是,这会导致以下结果:

$ rvm 安装 ruby​​-1.9.3-p286
搜索二进制红宝石,这可能需要一些时间。
没有可用的二进制红宝石:osx/10.8/x86_64/ruby-1.9.3-p286。
继续编译。请阅读“rvm help mount”以获取有关二进制红宝石的更多信息。
osx 的安装要求,可能需要 sudo 密码。
密码:
调试:将 /Users/tim/Library/Preferences/com.apple.dt.Xcode.plist 复制到 /opt/local/var/macports/home/Library/Preferences
---> 更新端口树
从文件同步本地端口树:///opt/local/var/macports/sources/svn.macports.org/trunk/dports/
调试:/usr/bin/svn update --non-interactive /opt/local/var/macports/sources/svn.macports.org/trunk/dports
调试:更改 euid/egid - 当前 euid:0 - 当前 egid:0
svn:“http://svn.macports.org/repository/macports/trunk/dports”的选项:无法连接到服务器(http://svn.macports.org)
命令失败:/usr/bin/svn update --non-interactive /opt/local/var/macports/sources/svn.macports.org/trunk/dports
退出代码:1
DEBUG:命令执行失败
    在执行时
“系统 $svn_commandline”
错误:本地端口树的同步在执行 svn 更新时失败
调试:1 个源的同步失败
    在执行时
“mportsync [数组获取 global_options]”
端口同步失败:1 个源的同步失败

直接用 macports 试试:

$ 端口 -d 同步
---> 更新端口树
从文件同步本地端口树:///opt/local/var/macports/sources/svn.macports.org/trunk/dports/
调试:/usr/bin/svn update --non-interactive /opt/local/var/macports/sources/svn.macports.org/trunk/dports
svn:“http://svn.macports.org/repository/macports/trunk/dports”的选项:无法连接到服务器(http://svn.macports.org)
命令失败:/usr/bin/svn update --non-interactive /opt/local/var/macports/sources/svn.macports.org/trunk/dports
退出代码:1
DEBUG:命令执行失败
    在执行时
“系统 $svn_commandline”
错误:本地端口树的同步在执行 svn 更新时失败
调试:1 个源的同步失败
    在执行时
“mportsync [数组获取 global_options]”
端口同步失败:1 个源的同步失败

这很奇怪,因为我可以很好地运行该 svn 命令:

 $ /usr/bin/svn update --non-interactive /opt/local/var/macports/sources/svn.macports.org/trunk/dports
 At revision 107532.

这不是用户权限/配置文件问题,因为 root 也可以很好地运行该 svn 命令:

 $ sudo /usr/bin/svn update --non-interactive /opt/local/var/macports/sources/svn.macports.org/trunk/dports
 At revision 107532.

我假设链中的某些东西没有正确看到代理。然而:

  • 我的代理在http_proxyhttps_proxy环境变量中正确设置
  • 它也设置在(~/.subversion/servers作为变量http-proxy-host和部分)http-proxy-port[global]
  • 它也被设置在/opt/local/etc/macports/macports.conf(作为变量proxy_httpproxy_https

其他信息:

  • 红宝石 1.8.7
  • 转速 1.21.4
  • OSX 10.8.3
  • MacPorts 2.1.3

让我知道是否有任何其他有用的信息。

我的问题是我怎样才能port sync在这种环境中工作?(我希望也能解决rvm

4

1 回答 1

3

作为让您尝试的解决方法:

rvm autolbs read-fail

它不会自动安装包 - 如果缺少任何包,它会失败,并会让你知道这个包的名称,只需使用 macports 手动安装它们就可以了。


其他解决方案将切换到:

rvm autolibs homebrew

使用自制软件而不是 macports,或者:

rvm autolibs rvm_pkg

检测已安装的内容pkg-config并尝试使用旧的rvm pkg install ....


有关自动库的更多详细信息: http: //rvm.io/rvm/autolibs

于 2013-07-02T16:52:49.747 回答