NixOS에서 시스템 전체에 어떤 패키지가 설치되어 있는지 확인하는 방법은 무엇입니까?

NixOS에서 시스템 전체에 어떤 패키지가 설치되어 있는지 확인하는 방법은 무엇입니까?

NixOS에서 시스템 전체에 설치된 패키지를 확인하는 데 사용할 수 있는 명령이 있습니까?

예를 들어 현재 사용자에 대해 설치된 패키지를 나열하는 데 사용할 수 있습니다 nix-env -q. 전체 시스템에 설치된 패키지를 나열하는 방법을 모르겠습니다 /etx/nixos/configuration.nix.


두 가지 별도의 인스턴스에서 사용하고 싶습니다.

  1. /etc/nixos/configuration.nixin 에 패키지를 추가했지만 environment.systemPackages이미 실행되었는지 잊어버렸다고 가정해 보겠습니다 nixos-rebuild switch. 패키지가 시스템 환경에 있는지 확인하기 위해 실행할 수 있는 명령이 있으면 좋을 것입니다.

  2. 으로 programs.bash.enableCompletion설정했습니다 . 옵션이 표시되지 않습니다.true/etc/nixos/configuration.nix닉스 포장bash-completion, 이 옵션은 설치할 패키지를 설정하는 것 같습니다 . bash-completion패키지가 실제로 시스템 환경에 있는지 확인하기 위해 실행할 수 있는 명령이 있으면 좋을 것 같습니다.

답변1

이를 수행하는 전문 도구는 없습니다. 이 옵션이 마음에 드실 겁니다 system.copySystemConfiguration(문서의 "참고" 참조).

nix-store -q --references /run/current-system/swnix 스토리지 경로 목록에 직접적으로 포함되지만 systemPackages, 다양한 NixOS 옵션이 거기에 패키지를 추가할 수 있다는 점에 유의하세요 .

답변2

NixOS가 소프트웨어를 설치하는 방식으로 인해 설치된 패키지와 같은 것이 없습니다.전체 시스템. 즉, 대부분의 패키지 관리자와는 다른 의미입니다.

그러나 사용자 환경(일명 프로필)을 다음과 동일하게 생각하면전체 시스템nix-store -q -R /nix/var/nix/profiles/system-${n}-link, 을 사용하여 특정 사용자 환경에 대한 종속성을 나열 할 수 있습니다 . 여기서는 ${n}구성 파일의 코드명입니다. 종속성의 의미는 직접 종속성과 간접 종속성을 의미합니다.

--tree또한 매개변수 대신을 사용하면 -RASCII 종속성 트리를 얻을 수 있습니다.

답변3

첫 번째 사용 사례에서는 다음을 사용할 수 있습니다.

nixos-rebuild dry-build

이 명령은 빌드되고 다운로드될 항목을 표시합니다. 빌드해야 할 새 패키지가 있는지 알고 싶다면 위 명령을 사용할 수 있습니다.

빌드되었지만 현재 활성화되지 않은 패키지에 대해서는 알려주지 않습니다. 전임자. Firefox를 추가하고 configuration.nix, 다시 빌드하고, Firefox를 제거하고, 다시 빌드하고, Firefox를 추가한 다음 위의 작업을 실행하면 새로 빌드할 항목이 없기 때문에 아무 것도 표시되지 않습니다. Nix는 가비지 수집 전까지 이전 패키지를 유지합니다.

nixos-rebuild dry-activate아무런 변경 없이 새로운 시스템을 구축하는 방법 도 있습니다 . 특정 서비스를 비활성화/활성화한 것과 같은 다른 변경 사항이 표시됩니다.

관련 정보