为什么可能--启用“相对负载”;不适合ruby安装?
我需要在几个站点安装ruby,但是不同站点之间安装的确切位置可能略有不同 我使用为什么可能--启用“相对负载”;不适合ruby安装?,ruby,aix,Ruby,Aix,我需要在几个站点安装ruby,但是不同站点之间安装的确切位置可能略有不同 我使用-enable load relative进行了配置和编译。这似乎适用于我的linux安装,但不适用于aix。当我为linux配置时,我使用了 --enable-load-relative --prefix=blah --exec-prefix=blah/linux_code_rel 我能够通过执行以下操作来测试相对负载: 首先使用名为linux\u code\u rel的安装目录 blah/linux_code_
-enable load relative
进行了配置和编译。这似乎适用于我的linux安装,但不适用于aix。当我为linux配置时,我使用了
--enable-load-relative --prefix=blah --exec-prefix=blah/linux_code_rel
我能够通过执行以下操作来测试相对负载:
首先使用名为linux\u code\u rel的安装目录
blah/linux_code_rel/bin/ruby -e " puts 'hello' "
然后在将目录重命名为linux_代码后,运行
blah/linux_code/bin/ruby -e " puts 'hello' "
两次我都回来了你好
当我为aix做同样的事情时,它似乎不起作用。
我使用
--enable-load-relative --prefix=blah --exec-prefix=blah/aix_code_rel
安装后,如果我运行
blah/aix_code_rel/bin/ruby -e "puts 'hello' "
我回来了
hello
如果我将aix_code_rel重命名为aix_code并运行
blah/aix_code/bin/ruby -e "puts 'hello' "
我明白了
:1:在'require'中:无法加载这样的文件--rubygems.rb(LoadError)
from:1:in`'
使用ln-s aix_-code aix_-code_-rel
创建一个符号链接似乎可以解决这个问题,这表明安装程序总是在使用路径blah/aix_-code_-rel查找代码,尽管我配置了--enable load relative
我似乎可以通过设置RUBYLIB env变量来克服这一问题,但这似乎很麻烦,特别是考虑到linux安装似乎可以使用相对加载
有人知道我可能做错了什么吗?是否有其他原因可以设置默认加载路径?可能是一些安装后配置文件?我还没有尝试过这个选项,但在AIX上,这将是让它工作的一些技巧 如果找到可执行文件或共享库(如miniruby或libruby.so.xxxxx),请执行以下操作: 您将看到显示它所依赖的内容的输出。在“导入文件字符串”下面,您将看到一个列表。第0项是特定可执行文件或共享库用于其“libpath”的内容。您可以创建这些相对路径。它确实有效。但这带来了Ruby构建过程试图避免的安全风险(我最近才听说) 如果未在环境中设置LIBPATH,则会出现这种情况。如果在环境中设置了LIBPATH,那么它将在所有情况下使用该路径 哦。。。事实上,这是一个例外。(我正在编辑输入)导入文件字符串列表中的第1到第n个条目可以是绝对路径,在这种情况下,甚至LIBPATH都不会改变搜索,因为没有进行搜索 可能的工作方式是将“ruby”包装到一个脚本中,该脚本设置LIBPATH,然后使用相同的参数设置exec的ruby。比如:
#!/bin/sh
export LIBPATH=/blah:/ble/blah:/usr/lib:/lib
exec real-ruby "$@"
如果ruby看着argv[0]并根据它的名字做不同的事情,那么你必须做或担心的一件小事。我想没有。另一部分是您可能需要设置GEM_HOME和其他一些ruby环境变量
另一个现实世界是创建一个符号链接,从它的安装位置到它的安装位置。对bin和lib目录执行此操作,可能也会起作用。谢谢,包装方案是我的备份计划。使用-x命令行参数使这一点不那么糟糕,因为您可以设置环境,然后调用ruby并传入相同的文件名,它将跳过所有这些内容,并在看到#ruby后开始运行。
dump -H miniruby
#!/bin/sh
export LIBPATH=/blah:/ble/blah:/usr/lib:/lib
exec real-ruby "$@"