Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Nix而不是自制软件在OS X上设置Ruby?_Ruby_Nix - Fatal编程技术网

如何使用Nix而不是自制软件在OS X上设置Ruby?

如何使用Nix而不是自制软件在OS X上设置Ruby?,ruby,nix,Ruby,Nix,我最近切换到Nix软件包管理器,而不是OS X的自制软件 通常,我使用rbenv安装它,如: brew install rbenv rbenv install 2.2.0 我现在在问自己,一个人如何用尼克斯做到这一点?我听说Nix本身就是一个足够好的包管理器,所以我可以摆脱rbenv来处理我的ruby版本吗 当我通过Nix安装ruby时 nix-env -i ruby 即使OS X能够识别它: $ which ruby /Users/USERNAME/.nix-profile/bin/rub

我最近切换到Nix软件包管理器,而不是OS X的自制软件

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

brew install rbenv
rbenv install 2.2.0
我现在在问自己,一个人如何用尼克斯做到这一点?我听说Nix本身就是一个足够好的包管理器,所以我可以摆脱
rbenv
来处理我的ruby版本吗

当我通过Nix安装ruby时

nix-env -i ruby
即使OS X能够识别它:

$ which ruby
/Users/USERNAME/.nix-profile/bin/ruby
在尝试执行以下操作时,我仍然收到一个
权限被拒绝的
错误:

gem install sass
您还会推荐rbenv来处理ruby安装吗?我 我知道我可以随便翻阅Nix文件夹,但无论如何我应该拥有它


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

nix-env -qa ruby
然后它将显示ruby版本的列表

nix-env -i ruby-2.1.0-p0

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

检查它。我在使用python和
nix
时也有类似的经验。 通常,使用nix时的方法是而不是

  • 为某种语言版本安装特定于语言的软件包管理器(
    gem
    pip
    ,…)
  • 使用该语言特定的软件包管理器安装库
取而代之的是(从我所学到的)nix方法是:

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

您可以在官方网站上找到一些关于如何设置这样的环境的文档,目前主要介绍Haskell,但是Ruby应该是类似的

“要列出所有可用的软件包:
$nix env-qa
”。是你干的吗?在nix中有ruby的软件包吗?有,但是没有sudo我仍然无法运行gem安装。那么我还需要通过其他来源安装rbenv吗?你可能想了解一下,当我使用ruby-v时,我仍然使用旧版本,而不是Nix安装的版本。我怎样才能指出Nix ruby?因此,您可以使用rvm,它可以帮助您轻松地在ruby之间切换