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

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

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

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

请参阅http://www.rubygems.org/read/chapter/11并指定~/.gemrc ,它定义了一个gemhome变量。

例如:

 gemhome: /usr/local/rubygems 

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

或者,您可以设置GEM_HOME env变量 :

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

更新(10年后):

安德烈罗迪奥诺夫建议使用

 gem: --bindir /usr/bin 

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

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

您可能还希望从$PATH删除旧路径

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

 gem: --bindir /usr/bin 

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

无需更新路径(特别是多用户机器的杂乱)。

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

 # 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?