如何使用 Nix 而不是 Homebrew 在 OS X 上设置 Ruby?

How to set up Ruby on OS X with Nix instead of Homebrew?

我最近为 OS X 切换到 Nix 包管理器而不是 Homebrew。

通常,我使用 rbenv 安装它,例如:

brew install rbenv
rbenv install 2.2.0

我现在在问自己如何使用 Nix 做到这一点?我听说 Nix 本身是一个足够好的包管理器,所以也许我可以摆脱 rbenv 来处理我的 ruby 版本?

当我通过 Nix 安装 ruby 时

nix-env -i ruby

即使 OS X 识别它:

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

我在尝试以下操作时仍然遇到 Permission denied 错误:

gem install sass

Would you still recommend rbenv for handling ruby installations? I know I could just chown the Nix folder, but I should own it anyway.

您可以通过以下

找到ruby的包
nix-env -qa ruby

然后它将显示 ruby 个版本的列表

nix-env -i ruby-2.1.0-p0

这将安装 ruby 版本然后通过 ruby -v

检查它

我在使用 python 和 nix 时也有过类似的经历。 通常使用 nix 的方法是 NOT 到:

  • 为某种语言的某些版本安装特定于语言的包管理器(gempip、...)
  • 使用该语言特定的包管理器来安装库

相反,nix 做事的方式(据我所知)是:

  • 使用 nix
  • 安装所有已打包的应用程序
  • 如果您正在开发应用程序,而不是通过 nix(或 gem)安装您的应用程序所依赖的库,您可以定义一个 nix 表达式来描述您的应用程序依赖项并将其用作 开发环境 。 (我认为这件事的文档应该改进。)
  • 一般不自己安装库,在一些第三方构建过程中手动引用库。 (这在某些情况下有效,例如在编译的 C/C++ 库中,其中库的依赖项是通过 RPATHs 构建到它们中的。但这不适用于例如 python 包.) 最后你真正想要的是应用程序,而不是库!

您可以在官方 nixpkgs documentation 中找到一些关于如何设置此类环境的文档,目前主要涵盖 Haskell,但 Ruby 应该类似。