由于某种原因,我当前的环境(包括公司代理)不允许我使用 CURL 或 WGET 安装 RVM。在没有这些实用程序的情况下,是否有另一种从源代码安装 RVM 的方法?我所做的每个网络搜索都会返回“卷曲”方式。
有任何想法吗?
修改 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 年时间,用于生产环境,它位于类似的邪恶公司网络中。更换宝石/红宝石比应有的困难,但它可以在没有互联网连接的情况下工作。
编辑:添加了一段关于我对此设置的体验
您可以在此处找到 rvm 安装脚本。你可以
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_release
)get_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)。祝你好运 :)