移动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,安装它,然后将安装转移到其他地方

例如:

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