3

我最近切换到了 Nix 包管理器,而不是 OS X 的 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

你还会推荐 rbenv 来处理 ruby​​ 安装吗?我知道我可以只使用 Nix 文件夹,但无论如何我都应该拥有它。

4

2 回答 2

4

我在使用 python 和nix. 通常,使用 nix 时的方法不是

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

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

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

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

于 2016-07-03T10:41:28.317 回答
1

您可以通过以下方式找到 ruby​​ 包

nix-env -qa ruby

然后它将显示 ruby​​ 版本列表

nix-env -i ruby-2.1.0-p0

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

于 2016-06-03T14:08:27.937 回答