【发布时间】:2014-03-27 08:40:46
【问题描述】:
是否有可能为 Ruby 提供“本地”gem 存储库之类的东西?
我正在开发一个没有管理员权限的自定义 Linux 发行版。机器上安装了 Ruby(v.1.8.7),但显然没有安装“gem”或“bundle”或其他任何东西。我需要使用一些像 Nokogiri 这样的 Ruby gem。
是否可以在不通过gem install 安装的情况下使用 Ruby gem?
【问题讨论】:
是否有可能为 Ruby 提供“本地”gem 存储库之类的东西?
我正在开发一个没有管理员权限的自定义 Linux 发行版。机器上安装了 Ruby(v.1.8.7),但显然没有安装“gem”或“bundle”或其他任何东西。我需要使用一些像 Nokogiri 这样的 Ruby gem。
是否可以在不通过gem install 安装的情况下使用 Ruby gem?
【问题讨论】:
是的。任何 gem 都可以独立使用。您只需从 github 下载源代码,或者下载 gem 并手动提取其内容。
完成后,您必须将 gem 的 lib 文件夹添加到 Ruby 的加载路径 ($:) 中。例如:
$:.unshift(File.expand_path("nokogiri-1.6.1/lib"))
require 'nokogiri'
假设您在当前目录中运行 Ruby,并且 Nokogiri 源代码位于文件夹 nokogiri-1.6.1 中。
但请记住,首先您必须对所有 Nokogiri 先决条件执行相同操作。 IE。 Nokogiri 所依赖的所有库。
另一个选择,我会做的,是在你的主目录中安装 RubyGems。虽然这可能会有点棘手,但可以通过下载 RubyGems 包并运行类似的东西来实现:
ruby setup.rb --prefix=/home/my_user_name/rubygems
然后您需要设置 ENV 变量 GEM_HOME 和 GEM_PATH 以指向您希望安装所有 gem 的主目录中的位置。请参阅“What's the difference between GEM_HOME and GEM_PATH?”了解他们的工作描述。
您还需要将/home/my_user_name/rubygems/bin 之类的内容添加到您的PATH,以便shell 可以找到gem 命令。
【讨论】: