自动化有输入的Ruby Gem安装

时间:2020-03-06 14:27:02  来源:igfitidea点击:

我正在尝试安装ibm_db gem,以便可以从Ruby访问DB2. 当我尝试时:

sudo gem install ibm_db

我得到以下澄清请求:

Select which gem to install for your platform (i486-linux)
 1. ibm_db 0.10.0 (ruby)
 2. ibm_db 0.10.0 (mswin32)
 3. ibm_db 0.9.5 (mswin32)
 4. ibm_db 0.9.5 (ruby)
 5. Skip this gem
 6. Cancel installation

我总是要安装linux版本(我假设是" ruby​​"版本),因此有没有办法从gem install命令中选择要直接安装的版本?

这是一个问题,原因是我需要通过bash脚本自动执行此安装,因此我想提前选择"红宝石"版本。

解决方案

试试这个:

sudo gem install --platform ruby ibm_db

请注意,我们可以使用以下命令获得有关install命令的帮助:

gem help install

更新:看来此选项仅适用于RubyGems 0.9.5或者更高版本。

@约翰·托普利

我已经尝试了gem help安装,而在帮助和实践中都无法使用--platform:

$ sudo gem install ibm_db --platform ruby
ERROR:  While executing gem ... (OptionParser::InvalidOption)
    invalid option: --platform

更新:Ubuntu仓库有0.9.4版本的rubygems,没有--platform选项。看来它可能是0.9.5中的一项新功能,但仍然没有在线文档,而且无论如何,它不能在Ubuntu(我需要使用它的平台)上运行。

我们可以使用"此处文档"。那是:

sudo gem install ibm_db <<heredoc
  1
heredoc

\ <\ <\ SOMETHING和SOMETHING之间的内容将作为上一条命令的条目输入(有点像ruby自己的heredocument)。当然,仅此一项就是选择" ibm_db 0.10.0(ruby)"平台。

希望足够了。

试试这个,我认为它虽然只适用于Bash

sudo gem install ibm_db < <(echo 1)

Rubygems 1.0和更高版本会自动检测我们正在运行的平台,因此不会提出该问题。我们可以将自己的宝石更新到最新的吗?

$ sudo gem update --system

更新后,如果我们使用的是Windows,则被警告;我们可能会遇到此问题。

另一个选择是下载.gem文件并按如下方式手动安装:

sudo gem install path/to/ibm_db-0.10.0.gem

这个特殊的宝石在rubyforge。