Nix - Linux용 순수 기능 패키지 관리자
Nix는 안정적이고 재현 가능한 패키지 관리를 위해 설계된 강력하고 기능적인 패키지 관리 시스템으로 GNU LGPLv2.1의 조건에 따라 출시되었습니다. 덜 알려진 Linux 배포판인 NixOS의 기본 패키지 관리 시스템입니다.
Nix는 개발자가 사용하는 프로그래밍 언어와 도구에 관계없이 원자성 업그레이드 및 롤백, 여러 버전의 패키지 설치, 다중 사용자 패키지 관리 및 손쉬운 패키지 빌드 환경 설정을 제공합니다.
Nix에서 패키지는 'Nix 표현식'이라는 기능적 패키지 언어로 빌드됩니다. 패키지 관리에 대한 이러한 기능적 접근 방식은 한 패키지를 설치하거나 업그레이드하면 다른 패키지가 손상되지 않도록 보장합니다.
Nix에는 다중 사용자 지원도 있습니다. 이는 일반(또는 권한이 없는) 시스템 사용자가 패키지를 안전하게 설치할 수 있고 각 사용자가 프로필(사용자의 PATH에 나타나는 Nix 저장소의 패키지 모음)로 식별된다는 것을 의미합니다.
한 사용자가 패키지를 설치한 경우 다른 사용자가 동일한 패키지를 설치하려고 하면 해당 패키지가 두 번째로 빌드되거나 다운로드되지 않습니다.
현재 Linux(i686, x86_64) 및 Mac OS X(x86_64)를 지원합니다. 그러나 이식성이 상당히 높으므로 POSIX 스레드를 지원하고 C++11 컴파일러가 있는 대부분의 플랫폼에서 사용해 볼 수 있습니다.
이 문서에서는 Linux에서 Nix 패키지 관리자를 설치하고(다중 사용자 모드에서) 사용하는 방법을 보여줍니다. 일반적으로 사용되는 도구와 관련하여 몇 가지 기본 패키지 관리 작업에 대해 논의하겠습니다.
Linux에 Nix 패키지 관리자를 설치하는 방법
다중 사용자 모드에서는 최신 버전의 Nix(작성 당시 v2.1.3)를 설치합니다. 다행스럽게도 시스템에서 다음 컬 명령을 사용하여 일반 사용자로 셸에서 실행할 수 있는 준비된 설치 스크립트가 있습니다.
sh <(curl https://nixos.org/nix/install) --daemon
위 명령을 실행하면 최신 nix 바이너리 타르볼이 다운로드되고 스크린샷에 표시된 대로 다중 사용자 nix 설치 화면이 표시됩니다.
설치 과정에서 발생하는 상황에 대한 자세한 목록을 보려면 y
를 입력하고 Enter를 누르세요. 만족하고 계속할 준비가 되면 y
를 입력하고 Enter를 누르세요.
스크립트는 필요에 따라 sudo 명령을 여러 번 호출합니다. y
에 대답하고 Enter를 눌러 sudo 사용을 허용해야 합니다.
그런 다음 설치 프로그램은 몇 가지 테스트를 실행하고 Nix 구성 보고서를 생성하고 사용자 ID 30001과 30032 사이에 빌드 사용자와 그룹 ID가 인 그룹을 생성합니다. 30000. 메시지가 표시되면 계속하려면 y
를 입력하세요. 다양한 빌드 사용자를 위한 빌드 그룹을 설정하고 Nix의 기본 디렉토리 구조를 만듭니다.
/etc/bashrc 파일(및 zsh의 경우 /etc/zshrc)이 있는 경우 해당 파일을 수정합니다. 먼저 언급된 파일을 .backup-before-nix 확장자로 백업하고 설치 프로그램이 /etc/profile.d/nix.sh 파일도 생성합니다.
또한 설치 프로그램은 nix-daemon 서비스 및 nix-daemon 소켓 서비스를 설정하고 nix-daemon용 systemd 장치를 로드한 다음 앞서 언급한 두 서비스를 시작합니다.
설치가 완료되면 Nix 사용을 시작하려면 새 터미널 창을 열어야 합니다. 또는 셸을 닫았다가 다시 열어 최근 변경 사항을 적용하세요. 그런 다음 /etc/profile.d/nix.sh 파일을 소스로 지정합니다(이 파일은 쉘 시작 파일이 아니기 때문에 새 쉘을 열면 소스가 소스가 되지 않습니다).
source /etc/profile.d/nix.sh
그런 다음, 다음 명령을 실행하여 공식 프로젝트 웹사이트에서 Nix 작동에 필요한 일부 경로를 다운로드합니다. 모든 경로가 다운로드되어 올바른 위치에 복사되면 스크린샷에 표시된 대로 시스템 및 nix 설치 유형 요약이 표시됩니다.
nix-shell -p nix-info --run "nix-info -m"
Linux에서 Nix 패키지 관리자를 사용하는 방법
Nix에서 패키지 관리는 nix-env 유틸리티에 의해 수행됩니다. 패키지를 설치, 업그레이드, 제거/삭제하고, 어떤 패키지가 설치되어 있거나 설치 가능한지 쿼리하는 데 사용됩니다.
모든 패키지는 Nix 표현식 모음과 바이너리 캐시에 대한 포인터로 구성된 저장소를 가리키는 URL인 Nix 채널에 있습니다.
기본 채널은 Nixpkgs이고 구독 채널 목록은 ~/.nix-channels에 저장됩니다. 다음 명령을 사용하여 나열할 수 있습니다(출력이 없으면 채널이 없음을 의미함). .
nix-channel --list
Nix 채널을 추가하려면 다음 명령을 사용하십시오.
nix-channel --add https://nixos.org/channels/nixpkgs-unstable
패키지를 설치하기 전에 먼저 Nix 채널을 업데이트하세요. 이는 APT 패키지 관리자에서 apt update를 실행하는 것과 유사합니다.
nix-channel --update
다음 명령을 사용하면 설치에 사용할 수 있는 패키지를 쿼리할 수 있습니다.
nix-env -qa
이 예에서는 이전 명령을 grep과 함께 사용하여 Apache Tomcat 서버를 설치하여 표시된 대로 설치할 수 있는 패키지를 찾습니다.
nix-env -qa | grep "apache-tomcat"
패키지를 설치하려면 패키지 버전을 지정하여 다음 명령을 사용합니다(예: apache-tomcat-9.0.2).
nix-env -i apache-tomcat-9.0.2
로컬 시스템에서 Nix는 기본적으로 /nix/store 디렉토리인 Nix 스토어에 패키지를 저장하며, 각 패키지에는 고유한 하위 디렉토리가 있습니다. 예를 들어 apache-tomcat 패키지는 다음 위치에 저장됩니다.
/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2
이 경로에서 임의 문자 95gmgnxlrcpkhlm00fa5ax8kvd6189py는 모든 종속성을 고려하는 패키지의 고유 식별자입니다.
다음 명령을 사용하여 설치된 패키지를 나열할 수 있습니다.
nix-env -q
apache-tomcat 패키지를 업그레이드하려면 표시된 대로 -u
업그레이드 스위치를 사용할 수 있습니다.
nix-env -u apache-tomcat
apache-tomcat을 제거/삭제하려면 -e
플래그를 사용하세요. 여기서 패키지는 시스템에서 즉시 삭제되지 않으며 사용되지 않는 상태로만 렌더링됩니다. 이는 롤백을 원하거나 다른 사용자의 프로필에 있을 수 있으므로 유용합니다.
nix-env -e apache-tomcat
패키지를 제거한 후 nix-collect-garbage 유틸리티를 사용하여 일부 가비지 수집을 수행할 수 있습니다.
nix-collect-garbage
Linux에서 Nix 패키지 관리자를 제거하는 방법
Nix를 제거하려면 모든 nix 관련 파일을 한 번에 제거하십시오.
sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels
systemd가 있는 시스템에서는 다음 명령을 실행하여 모든 nix 관련 서비스를 중지하고 비활성화합니다.
sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload
또한 /etc/profile, /etc/bashrc 및 /etc/zshrc 파일에서 Nix에 대한 참조를 모두 제거해야 합니다. >.
자세한 내용은 위에서 살펴본 유틸리티의 매뉴얼 페이지를 참조하십시오.
man nix-channel
man nix-env
프로젝트 웹사이트(https://nixos.org/nix/)에서 Nix 패키지 관리자 설명서를 찾을 수 있습니다.
요약
Nix는 안정적이고 재현 가능한 패키지 관리를 위해 설계된 순수 기능 패키지 관리자입니다. 이는 YUM, APT 등과 같이 Linux에서 일반적으로 사용되는 도구와는 매우 다른 흥미로운 패키지 관리 개념을 제공합니다.
이 기사에서는 다중 사용자 모드에서 nix를 설치하는 방법을 보여주고 Nix를 사용하여 패키지 관리를 수행하는 방법에 대해 논의했습니다. 귀하의 생각을 우리와 공유하거나 아래 의견 양식을 통해 질문하십시오. 마지막으로 다음 기사에서는 더 많은 Nix 패키지 관리 명령에 대해 설명하겠습니다. 그때까지는 연락을 유지하세요.