编译 ruby 1.9.3 以及所需的 gem 以使其像包一样

compile ruby 1.9.3 along with required gems to make it as like package bundle

我们没有 ruby 1.9.3 rpm for CentOS 5.x,我正在寻找从源代码编译这个 ruby 版本。能够使用以下步骤编译它,

cd /usr/src wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz tar zxf ruby-1.9.3-p0.tar.gz cd ruby-1.9.3-p0 ./configure --prefix=/usr/local/ruby193 --disable-install-doc --with-opt-dir=/usr/local/lib make && make install

然后我将简单地压缩 ruby193 并分发到我所有的服务器。但是我正在寻找与所需的额外 gem 一起编译的方法,以便在我捆绑它之后和安装时不需要安装任何额外的 gem。

所以我可以简单地复制 zip 文件并将其解压缩到所有应该工作的服务器上,而无需安装任何额外的安装要求。通过这种方式,我可以在我所有的 运行 CentOS 5、CentOS 6 和 SunOS 上制作独特的 ruby 版本。但不确定这是否也适用于 CentOS 4,由于某些应用程序要求,我仍在为少数服务器使用此 OS 版本。

更新:

终于可以用下面的方法来实现了,

已复制到其他服务器,运行正常。但唯一的问题是 libyaml,

[root@server-test bin]# ruby --version
ruby 1.9.3p551 (2014-11-13) [x86_64-linux]
[root@server-test bin]# gem list
/usr/local/dops/tools/ruby193/lib/ruby/1.9.1/yaml.rb:84:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

*** LOCAL GEMS ***

bigdecimal (1.1.0)
ffi (1.9.18)
io-console (0.3)
json (1.5.5)
minitest (2.5.1)
rake (0.9.2.2)
rdoc (3.9.5)
rubygems-update (2.6.11)

我在编译 ruby 之前从源代码编译了 yaml,但不确定为什么当我复制到另一台服务器时仍然出现此错误。但是在我编译的服务器上运行正常

有什么想法吗..

更新 2:

经过多次调试发现库libyaml-0.so.2不存在。

LoadError: libyaml-0.so.2: 无法打开共享对象文件: 没有那个文件或目录

我无法在所有服务器上编译 yaml 然后它会再次手动。如果我只是将文件 libyaml-0.so.2 从工作服务器复制到 /lib 和 运行 ldconfig 下的新服务器,它会工作吗?

最后我从源代码编译并创建为 tar 包。我必须从源代码编译 yaml 并包含 lib 文件夹才能使其工作。