19

默认情况下,当您sudo gem install thegemname将可执行文件安装到/usr/bin/

有没有办法改变这个?例如,将它们安装到/usr/local/rubygems/bin(或任何其他路径)?

该路径似乎没有被硬编码到 gemspec 文件中,所以我不明白为什么这是不可能的(尽管我对 Ruby/Gems 的经验很少)

4

4 回答 4

20

我将此添加为答案,以便当我再次遇到此问题时很明显:)

首先,将所有垃圾箱/var/lib/gems/1.8/bin/移入/usr/bin/. 如果您不这样做,那么卸载或更新 gem 将不会从原始 bin 目录中删除二进制文件。

您可能还希望从$PATH

接下来,编辑~/.gemrc并添加(或更新)以下行:

gem: --bindir /usr/bin

这会覆盖 gem,以便它始终使用 /usr/bin/ 作为 bin 目录。

无需更新路径(对于多用户机器尤其混乱)。

于 2010-04-20T22:07:19.473 回答
15

请参阅http://www.rubygems.org/read/chapter/11并指定~/.gemrc定义 gemhome 变量的 a。

例如:

gemhome: /usr/local/rubygems

你也可以把这个文件放在/etc/gemrc

或者,您可以设置GEM_HOMEenv-variable

$ export GEM_HOME=/tmp/gemtest
$ gem install bundler
$ ls /tmp/gemtest/bin/
bundle

更新(10年后):

下面的 Andrey Rodionov 建议使用

gem: --bindir /usr/bin
于 2008-12-02T10:04:55.637 回答
2

在 OS X 上,可执行目录/usr/bin在文件中被覆盖/Library/Ruby/Site/1.8/rubygems/defaults.rb

# The default directory for binaries
def self.default_bindir
  if defined? RUBY_FRAMEWORK_VERSION then # mac framework support
    '/usr/bin'
  else # generic install
    ConfigMap[:bindir]
  end
end

作为一个 hackish 解决方法,我更改/usr/bin为我想要的 bin 位置,它可以正常工作。似乎没有任何方法可以从~/.gemrc配置中覆盖 bindir?

于 2008-12-02T11:03:45.580 回答
0

要将可执行文件安装到所需目录,--bindir可以使用命令行选项:

sudo gem install thegemname --bindir /usr/local/rubygems/bin

使用 gem 版本 2.0.14.1 成功尝试了此选项。

如需更多命令行选项,gem install --help请在命令行上运行。

于 2019-04-24T09:26:20.947 回答