설치된 다른 Nix 스토어에서 패키지를 가져오는 방법은 무엇입니까?

설치된 다른 Nix 스토어에서 패키지를 가져오는 방법은 무엇입니까?

저는 nix 스토리지가 포함된 USB 디스크를 가지고 있습니다(보다 정확하게는nix-store.squashfsNixOS 설치 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

이제 새로운 CLI가 포함된 Nix v3에는nix copy

문법은 이렇습니다

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

패키지를 직접 빌드한 경우 --no-check-sigs.

매뉴얼 페이지

관련 정보