在 NixOs 上运行非 nixos 可执行文件有哪些不同的方法?我也想看看手动方法。
假设我使用nix-env的--query操作搜索要安装的软件包:
$ nix-env -qa 'aspell.*en'
aspell-dict-en-7.1-0
Run Code Online (Sandbox Code Playgroud)
我在/etc/nixos/configuration.nixNixOS 的主配置文件中写了这个包名:
environment.systemPackages = with pkgs; [
aspell-dict-en
];
Run Code Online (Sandbox Code Playgroud)
然而,如果我运行sudo nixos-rebuild switch, NixOS 命令来更新配置并安装declaratively指定的所有系统范围的软件包,它会因错误而中止:
error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5
Run Code Online (Sandbox Code Playgroud)
我知道对于很多包,虽然不是全部,nix-env返回的名称和应该在environment.systemPackages配置选项中指定的名称是不同的,但我不明白其中的逻辑。如何安装通过 找到的软件包nix-env?
我在NixOS上使用Nix 包管理器。假设我想安装一个提供文件的包。我如何找到提供此文件的包,类似于其他 GNU/Linux 发行版?libgtk-x11-2.0.so.0
目前我必须谷歌该文件并找出它可能属于哪个包并在 Nix 存储库中找到相应的包,但我想要一个更惯用的方法。
我有一个 U 盘和一个 NTFS 硬盘分区,我想在 NixOS 中使用它们。在其他一些发行版上,我会使用ntfs-3gin安装它/mnt。但是在 NixOS 上,该目录不存在;我想 NixOS 有其他一些规范的方式和/或这样做的地方。
在 NixOS 中,应该如何设置外部分区的自动挂载,最好使用configuration.nix?
假设我有一个非常简单的NixOS 配置文件:
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# SOME STUFF
environment.systemPackages = with pkgs; [ emacs gitFull ];
# SOME STUFF
}
Run Code Online (Sandbox Code Playgroud)
我知道 NixOS 实现了一个模块系统,一个模块就是一个.nix文件。每个.nix文件都应该包含任何有效的Nix 表达式(例如一个函数或一个集合)。这意味着 NixOS 配置文件/etc/nixos/configuration.nix本身就是一个模块,包含一个 Nix 表达式。
我也知道要使另一个模块中的 Nix 表达式对我正在使用的模块可见,我可以使用内置import函数。
我想将系统包的声明(包含emacs和的列表gitFull)拆分为 file packages.nix。如何将 NixOS 配置文件拆分为单独的模块?
我找到的创建 Nix 包本地存储库的所有说明都涉及创建主nixpkgs存储库的本地克隆并添加到其中。
有没有一种方法可以创建一个只包含我的本地附加包的小型存储库?
目前,我需要将 fish shell 设置为我在 NixOS 上的默认 shell,并且没有关于如何在 NixOS 中以声明方式(而不是通过运行chsh)执行此操作的官方文档。
在 NixOS 中,我yarn像往常一样通过运行$ nix-env -i yarn. 现在我试图yarn通过$ yarn start. 但这导致我出现以下错误。
$ yarn start
yarn start v0.20.3
$ webpack-dev-server --env dev
sh: webpack-dev-server: command not found
error Command failed with exit code 127.
Run Code Online (Sandbox Code Playgroud)
当我尝试以webpack-dev-server我通常的 NixOS 方式安装时,出现“匹配无派生”错误。
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Run Code Online (Sandbox Code Playgroud)
我读到这webpack-dev-server是一个 npm 包,但不确定在这种情况下与它的相关性的几个问题。
nix-env,因为$ nix-env -qa npm也没有匹配任何派生。 …如何编写一个简单的推导来打包 nix 程序以及如何创建 PR 将其包含在 nixpkgs 中?
(我写这篇文章是因为我找不到简单的解释)
我尝试在运行 NixOS 的 VM 上安装当前的 oracle jre。
现在发生以下情况:
[michas@cc:~]$ tar xvzf jre-7u40-linux-x64.tar.gz |grep bin/java
jre1.7.0_40/bin/javaws
jre1.7.0_40/bin/java_vm
jre1.7.0_40/bin/java
[michas@cc:~]$ ls -l ./jre1.7.0_40/bin/java
-rwxr-xr-x 1 michas nogroup 7750 Aug 27 09:17 ./jre1.7.0_40/bin/java
[michas@cc:~]$ ./jre1.7.0_40/bin/java
bash: ./jre1.7.0_40/bin/java: No such file or directory
Run Code Online (Sandbox Code Playgroud)
跆拳道?命名文件显然在那里。到底是怎么回事?
尝试进一步分析:
[michas@cc:~]$ strace ./jre1.7.0_40/bin/java
execve("./jre1.7.0_40/bin/java", ["./jre1.7.0_40/bin/java"], [/* 53 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
exit_group(1) = ?
+++ …Run Code Online (Sandbox Code Playgroud) nixos ×10
nix ×5
automounting ×1
binary ×1
development ×1
executable ×1
fish ×1
linux ×1
nixpkgs ×1
npm ×1
ntfs ×1
packaging ×1
patchelf ×1
shell ×1
usb ×1