如何确定哪个 gem 拥有一个文件?

Posted

技术标签:

【中文标题】如何确定哪个 gem 拥有一个文件?【英文标题】:How do I determine which gem owns a file? 【发布时间】:2018-10-22 09:02:52 【问题描述】:

假设我的GEM_HOME 的bin 目录中有一个文件,例如~/.gem/ruby/2.4.0/bin/foo 或类似的东西。如何确定哪个 gem 拥有该文件?


以下是其他包管理器的类似问题;我正在寻找专门针对 Ruby gems 的答案:

python/pip apt yum/rpm

【问题讨论】:

【参考方案1】:

打开 bin 文件并查看其内容。它应该只是一个普通的 Ruby 文件。在接近尾声的某个地方,您通常会看到如下内容:

load Gem.bin_path('gemname', 'gemname', version)

gemname 将是文件所属的 gem 的名称。

如果这样的行不存在,您将不得不做一些侦探工作,但通常您可以从 bin 名称或文件本身的代码中找出它。

您还可以像这样快速验证特定 gem 的 bin 内容,这可能有助于追踪候选人:

gem contents gemname | grep bin

或者,如果您只想扫描所有内容:

gem contents --all | grep file_you_want_to_find

【讨论】:

谢谢,但我正在寻找一个一般性的答案,而不是特定于 bin 目录中文件的答案(这只是我作为示例给出的)。 查看我上次的编辑。您可以使用 gem contents --all 并将其 grep 用于您需要的任何内容。

以上是关于如何确定哪个 gem 拥有一个文件?的主要内容,如果未能解决你的问题,请参考以下文章

确定 Hibernate 中哪个类拥有方

如何在 Linux 中显示哪个进程拥有磁盘空间

如何在 Octave 中打开 .mat 文件?

Rails:哪个是首选的 Mailchimp gem?

如何确定可执行文件是为哪个平台编译的?

如何确定哪个文件对应于 Android 应用程序上的屏幕?