如何通过 rbenv/ruby-build 在本地安装 ruby?
How to install ruby locally via rbenv/ruby-build?
我需要安装 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"
是否有更好的方法或者这是最好的方法?
所以我是这样工作的:
更新 /opt/rbenv/plugins/ruby-build/share/ruby-build/<ruby-version>
中下载文件的内容以指向您的本地存储库。
您还会注意到每个文件在 URL 中的“#”符号后有一个很长的散列值。例如:
install_package "yaml-0.1.6" "http://10.10.161.39/platforms/common/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
此哈希值是 sha256sum
文件,rbenv
将使用该文件来验证它是否是预期文件。
因此您需要通过 运行 sha256sum <filename>
生成值并附加到 URL 路径中的每个文件。
完整示例如下:
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"
在上面的示例中,我们在 http://10.10.161.39/platforms/common
有一个专用的存储库服务器。如果您的包在本地可用,您将需要指向本地路径并验证它是否有效。
我需要安装 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"
是否有更好的方法或者这是最好的方法?
所以我是这样工作的:
更新 /opt/rbenv/plugins/ruby-build/share/ruby-build/<ruby-version>
中下载文件的内容以指向您的本地存储库。
您还会注意到每个文件在 URL 中的“#”符号后有一个很长的散列值。例如:
install_package "yaml-0.1.6" "http://10.10.161.39/platforms/common/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
此哈希值是 sha256sum
文件,rbenv
将使用该文件来验证它是否是预期文件。
因此您需要通过 运行 sha256sum <filename>
生成值并附加到 URL 路径中的每个文件。
完整示例如下:
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"
在上面的示例中,我们在 http://10.10.161.39/platforms/common
有一个专用的存储库服务器。如果您的包在本地可用,您将需要指向本地路径并验证它是否有效。