如何使用 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 到:
- 为某种语言的某些版本安装特定于语言的包管理器(
gem
、pip
、...)
- 使用该语言特定的包管理器来安装库
相反,nix
做事的方式(据我所知)是:
- 使用
nix
安装所有已打包的应用程序
- 如果您正在开发应用程序,而不是通过
nix
(或 gem
)安装您的应用程序所依赖的库,您可以定义一个 nix
表达式来描述您的应用程序依赖项并将其用作 开发环境 。 (我认为这件事的文档应该改进。)
- 一般不自己安装库,在一些第三方构建过程中手动引用库。 (这在某些情况下有效,例如在编译的 C/C++ 库中,其中库的依赖项是通过
RPATH
s 构建到它们中的。但这不适用于例如 python 包.) 最后你真正想要的是应用程序,而不是库!
您可以在官方 nixpkgs
documentation 中找到一些关于如何设置此类环境的文档,目前主要涵盖 Haskell,但 Ruby 应该类似。
我最近为 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 到:
- 为某种语言的某些版本安装特定于语言的包管理器(
gem
、pip
、...) - 使用该语言特定的包管理器来安装库
相反,nix
做事的方式(据我所知)是:
- 使用
nix
安装所有已打包的应用程序
- 如果您正在开发应用程序,而不是通过
nix
(或gem
)安装您的应用程序所依赖的库,您可以定义一个nix
表达式来描述您的应用程序依赖项并将其用作 开发环境 。 (我认为这件事的文档应该改进。) - 一般不自己安装库,在一些第三方构建过程中手动引用库。 (这在某些情况下有效,例如在编译的 C/C++ 库中,其中库的依赖项是通过
RPATH
s 构建到它们中的。但这不适用于例如 python 包.) 最后你真正想要的是应用程序,而不是库!
您可以在官方 nixpkgs
documentation 中找到一些关于如何设置此类环境的文档,目前主要涵盖 Haskell,但 Ruby 应该类似。