移动Ruby安装会导致它无法运行。如何避开这个问题?
我想从源代码处编译Ruby,安装它,然后将安装转移到其他地方 例如:移动Ruby安装会导致它无法运行。如何避开这个问题?,ruby,Ruby,我想从源代码处编译Ruby,安装它,然后将安装转移到其他地方 例如: ruby-1.9.3-p125$ ./configure --prefix=/tmp/ruby-1.9.3-p125 问题是,--前缀路径似乎是在Ruby二进制文件中硬编码的。当我移动/tmp/ruby-1.9.3-p125说/opt/ruby-1.9.3-p125时,硬编码路径出现在已安装的二进制文件和脚本中 移动后,我得到一个错误: <internal:gem_prelude>:1:in `require': c
ruby-1.9.3-p125$ ./configure --prefix=/tmp/ruby-1.9.3-p125
问题是,--前缀
路径似乎是在Ruby二进制文件中硬编码的。当我移动/tmp/ruby-1.9.3-p125
说/opt/ruby-1.9.3-p125
时,硬编码路径出现在已安装的二进制文件和脚本中
移动后,我得到一个错误:
<internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
from <internal:gem_prelude>:1:in `<compiled>'
<internal:gem_prelude>:1:in'require':无法加载这样的文件——rubygems.rb(LoadError)
从<internal:gem\u prelude>:1:in`<compiled>'
如何解决这个问题?发现解决方案是在运行configure时使用--enable load relative 因此,不是:
./configure
运行:
你为什么不直接用你要安装的前缀编译它呢?我有一个依赖ruby-1.9的应用程序。我想用我的应用程序对它进行预编译打包。当然,我将根据许可证随应用程序分发Ruby源代码,但我无法控制用户将在何处安装应用程序。因此,我想以某种方式对其进行配置,使其可以重新定位。关于这一点,请查看为什么这不是一个好主意。感谢链接,Andrew。我的应用程序只为Linux x86_64系统设计,所以我不太担心到其他平台的可移植性。我确实在下面的答案中找到了一个解决方案,也许我的答案需要先被接受?无论如何,解决方案是通过——相对于配置启用加载。另外,请参阅这篇文章以获得更深入的讨论:您能解释一下配置的含义吗?
./configure --enable-load-relative