如何列出远程站点上可用的所有版本的 gem?

Posted

技术标签:

【中文标题】如何列出远程站点上可用的所有版本的 gem?【英文标题】:How do I list all versions of a gem available at a remote site? 【发布时间】:2012-02-27 02:17:49 【问题描述】:

我正在尝试找出指定 gem 的所有远程可用版本。

我尝试使用:

gem list rhc --remote

但它显示:

*** REMOTE GEMS ***
rhc (0.84.15)
rhcp (0.2.18)
rhcp_shell (0.2.12)

有什么想法吗?

【问题讨论】:

【参考方案1】:

嗯,这比我想象的要容易(嗯,不是真的,让我们说尽可能简单):

gem list rhc --remote --all

返回:

*** REMOTE GEMS ***
rhc (0.84.15, 0.84.13, 0.83.9, 0.82.18, 0.81.14, 0.80.5, 0.79.5, 0.77.8, 0.75.9, 0.74.6, 0.74.5, 0.73.14, 0.72.29, 0.71.2, 0.69.6, 0.69.3, 0.68.5)
rhcp (0.2.18, 0.2.17, 0.2.16, 0.2.15, 0.2.14, 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2)
rhcp_shell (0.2.12, 0.2.11, 0.0.9, 0.0.7, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)

【讨论】:

还要注意“rhc”是一个正则表达式,所以如果你只想看那个,你可以搜索gem list ^rhc$和“--remote”和“--all”标志可简写为gem list ^rhc$ -ra 请注意,您可以传递其他选项,即。要获得您想要的 phusion 乘客的最新预发布版本:gem list -ra --pre passenger (-ra == --remote --all) @JoshuaCheek 请注意,像zsh 这样的一些shell 具有更高级的解析,并且可以捕获以这种方式给出的正则表达式。为了更安全(如果将这样的东西放在脚本或自述文件中)是将它放在一个字符串中,以便我们确定我们以 1-1 传递它,即gem list '^rhc$' 等。 @m_gol 碰巧正在阅读 cmets,因为我的 zsh 为您的帮助做了这个 +1! 使用--prerelease查看测试版【参考方案2】:

根据RubyGem's Guide,您应该使用search 关键字。所以命令可能是:

gem search rhc --all

如果您想要确切的名称,请使用:

gem search ^rhc$ --all

如果您想包含预发布版本,请使用 --pre

gem search ^rhc$ --pre

如果您使用的是zsh,请添加引号:

gem search '^rhc$' --all

【讨论】:

使用--prerelease查看测试版【参考方案3】:

为了扩展@eyalev 的答案,如果您想要每行一个版本的列表,这里有一个单行:

gem search '^rspec$' --all \
  | grep -o '\((.*)\)$' \
  | tr -d '() ' \
  | tr ',' "\n" \ 
  | sort
0.0.10
0.1.0
0.1.1
# etc.

为了使其更易于重用,您可以编写一些函数(请原谅我有限的 bash 技能):

function extract_gem_versions()    
  echo "$1" \
    | grep -o '\((.*)\)$' \
    | tr -d '() ' \
    | tr ',' "\n"; 


function gem_versions()  
  local gem_name="$1"; 
  local pattern="^$gem_name$";  
  local vers_str="$(gem search $pattern --all)";  
  extract_gem_versions "$vers_str";  


gem_versions rspec | sort
0.0.10
0.1.0
0.1.1
# etc.

【讨论】:

【参考方案4】:

试试:

gem list [STRING] [options]

例如:

gem list rhc -r

或者试试:

gem list -r rhc

文档和提供的示例似乎相互矛盾 - 尝试两者


查看文档:

http://docs.rubygems.org/read/chapter/10#page34

【讨论】:

这里没有列出所有版本

以上是关于如何列出远程站点上可用的所有版本的 gem?的主要内容,如果未能解决你的问题,请参考以下文章

Alpine apk:列出所有可用的软件包版本

如何在 OS X 上使用 ruby​​ 2.3 解决 mysql2 gem 的“不兼容的库版本”?

如何在 Linux 架构上即时列出 C 代码中可用的所有函数/符号?

如何确定python库的所有可用版本?

Ionic 3. 如何使用 cli 定位特定版本的 iOS 模拟器?

如何在我的 Gemfile 中找到未使用的宝石