Можно ли настроить "gem install" для установки исполняемых файлов вне/usr/bin/по умолчанию?
По умолчанию, когда вы sudo gem install thegemname
, он установит исполняемые файлы в /usr/bin/
Есть ли способ изменить это? Например, чтобы установить их в /usr/local/rubygems/bin
(или любой другой путь)?
Путь, по-видимому, не жестко закодирован в файл gemspec, поэтому я не понимаю, почему это не должно быть возможным (хотя у меня очень мало опыта с Ruby/Gems)
Ответы
Ответ 1
Смотрите http://www.rubygems.org/read/chapter/11 и укажите ~/.gemrc
, который определяет переменную gemhome.
Например:
gemhome: /usr/local/rubygems
Вы также можете поместить этот файл в /etc/gemrc
В качестве альтернативы вы можете установить GEM_HOME
env-variable:
$ export GEM_HOME=/tmp/gemtest
$ gem install bundler
$ ls /tmp/gemtest/bin/
bundle
Ответ 2
Я добавляю это как ответ, так что это очевидно, когда я снова сталкиваюсь с этой проблемой:)
Сначала переместите все ячейки в /var/lib/gems/1.8/bin/
на /usr/bin/
. Если вы этого не сделаете, то удаление или обновление драгоценного камня не приведет к удалению двоичного файла из исходного каталога bin.
Вы также можете удалить старый путь из $PATH
Затем отредактируйте ~/.gemrc
и добавьте (или обновите) следующую строку:
gem: --bindir /usr/bin
Это переопределяет драгоценный камень, так что он всегда использует/usr/bin/как каталог bin.
Не нужно обновлять путь (особенно беспорядочный для многопользовательских машин).
Ответ 3
В ОС 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
на мое место в выбранном месте, которое работает правильно. Кажется, что нет никакого способа переопределить bindir из конфигурации ~/.gemrc
?