我试图找出所有远程可用的版本的指定宝石。
我试着用:
gem list rhc --remote
但它表明:
*** REMOTE GEMS *** rhc (0.84.15) rhcp (0.2.18) rhcp_shell (0.2.12)
有什么想法吗?
试试:
gem list [STRING] [options]
例如:
gem list rhc -r
或者试试:
gem list -r rhc
(文档和提供的示例似乎相互矛盾-两者都试试)
请参阅文档:
Http://docs.rubygems.org/read/chapter/10#page34
嗯,这比我想象的要容易(嗯,不是真的,让我们说它应该是容易的) :
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)
根据 RubyGem 指南,你应该使用 search关键字。所以命令可以是:
search
gem search rhc --all
如果你想要确切的名字,请使用:
gem search ^rhc$ --all
如果您想包括预发布版本使用 --pre
--pre
gem search ^rhc$ --pre
如果你使用 zsh,加上引号:
zsh
gem search '^rhc$' --all
为了扩展@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.
我看到了一个被接受的答案,却带来了意想不到的结果
gem info 提供了一个 --remote选项来只检查远程 gems 和 --all来显示所有已知的版本:
gem info
--remote
--all
$ gem info rhc --remote --all *** REMOTE GEMS *** rhc (1.38.7, 1.38.4, 1.37.1, 1.36.4, 1.35.4, 1.35.3, 1.35.1, 1.34.2, 1.33.4, 1.32.2, 1.31.5, 1.30.3, 1.30.2, 1.29.7, 1.28.5, 1.27.4, 1.26.9, 1.25.3, 1.25.2, 1.24.4, 1.23.7, 1.22.5, 1.21.3, 1.20.3, 1.19.5, 1.18.2, 1.17.6, 1.16.9, 1.15.6, 1.14.7, 1.13.6, 1.12.4, 1.11.4, 1.10.7, 1.9.6, 1.8.9, 1.7.8, 1.6.8, 1.5.13, 1.4.8, 1.4.7, 1.3.8, 1.2.7, 1.1.11, 1.0.4, 0.98.16, 0.97.17, 0.96.9, 0.95.14, 0.95.13, 0.94.8, 0.93.19, 0.93.18, 0.92.11, 0.91.12, 0.91.11, 0.90.7, 0.90.6, 0.88.9, 0.87.8, 0.86.7, 0.85.12, 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) Author: Red Hat Homepage: https://github.com/openshift/rhc OpenShift Client Tools
gem (list|search)提供类似的(--remote --all) ,但如果你正在寻找一个特定的宝石 --exact选项只寻找精确匹配:
gem (list|search)
--remote --all
--exact
$ gem search rhc --remote --all --exact *** REMOTE GEMS *** rhc (1.38.7, 1.38.4, 1.37.1, 1.36.4, 1.35.4, 1.35.3, 1.35.1, 1.34.2, 1.33.4, 1.32.2, 1.31.5, 1.30.3, 1.30.2, 1.29.7, 1.28.5, 1.27.4, 1.26.9, 1.25.3, 1.25.2, 1.24.4, 1.23.7, 1.22.5, 1.21.3, 1.20.3, 1.19.5, 1.18.2, 1.17.6, 1.16.9, 1.15.6, 1.14.7, 1.13.6, 1.12.4, 1.11.4, 1.10.7, 1.9.6, 1.8.9, 1.7.8, 1.6.8, 1.5.13, 1.4.8, 1.4.7, 1.3.8, 1.2.7, 1.1.11, 1.0.4, 0.98.16, 0.97.17, 0.96.9, 0.95.14, 0.95.13, 0.94.8, 0.93.19, 0.93.18, 0.92.11, 0.91.12, 0.91.11, 0.90.7, 0.90.6, 0.88.9, 0.87.8, 0.86.7, 0.85.12, 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)
gem info最多返回一个 gem; gem (list|search)可能返回多个 gem。如果您知道自己在寻找什么,那么 gem info似乎是理想的; 当 gem 名称不确定时,gem (list|search)可能会有所帮助。此外,gem list描述了自己搜索本地宝石,尽管它能够进行远程操作。
gem list
似乎没有命令/选项集只返回 gem 的可用远程版本。为了重复 @ Jared-beck给出的答案,我们可以通过文本操作提取它:
$ gem info rhc --remote --all | grep -o '\((.*)\)$' | tr -d '() ' | tr ',' "\n" 1.38.7 1.38.4 1.37.1 1.36.4 1.35.4 # ... truncated ...