对于任何不正确的术语,我们深表歉意。
我正在使用 Chef 来自动化服务器部署。
我已经构建了一个 AMI,其中从源代码编译了 Ruby 1.9.3,然后 chef 从那时起接管。
当从源代码编译 ruby 时,libruby.so.1.9 会被添加到 /usr/lib。
问题在于,在 chef 运行期间,require 'mysql' 失败,因为它正在寻找不存在的 libruby-1.9.1.so.1.9。
我可以通过运行来解决这个问题sudo apt-get install libruby1.9.1
,但我认为可能有一个更优雅的解决方案,理想情况下,我可以将其添加到 AMI 或 chef deploy 中来解决这个问题。
有任何想法吗?
答案1
正确的做法是从软件包安装 Ruby,而不是从源代码安装。基于变更日志对于ruby1.9.1
Ubuntu 12.04 中的软件包,它实际上是版本 1.9.3p0,尽管软件包名称暗示它是 1.9.1。如果您从源代码编译是因为您需要 1.9.3,那么您应该直接使用 Ubuntu 中的软件包。如果您从源代码编译还有其他原因,请尝试查找 Ubuntu 软件包或自行构建软件包。