默认情况下,当您sudo gem install thegemname
时,它会将可执行文件安装到/usr/bin/
有没有办法改变这个?例如,要将它们安装到/usr/local/rubygems/bin
(或任何其他路径)?
该路径似乎没有硬编码到gemspec文件中,因此我不明白为什么这不可能(尽管我对Ruby / Gems的经验很少)
答案 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
。