可以将“gem install”配置为在/ usr / bin /之外安装可执行文件吗?

时间:2008-12-02 09:58:50

标签: ruby installation rubygems

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

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

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

4 个答案:

答案 0 :(得分:20)

我将此作为答案添加,以便在我再次遇到此问题时显而易见:)

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

您可能还希望从$PATH

中删除旧路径

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

gem: --bindir /usr/bin

这会覆盖gem,因此它总是使用/ usr / bin /作为bin目录。

无需更新路径(尤其是多用户计算机的杂乱)。

答案 1 :(得分:13)

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

例如:

gemhome: /usr/local/rubygems

您也可以将此文件放在/etc/gemrc

或者,您可以设置GEM_HOME env-variable

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

更新(10年后):

Andrey Rodionov建议使用

gem: --bindir /usr/bin

答案 2 :(得分: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

作为一项糟糕的工作,我将/usr/bin更改为我想要的bin位置,该位置正常。似乎没有办法从~/.gemrc配置覆盖bindir?

答案 3 :(得分:0)

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

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

在gem版本2.0.14.1中成功尝试了此选项。

有关更多命令行选项,请在命令行上运行gem install --help