【问题标题】:How to set up Ruby on OS X with Nix instead of Homebrew?如何使用 Nix 而不是 Homebrew 在 OS X 上设置 Ruby?
【发布时间】:2016-06-03 13:57:24
【问题描述】:

我最近切换到了 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 文件夹,但无论如何我都应该拥有它。

【问题讨论】:

  • "列出所有可用的包:$ nix-env -qa"。是你做的吗? nix 中有 ruby​​ 的包吗?
  • 是的,但我仍然无法在没有 sudo 的情况下运行 gem install。那么我还必须通过其他来源安装 rbenv 吗?

标签: ruby nix


【解决方案1】:

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

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

而不是nix 方式(根据我所学到的)做事是:

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

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

【讨论】:

    【解决方案2】:

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

    nix-env -qa ruby
    

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

    nix-env -i ruby-2.1.0-p0
    

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

    【讨论】:

    • 当我执行 ruby​​ -v 时,我仍然有旧的,而不是 Nix 安装的那个。我怎样才能指向 Nix ruby​​?
    • 因此您可以使用 rvm,它可以帮助您轻松地在 rubies 之间切换
    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2013-02-17
    • 2014-10-18
    相关资源
    最近更新 更多