按照之前给我的答案,我开始关注 nixpkgs-unstable 频道,并使用此存储库的 git 克隆:https : //github.com/NixOS/nixpkgs-channels/
我的克隆在~/nixpkgs. 我打电话nix-shell给选项-I ~,它工作正常。因为nix-env该-I选项不存在,但我知道应该改用该-f选项。到目前为止(在两台不同的机器上)我就是这样做的(nix-env使用 option调用-f ~)并且它运行良好。
现在,我在第三台机器上,我试图重现相同的过程。我尝试使用命令安装 nixpkgs-unstable 但不在我的系统通道 nixos-16.09 中的软件包,nix-env -f ~ -iA nixpkgs.exercism但它失败并显示以下错误消息:
warning: name collision in input Nix expressions, skipping ‘/home/theo/nixpkgs’
error: attribute ‘exercism’ in selection path ‘nixpkgs.exercism’ not found
Run Code Online (Sandbox Code Playgroud)
搜索此错误消息给了我这个http://lists.science.uu.nl/pipermail/nix-dev/2013-October/011898.html
但我不是在描述的情况。我没有以普通用户的身份关注任何频道(nix-channel --list答案为空),我唯一的系统范围频道称为 nixos(进一步证实了.nix-defexpr/仅包含channels_root/又包含binary-caches,manifest.nix和的事实nixos)。
我做错了什么? …
我目前在 18.03 并且想升级到 18.09。我该怎么做呢?
我通过网络搜索找到了以下内容,但不是很确定:https : //discourse.nixos.org/t/how-to-upgrade-from-18-03-to-18-09/933
我假设我可能只是更改我引用的频道nixos?但我不确定这是否适合在出现问题时允许回滚。
sudo nix-channel --list
nixos https://nixos.org/channels/nixos-18.03
unstable https://nixos.org/channels/nixos-unstable
Run Code Online (Sandbox Code Playgroud)
此外,我还看到了以下内容:https : //github.com/NixOS/nixpkgs/issues/40351#issuecomment-388405973(引用如下) - 我需要考虑这一点吗?
还:
/etc/nixos/configuration.nix:
# 这个值决定了你的系统要兼容的 NixOS 版本,以避免破坏一些软件,比如数据库 # 服务器。只有在 NixOS 发行说明说你应该这样做之后,你才应该改变它。system.stateVersion = "17.09"; #你看评论了吗?我没有看到何时发出更改此命令的命令。
我阅读了发行说明、新闻和可用信息。等待命令执行它,但没有找到。
无论如何,发布几天后,我更改了“17.09”->“18.03”。
如何诊断 nix-build 失败?
目前我看到输出为:
nix build -v
warning: dumping very large path (> 256 MiB); this may run out of memory
building '/nix/store/fdrm6kbm68vld3bhfjizv684ck725lyf-blog.drv'...
builder for '/nix/store/fdrm6kbm68vld3bhfjizv684ck725lyf-blog.drv' failed with exit code 1; last 5 log lines:
unpacking sources
unpacking source archive /nix/store/s7r5vlvp49ad6a9d5hqhsiaxw691iyhf-Blog
source root is Blog
patching sources
configuring
[0 built (1 failed), 0.0 MiB DL]
error: build of '/nix/store/fdrm6kbm68vld3bhfjizv684ck725lyf-blog.drv' failed
Run Code Online (Sandbox Code Playgroud)
我希望找到一些日志/错误,说明为什么它无法构建?
我已经尝试添加build-cache-failures = true;到,default.nix但是我仍然看不到以下输出:
nix-store --read-log
Run Code Online (Sandbox Code Playgroud)
而nix-store --query-failed-paths结果:
error: no operation …Run Code Online (Sandbox Code Playgroud) [root@nixos:/etc/nix]# sudo chmod 777 /etc/nix/nix.conf
chmod: changing permissions of '/etc/nix/nix.conf': Read-only file system
Run Code Online (Sandbox Code Playgroud)
我记得这是一些文件系统/Linux 内核实用程序来更改它,但我不确定它叫什么?
我试图用旧的 nixpkgs 通道/分支(18.03)构建一个旧的 Haskell 项目。
在我第一次尝试构建它时,我将编译器版本指定为ghc843...但是在构建时 - 当我期望它来自缓存时,它似乎正在构建所有外部库。
幸运的是,我记得我之前遇到过这个问题:调试为什么 nix 不必要地构建一个包,而它应该位于 nixpkgs 二进制缓存中?
问题基本上是我使用的是 ghc 的“非默认”版本(Hydra 不会构建/缓存)。
所以现在我的问题是,我怎样才能找到“默认”编译器版本 - 或者 Hydra 构建/缓存的版本?
{
nixpkgs ? import <nixpkgs> {}
, sources ? import ./nix/sources.nix
, compiler ? "ghc843" } :
let
niv = import sources.nixpkgs {
overlays = [
(_ : _ : { niv = import sources.niv {}; })
] ;
config = {};
};
pkgs = niv.pkgs;
myHaskellPackages = pkgs.haskell.packages.${compiler}.override {
};
in
(myHaskellPackages.callCabal2nix …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用 NixOs 中的 Nix 包管理器安装 dot-net-core-sdk 2.0。
我对 NixOs、Nix、bash 脚本和 ELF 之类的东西都很陌生。但是我认为我已经成功地为 dot-net-core-sdk 2.0 创建了一个有效的 Nix 包描述。
但是,当我尝试创建一个新console项目时,它抱怨找不到控制台模板:
No templates matched the input template name: console.
Run Code Online (Sandbox Code Playgroud)
我已经定义了我的 Nix 包和构建脚本,如下所示:
dotnet-sdk.nix
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "dotnet-sdk-2.0";
builder = ./builder.sh;
libPath = stdenv.lib.makeLibraryPath
[ lttng-tools kerberos zlib gettext openssl icu libunwind eject stdenv.cc.cc glib ];
src = fetchurl {
url = "https://download.microsoft.com/download/1/B/4/1B4DE605-8378-47A5-B01B-2C79D6C55519/dotnet-sdk-2.0.0-linux-x64.tar.gz";
sha256 = "6059a6f72fb7aa6205ef4b52583e9c041fd128e768870a0fc4a33ed84c98ca6b";
};
}
Run Code Online (Sandbox Code Playgroud)
建设者.sh
source $stdenv/setup
mkdir -p $out/dotnet-sdk
echo …Run Code Online (Sandbox Code Playgroud) 我使用 NixOS,并且正在尝试为我的 Haskell 项目设置 Nix Haskell 环境。我有一个用 Nix 编写的 Haskell 包,我试图通过它来工作nix-shell,但是依赖的 Haskell 包 Clay不会构建,正如我刚刚打开的错误报告中所述。我怎样才能用这个Haskell包的不同版本(旧的或新的,我想这并不重要)覆盖这个包?
长话短说:到目前为止,我只使用了具有“命令式配置管理/打包”方法的发行版。而且,...我对使用命令式配置管理(在试验时)难以追踪损坏/问题感到恼火。
我找到了NixOS,它做广告:
NixOS 有一种完全声明式的配置管理方法:你用 NixOS 的模块化语言编写系统所需配置的规范,NixOS 负责实现它。
我正在考虑使用 NixOS 作为我的主要桌面操作系统,并将配置存储在 GIT 存储库中。
那么,NixOS 配置是 gittable 吗?我可以通过 git 存储库“定义”我的主要操作系统配置吗(可能使用一些“应用”命令)?
nix-env -v -qaP '*'目前返回我所有渠道提供的所有包。
如何指定从特定渠道返回包裹,例如unstable/ 18.03?
据我了解,我可以使用该-I标志来使用给定版本的 Nix 软件包。但我想知道在一个shell.nixconf中是否可以有类似的东西:
gitv2.1.2htopv1.2.3能够确保给定的工具版本。
nix ×10
nixos ×8
.net ×1
dist-upgrade ×1
git ×1
haskell ×1
patchelf ×1
permissions ×1
shell ×1
version ×1