웹사이트 검색

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 3000130032 사이에 빌드 사용자와 그룹 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 패키지 관리 명령에 대해 설명하겠습니다. 그때까지는 연락을 유지하세요.