gpt4 book ai didi

development-environment - 使用最新版本时确保 Nix 开发环境中的 Ruby 版本

转载 作者:行者123 更新时间:2023-12-05 04:15:15 26 4
gpt4 key购买 nike

目前,Nix 中默认和最新的 Ruby 是 2.2.2-p0。当我运行 nix-env -qaP ruby​​ 时,它会返回一个列表,其中表示此 ruby​​ 版本是通过 nixpkgs.ruby 访问的。我希望此 Ruby 链接会发生变化,以与最新支持的 ruby​​ 版本保持同步。我没有可选的 nixpkgs.ruby_2_2_2 来确保我的 ruby​​ 版本。

查看位于 https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/interpreters/ruby/ruby-2.2.2.nix 的 .nix 定义文件,但是,我看到他们在该脚本中指定了修订版。

所以我想知道,当我在创建开发的 Nix 表达式的 buildInputs 中列出它时,是否有一些方法可以指定我想要的 Nix 包的修订版环境(将通过 nix-shell . 访问)?还是我可以做其他事情来确保安装使用 ruby​​ 2.2.2-p0,而不仅仅是可能会更改的最新 Ruby?

当前脚本:

  let
pkgs = import <nixpkgs> {};
in with pkgs; {
rubyEnv = stdenv.mkDerivation rec {
name = "ruby-env";
version = "0.1";
src = ./.;
buildInputs = [
stdenv
ruby
bundler_HEAD
];
};
}

我没有在 http://nixos.org/nix/manual/#chap-writing-nix-expressions 的文档中看到这一点

最佳答案

There is no optional nixpkgs.ruby_2_2_2 for me to use to ensure my ruby version.

在nixpkgs中其实有一个ruby_2_2_2:

$ nix-env -qaP ruby
nixos.ruby_1_8 ruby-1.8.7-p374
nixos.ruby_1_9 ruby-1.9.3-p551
nixos.ruby_2_0 ruby-2.0.0-p645
nixos.ruby_2_1_0 ruby-2.1.0-p0
nixos.ruby_2_1_1 ruby-2.1.1-p0
nixos.ruby_2_1_2 ruby-2.1.2-p353
nixos.ruby_2_1_3 ruby-2.1.3-p0
nixos.ruby_2_1 ruby-2.1.6-p0
nixos.ruby_2_2_0 ruby-2.2.0-p0
nixos.ruby ruby-2.2.2-p0
nixos.bundler_HEAD ruby-2.2.2-p0-bundler-2015-01-11

通过查看 ruby package in the index 的定义,可以看到当前默认的ruby只是ruby 2.2的一个别名:

ruby = ruby_2_2;

这又是 ruby​​ 2.2.2 的别名:

ruby_2_2 = ruby_2_2_2; 

要在 nix 表达式中将 ruby​​ 包覆盖到特定的 ruby​​ 版本,overridePackages可以使用:

let
nixpkgs = import <nixpkgs> {};
pkgs = nixpkgs.overridePackages (self: super: {
ruby = nixpkgs.ruby_2_2_2;
});
in with pkgs;
{
rubyEnv = stdenv.mkDerivation rec {
name = "ruby-env";
version = "0.1";
src = ./.;
buildInputs = [
stdenv
ruby
bundler
];
};
}

关于development-environment - 使用最新版本时确保 Nix 开发环境中的 Ruby 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32847962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com