默认情况下,当您sudo gem install thegemname
将可执行文件安装到/usr/bin/
有没有办法改变这个?例如,将它们安装到/usr/local/rubygems/bin
(或任何其他路径)?
该路径似乎没有被硬编码到 gemspec 文件中,所以我不明白为什么这是不可能的(尽管我对 Ruby/Gems 的经验很少)
默认情况下,当您sudo gem install thegemname
将可执行文件安装到/usr/bin/
有没有办法改变这个?例如,将它们安装到/usr/local/rubygems/bin
(或任何其他路径)?
该路径似乎没有被硬编码到 gemspec 文件中,所以我不明白为什么这是不可能的(尽管我对 Ruby/Gems 的经验很少)
我将此添加为答案,以便当我再次遇到此问题时很明显:)
首先,将所有垃圾箱/var/lib/gems/1.8/bin/
移入/usr/bin/
. 如果您不这样做,那么卸载或更新 gem 将不会从原始 bin 目录中删除二进制文件。
您可能还希望从$PATH
接下来,编辑~/.gemrc
并添加(或更新)以下行:
gem: --bindir /usr/bin
这会覆盖 gem,以便它始终使用 /usr/bin/ 作为 bin 目录。
无需更新路径(对于多用户机器尤其混乱)。
请参阅http://www.rubygems.org/read/chapter/11并指定~/.gemrc
定义 gemhome 变量的 a。
例如:
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
在 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?
要将可执行文件安装到所需目录,--bindir
可以使用命令行选项:
sudo gem install thegemname --bindir /usr/local/rubygems/bin
使用 gem 版本 2.0.14.1 成功尝试了此选项。
如需更多命令行选项,gem install --help
请在命令行上运行。