我有一个带有 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
.