Как настроить Ruby на OS X с помощью Nix вместо Homebrew?

Недавно я переключился на диспетчер пакетов Nix вместо Homebrew для OS X.

Обычно я устанавливаю его с помощью rbenv, например:

brew install rbenv
rbenv install 2.2.0

Я спрашиваю себя, как это сделать с Nix? Я слышал, что сам Nix - достаточно хороший менеджер пакетов, так что, может быть, я смогу избавиться от rbenv для работы с моей рубиновой версией?

При установке ruby ​​через Nix

nix-env -i ruby

Даже когда OS X распознает это:

$ which ruby
/Users/USERNAME/.nix-profile/bin/ruby

Я все еще получаю Permission denied ошибку при попытке:

gem install sass

Вы по-прежнему рекомендовали бы rbenv для работы с установками ruby? Я знаю, что могу просто пощекотать папку Nix, но все равно должен владеть ею.


person ohboy21    schedule 03.06.2016    source источник
comment
Чтобы перечислить все доступные пакеты: $ nix-env -qa. Ты сделал это? Есть ли в nix пакет для ruby?   -  person Sergio Tulentsev    schedule 03.06.2016
comment
Да, есть, но я все еще не могу запустить установку gem без sudo. Так что мне все еще нужно устанавливать rbenv из других источников?   -  person ohboy21    schedule 03.06.2016
comment
Вы можете изучить stackoverflow.com/questions/32847962/   -  person knedlsepp    schedule 03.07.2016


Ответы (2)


У меня был аналогичный опыт использования python с nix. Обычно при использовании nix подход НЕ:

  • Установите менеджер пакетов для определенного языка для некоторой версии языка (gem, pip, ...)
  • Используйте менеджер пакетов для этого языка для установки библиотек

Вместо этого, nix способ (из того, что я узнал) сделать так:

  • Установите все уже упакованные приложения с nix
  • Если вы разрабатываете приложение, вместо того, чтобы устанавливать библиотеки, от которых ваше приложение зависит через nix (или gem), вы определяете выражение nix, которое описывает зависимости ваших приложений, и используете его в качестве среды разработки. (Думаю, в этом вопросе документацию надо улучшить.)
  • Как правило, не устанавливайте библиотеки сами по себе и вручную обращайтесь к ним в стороннем процессе сборки. (Это работает в некоторых сценариях, например, в скомпилированных библиотеках C / C ++, где зависимости библиотек встроены в них через RPATHs. Но это плохо работает, например, с пакетами python.) В конце концов, вам действительно нужно приложение, не библиотека!

Вы можете найти документацию по настройке таких сред в официальном nixpkgs документация, в настоящее время в основном описывающая Haskell, но Ruby должен быть похож.

person knedlsepp    schedule 03.07.2016

вы можете найти пакет рубина, следуя

nix-env -qa ruby

а затем он покажет список версий ruby

nix-env -i ruby-2.1.0-p0

Это установит версию Ruby, затем проверит ее ruby -v.

person chirag.sweng    schedule 03.06.2016
comment
Когда я выполняю ruby ​​-v, у меня остается старый, а не тот, который установил Nix. Как я могу указать на рубин Nix? - person ohboy21; 03.06.2016
comment
Для этого вы можете использовать rvm, который поможет вам легко переключаться между рубинами. - person chirag.sweng; 03.06.2016