NixOS에서 시스템 전체에 설치된 패키지를 확인하는 데 사용할 수 있는 명령이 있습니까?
예를 들어 현재 사용자에 대해 설치된 패키지를 나열하는 데 사용할 수 있습니다 nix-env -q
. 전체 시스템에 설치된 패키지를 나열하는 방법을 모르겠습니다 /etx/nixos/configuration.nix
.
두 가지 별도의 인스턴스에서 사용하고 싶습니다.
/etc/nixos/configuration.nix
in 에 패키지를 추가했지만environment.systemPackages
이미 실행되었는지 잊어버렸다고 가정해 보겠습니다nixos-rebuild switch
. 패키지가 시스템 환경에 있는지 확인하기 위해 실행할 수 있는 명령이 있으면 좋을 것입니다.으로
programs.bash.enableCompletion
설정했습니다 . 옵션이 표시되지 않습니다.true
/etc/nixos/configuration.nix
닉스 포장bash-completion
, 이 옵션은 설치할 패키지를 설정하는 것 같습니다 .bash-completion
패키지가 실제로 시스템 환경에 있는지 확인하기 위해 실행할 수 있는 명령이 있으면 좋을 것 같습니다.
답변1
이를 수행하는 전문 도구는 없습니다. 이 옵션이 마음에 드실 겁니다 system.copySystemConfiguration
(문서의 "참고" 참조).
nix-store -q --references /run/current-system/sw
nix 스토리지 경로 목록에 직접적으로 포함되지만 systemPackages
, 다양한 NixOS 옵션이 거기에 패키지를 추가할 수 있다는 점에 유의하세요 .
답변2
NixOS가 소프트웨어를 설치하는 방식으로 인해 설치된 패키지와 같은 것이 없습니다.전체 시스템. 즉, 대부분의 패키지 관리자와는 다른 의미입니다.
그러나 사용자 환경(일명 프로필)을 다음과 동일하게 생각하면전체 시스템nix-store -q -R /nix/var/nix/profiles/system-${n}-link
, 을 사용하여 특정 사용자 환경에 대한 종속성을 나열 할 수 있습니다 . 여기서는 ${n}
구성 파일의 코드명입니다. 종속성의 의미는 직접 종속성과 간접 종속성을 의미합니다.
--tree
또한 매개변수 대신을 사용하면 -R
ASCII 종속성 트리를 얻을 수 있습니다.
답변3
첫 번째 사용 사례에서는 다음을 사용할 수 있습니다.
nixos-rebuild dry-build
이 명령은 빌드되고 다운로드될 항목을 표시합니다. 빌드해야 할 새 패키지가 있는지 알고 싶다면 위 명령을 사용할 수 있습니다.
빌드되었지만 현재 활성화되지 않은 패키지에 대해서는 알려주지 않습니다. 전임자. Firefox를 추가하고 configuration.nix
, 다시 빌드하고, Firefox를 제거하고, 다시 빌드하고, Firefox를 추가한 다음 위의 작업을 실행하면 새로 빌드할 항목이 없기 때문에 아무 것도 표시되지 않습니다. Nix는 가비지 수집 전까지 이전 패키지를 유지합니다.
nixos-rebuild dry-activate
아무런 변경 없이 새로운 시스템을 구축하는 방법 도 있습니다 . 특정 서비스를 비활성화/활성화한 것과 같은 다른 변경 사항이 표시됩니다.