如何通过rbenv / ruby​​-build在本地安装ruby?

时间:2015-10-13 08:28:15

标签: ruby rbenv offline-mode

我需要安装ruby ,无法访问互联网。正如ruby-build文档建议我可以通过指定环境变量RUBY_BUILD_MIRROR_URL来更改镜像URL。我做了这个,虽然它看了我的本地仓库ruby,它仍然试图连接到在线仓库安装yaml

env RUBY_BUILD_MIRROR_URL=http://10.10.161.39/platforms/common/ruby-2.0.0-p247.tar.gz#3e71042872c77726409460e8647a2f304083a15ae0defe90d8000a69917e20d3 /opt/rbenv/bin/rbenv install 2.0.0-p247
Downloading yaml-0.1.6.tar.gz...
-> http://10.152.161.39/platforms/proteus/common/ruby-2.0.0-p247.tar.gz#3e71042872c77726409460e8647a2f304083a15ae0defe90d8000a69917e20d3/7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749
-> http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz
error: failed to download yaml-0.1.6.tar.gz

BUILD FAILED (RedHatEnterpriseServer 5.10 using ruby-build 20150928)

我尝试将yaml-0.1.6.tar.gz文件放在我的本地仓库中,但这没有任何区别,因为URL中提供的sha2校验和用于ruby-2.0.0-p247.tar.gz文件,因此会失败。

如何使用rbenv离线安装ruby?

更新1

我发现您可以修改查找配置文件以指向本地镜像。即:/opt/rbenv/plugins/ruby-build/share/ruby-build/2.0.0-p247

install_package "yaml-0.1.6" "http://10.10.161.39/platforms/common/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749"  --if needs_yaml
install_package "openssl-1.0.1p" "ttp://10.10.161.39/platforms/common/openssl-1.0.1p.tar.gz#bd5ee6803165c0fb60bbecbacacf244f1f90d2aa0d71353af610c29121e9b2f1" mac_openssl --if has_broken_mac_openssl
install_package "ruby-2.0.0-p247"  "http://10.10.161.39/platforms/common/ruby-2.0.0-p247.tar.gz#3e71042872c77726409460e8647a2f304083a15ae0defe90d8000a69917e20d3"

有更好的方法还是这是最好的前进方式?

1 个答案:

答案 0 :(得分:1)

所以我的工作方式如下:

更新install_package "yaml-0.1.6" "http://10.10.161.39/platforms/common/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml中下载文件的内容以指向您的本地仓库。

您还会注意到每个文件在'#'之后的长哈希值。 URL中的符号。例如:

sha256sum

此哈希值是rbenv文件sha256sum <filename>将用于验证它是否是预期文件。

因此,您需要运行install_package "yaml-0.1.6" "http://10.10.161.39/platforms/common/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml install_package "openssl-1.0.1p" "ttp://10.10.161.39/platforms/common/openssl-1.0.1p.tar.gz#bd5ee6803165c0fb60bbecbacacf244f1f90d2aa0d71353af610c29121e9b2f1" mac_openssl --if has_broken_mac_openssl install_package "ruby-2.0.0-p247" "http://10.10.161.39/platforms/common/ruby-2.0.0-p247.tar.gz#3e71042872c77726409460e8647a2f304083a15ae0defe90d8000a69917e20d3" 并附加到URL路径中的每个文件来生成值。

完整示例如下:

http://10.10.161.39/platforms/common

在上面的示例中,我们在window.video['play'] = OK window.video.play = OK obj[p[i]] = not OK <= something like this I'd like to use处有一个专用的存储库服务器。如果您的软件包在本地可用,则需要指向本地路径并验证其是否有效。