1

由于某种原因,我当前的环境(包括公司代理)不允许我使用 CURL 或 WGET 安装 RVM。在没有这些实用程序的情况下,是否有另一种从源代码安装 RVM 的方法?我所做的每个网络搜索都会返回“卷曲”方式。

有任何想法吗?

4

2 回答 2

2

修改 rvm 脚本不是一个好主意

我在想睡觉的时候想着你的问题/我的答案……如果不给你写另一个答案,我就无法闭上眼睛。破解 rvm 安装脚本真的不是你应该做的。Rvm 在任何地方都使用 curl(安装、下载 rubies、更新……)。而且你必须下载更多的东西——例如宝石。替换每个脚本中的每个 curl 调用是不可维护的。

建议的解决方案

rvm 的好处是,它将所有数据存储在~/.rvm目录中。考虑到这一点,您可以在远程计算机(或 VM)上安装 rvm,它与您的开发计算机尽可能相似(相同的操作系统、相同的操作系统版本、相同的库)。安装所有你需要的红宝石、宝石和宝石。然后将压缩~/.rvm目录移动到您的开发计算机并将其解压缩为~/.rvm.

别忘了做

echo "source $HOME/.rvm/scripts/rvm" >> ~/.bash_profile

在加载 bash 时获取 rvm。

如果您必须更新或安装 gems 或 ruby​​ 版本,请在远程计算机上执行您的业务,然后~/.rvm再次复制。

我对此设置的体验

我现在使用这个设置(尽管它是通过我们的 CI 服务器自动化的)已有 2 年时间,用于生产环境,它位于类似的邪恶公司网络中。更换宝石/红宝石比应有的困难,但它可以在没有互联网连接的情况下工作。

编辑:添加了一段关于我对此设置的体验

于 2013-04-22T23:33:51.680 回答
0

您可以在此处找到 rvm 安装脚本。你可以

  1. 下载它
  2. 修改使用 curl 的部分
  3. 执行脚本,现在引用手动下载的文件

1. 下载

将此文件下载到/tmp/rvm-installer. 现在将rvm.tar.gz文件下载到/tmp/rvm-1.19.6.tar.gz

2.修改文件

在第 148 行开始 function fetch_version。将其替换为以下函数:

fetch_version()
{
    echo '1.19.6' # the current version, as of writing this
}

在第 161 行(在 内install_releaseget_and_unpack调用该函数。将函数调用替换为:

get_and_unpack \
  /tmp/rvm-${_version}.tar.gz \
  rvm-${_version}.tar.gz

在第 212 行(内get_and_unpack)替换

__rvm_curl ${_url} -o ${rvm_archives_path}/${_file} ||

和:

mv ${_url} ${rvm_archives_path}/${_file} ||

3.最后安装rvm

cd /tmp
cat rvm-installer | bash -s -- --version latest --autolibs=enabled

免责声明:这仍然是一个黑客。它安装了 rvm,但我不知道更新(这里 rvm 再次使用 curl)。祝你好运 :)

于 2013-04-22T22:20:05.790 回答