Ruby:如何安装特定版本的 ruby​​ gem?

Posted

技术标签:

【中文标题】Ruby:如何安装特定版本的 ruby​​ gem?【英文标题】:Ruby: How to install a specific version of a ruby gem? 【发布时间】:2013-06-06 06:14:17 【问题描述】:

使用命令行gem 工具,我如何安装特定版本的gem?

【问题讨论】:

【参考方案1】:

使用--version参数(快捷方式-v):

$ gem install rails -v 0.14.1
…
Successfully installed rails-0.14.1

您还可以使用版本比较器,例如 >=~>

$ gem install rails -v '~> 0.14.0'
…
Successfully installed rails-0.14.4

使用较新版本的 rubygems,您可以加强您的要求:

$ gem install rails -v '~> 0.14.0, < 0.14.4'
…
Successfully installed rails-0.14.3

从现在开始,您还可以指定多个 gem 的版本:

$ gem install rails:0.14.4 rubyzip:'< 1'
…
Successfully installed rails-0.14.4
Successfully installed rubyzip-0.9.9

但这不适用于每个宝石超过一个比较器(目前)。

【讨论】:

这对 ~> 有效,但如果你有 '= 0.7' 类型的情况呢?我尝试应用两个 v 参数,看起来好像第一个被忽略了。使用逗号分隔符甚至不会解析。我最终删除了大于要求,它恰好安装了一个可接受的版本,但有一个正式的解决方案会很好。 版本比较器~&gt; 代表什么? 表示允许最后一位增长(***.com/questions/5170547/…) Mael Stor 的回答告诉我们,Joseph Coco 六年前提出的两个 v 参数现在有效。【参考方案2】:

您可以使用-v--version 标志。例如

gem install bitclock -v '< 0.0.2'

要指定版本上限和下限,您可以指定 --version 标志两次

gem install bitclock -v '>= 0.0.1' -v '< 0.0.2'

或使用语法(例如)

gem install bitclock -v '>= 0.0.1, < 0.0.2'

另一种方法是

gem install bitclock:'>= 0.0.1'

但使用最后一个选项,无法同时指定上限和下限。

[gem 3.0.3 和 ruby​​ 2.6.6]

【讨论】:

如何使 gem 不升级依赖项gem install "asciidoctor:2.0.10" "asciidoctor-diagram:2.0.5",总是将 asciidoctor 升级到高于 2.0.10 的版本,我尝试使用选项 @987654329 @ 和 --conservative ?我用gem install --no-document --ignore-dependencies "asciidoctor-diagram:2.0.5" 解决了这个问题,但asciidoctor-diagram 只有一个dep,如何更优雅地处理它。 @Brice 我无法使用命令行gem install 'asciidoctor:2.0.10' 'asciidoctor-diagram:2.0.5' 重现此行为。它安装的正是这些版本。输入 gem --version 时会报告哪个 gem 版本? 它发生在gem 3.1.4 中,在registry.fedoraproject.org/fedora-minimal 图像中。使用此命令,例如docker run -it --rm registry.fedoraproject.org/fedora-minimal bash -c "microdnf install -y ruby; gem install 'asciidoctor:2.0.10' 'asciidoctor-diagram:2.0.5'",我看到首先安装了 asciidoctor 2.0.10,然后安装了 asciidoctor 2.0.12。【参考方案3】:

对于 Ruby 1.9+,使用冒号。

gem install sinatra:1.4.4 prawn:0.13.0

【讨论】:

您要安装什么 gem(以及什么版本)? 请告诉我gem sources的输出,如果它是空的,使用这个命令添加一个repo:gem sources -a https://rubygems.org/ 我的gem -v 显示1.8.23 与您的2.2.2。看起来这个功能是新的:) Ruby 1.8 已经终止支持ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7【参考方案4】:

用于安装 gem install gemname -v versionnumber

用于卸载 gem uninstall gemname -v versionnumber

【讨论】:

【参考方案5】:

正如其他人所指出的,通常将-v 标志用于gem install 命令。

如果您在本地开发宝石,则在从 gemspec 中切割出宝石后:

$ gem install gemname-version.gem

假设版本为 0.8,它看起来像这样:

$ gem install gemname-0.8.gem

【讨论】:

很好的答案。我建议您为标志“-v”选项添加另一个代码块。当我的眼睛阅读答案时,他们立即转到代码块而不是围绕它的文本。如果其他人也这样做,他们会错过“-v”部分。【参考方案6】:

Linux

要安装不同版本的ruby,请使用apt检查最新版本的软件包,如下所示:

$ apt-cache madison ruby
      ruby |    1:1.9.3 | http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
      ruby |        4.5 | http://ftp.uk.debian.org/debian/ squeeze/main amd64 Packages

然后安装它:

$ sudo apt-get install ruby=1:1.9.3

要检查当前版本是什么,请运行:

$ gem --version # Check for the current user.
$ sudo gem --version # Check globally.

如果版本仍然旧,您可以尝试使用 ruby​​ 版本管理器 (rvm) 将版本切换到新版本:

rvm 1.9.3

注意:如果rvm 已全局安装,您可以在其前面加上sudo。或者,如果您的命令 rvm 不在您的全局 PATH 中,则运行 /usr/local/rvm/scripts/rvm。如果 rvm 安装过程失败,请参阅故障排除部分。


疑难解答:

如果您还有旧版本,您可以尝试通过以下方式安装 rvm(ruby 版本管理器):

sudo apt-get install curl # Install curl first
curl -sSL https://get.rvm.io | bash -s stable --ruby # Install only for the user.
#or:# curl -sSL https://get.rvm.io | sudo bash -s stable --ruby # Install globally. 

然后如果安装在本地(仅适用于当前用户),则通过以下方式加载 rvm:

source /usr/local/rvm/scripts/rvm; rvm 1.9.3

如果全局(针对所有用户),则:

sudo bash -c "source /usr/local/rvm/scripts/rvm; rvm 1.9.3"

如果您对新的 ruby​​ 版本仍有问题,请尝试通过 rvm 安装它:

source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3 # Locally.
sudo bash -c "source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3" # Globally.

如果你想全局安装一些 gems 并且你已经安装了 rvm,你可以试试:

rvmsudo gem install [gemname]

代替:

  gem install [gemname] # or:
  sudo gem install [gemname]

注意:最好不要使用 sudo 来处理 RVM gem。当你这样做 sudo 您正在以 root 身份运行命令,另一个 shell 中的另一个用户 因此,RVM 为您完成的所有设置都将被忽略,而 该命令在 sudo 下运行(例如 GEM_HOME 等...)。所以要 重申一下,一旦你“sudo”,你就作为根系统运行 将清除您的环境及其任何文件的用户 您的用户无法修改创建,这将导致 奇怪的事情发生了。

【讨论】:

【参考方案7】:

使用-v 标志:

$ gem install fog -v 1.8

【讨论】:

如果像我一样,您以前安装过更高版本的 gem,那么您必须卸载更高版本,例如gem uninstall fog。如果您有多个版本,它会询问您要卸载哪个版本。 我有 3 个版本的 rake:gem list | grep rake = rake (10.1.1, 10.1.0, 0.8.7).. 我有一个 rails 2.3.5 项目和另一个我正在同时开发的 3.0 项目.. 怎么样我为每个项目使用特定版本的 rake(即在命令行上?) @abbood rake _10.1.1_ ... 应该工作,谁想知道 :) 值得注意的是,这似乎不会影响可执行的二进制文件。不过,卸载以前的版本适用于二进制文件。 我可能每年搜索一次并找到它,哈哈,这就是我使用它的频率,但很棒!

以上是关于Ruby:如何安装特定版本的 ruby​​ gem?的主要内容,如果未能解决你的问题,请参考以下文章

在特定版本中安装ruby gem

使用新的 Ruby 版本在 Mac OSX 上安装 gem

安装Ruby和logstash插件

gem install报错 ruby升级

升级ruby的版本 https://gems.ruby-china.com/

如何安装 Ruby 和 RubyGems