如何从另一个安装的 Nix 商店导入包?

如何从另一个安装的 Nix 商店导入包?

我有一个带有 nix 存储的 USB 磁盘(更准确地说,nix-store.squashfs来自 NixOS 安装 ISO 的文件)安装在/mnt/foobar。这样,当我这样做时ls /mnt/foobar,我会看到熟悉的子目录,如下所示:

kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1
...etc...etc...

现在,(如何)我可以将东西从 nix 商店导入到我的常规中/nix/商店? (理想情况下,有依赖关系...)或者这是不可能的?...:/感觉很接近,但我真的不知道下一步该做什么...:(尝试过,NIX_STORE=/mnt/foobar nix-store -qR /mnt/foobar/*-somepackage-*但我收到了一个错误。我害怕只是在商店之间复制目录,因为我不知道这是否会破坏某些东西;也不知道如何找出依赖关系......

答案1

嗯;我尝试过一些基于维基百科(“大文件”部分),即:

sudo unshare -m bash
mount -o remount,rw /nix/store
cd /mnt/foobar
tar c kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1 | tar x -C /nix/store
printf "kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1\n\n0\n" | nix-store --register-validity --reregister
exit

现在nix-env -qa似乎将此软件包显示为-P-(已安装?或未安装?);不过现在还不能 100% 确定是否一切都好......

答案2

Nix v3 与新的 cli 现在有nix copy

语法就像这样

nix copy --from /mnt/foobar /nix/store/kipnv4i3njqc3hjunp8nv23o2io3-somepackage-0.0.1

如果您自己构建了软件包,请添加--no-check-sigs.

手册页

相关内容