GNU Guix

GNU Guix
GNU Guix
Guix logo.svg
안정된 릴리스
1[1][2].3.0 / 2021년 5월 11일
저장소
기입처Guile Scheme, C++(Nix 코어)
면허증.GPLv3+
웹 사이트guix.gnu.org/en/

GNU Guix ( / i iksks [3]/ )는 기능적인 크로스 플랫폼 패키지 매니저이며 Nix 패키지 매니저를 기반으로 한 Unix와 유사한 운영 체제를 인스턴스화하고 관리하는 도구입니다.구성 및 패키지 레시피는 Guile Scheme에 기재되어 있습니다.GNU Guix는 GNU Guix 시스템 [4]배포의 기본 패키지 관리자입니다.

기존 패키지 매니저와는 달리 Guix(Nix와 마찬가지로)는 암호화 해시를 통해 생성된 고유 디렉토리에 소프트웨어를 설치하는 순수 기능 전개 모델을 사용합니다.각 소프트웨어의 모든 의존관계는 각 [5][6]해시 내에 포함됩니다.이것에 의해,[7] 의존 지옥의 문제가 해결되어 같은 소프트웨어의 복수의 버전이 공존할 수 있게 되어, 패키지가 휴대 가능하고 재현 가능하게 됩니다.Guix 설정에서 과학적 계산을 수행하는 것은 복제 [8]위기에 대한 유망한 대응으로 제안되었다.

GNU Guix의 개발은 Linux-libre 커널과 GNU Shepherd init [10][11][12]시스템을 사용하여 설치 가능한 운영 체제 배포인 GNU Guix [9]시스템과 관련되어 있습니다.

일반적인 기능

Guix 패키지는 패키지 관리를 위해 특별히 설계된 기능적인 Guile Scheme API를 통해 정의됩니다.종속성은 Guix 데몬에 의해 느긋하게 평가되는 "파생"이라고 불리는 특별한 값을 통해 이 언어로 직접 추적됩니다.Guix는 이러한 참조를 자동으로 추적하여 설치된 패키지가 가비지 수집될 수 있도록 합니다.Guix의 모든 업그레이드는 더 큰 스토리지 요구 사항을 감수하면서 원자성이 보장되고 롤백이 가능합니다.Guix의 롤백 기능은 Nix의 설계에서 계승되어 Debian과 그 파생 모델, Arch Linux와 그 파생 모델, 또는 Fedora, CentOS 또는 OpenSUSE와 같은 다른 주요 디스트리뷰션의 네이티브 패키지 매니저에는 없습니다.그러나 Guix 패키지 매니저는 이러한 배포에서 사용할 수 있으며 Debian 및 Parabola에서 [13][14]사용할 수 있습니다.이것에 의해, 복수의 유저가 관리자 권한 없이, 같은 시스템에 안전하게 소프트웨어를 인스톨 할 수도 있습니다.

기존 패키지 매니저에 비해 Guix 패키지 스토어는 상당히 커질 수 있기 때문에 대역폭이 더 필요합니다.의존성 문제를 해결하기 위해 일반적으로 사용되는 컨테이너 솔루션(Docker 등)에 비해 Guix는 더 얇고 반복하지 않기단일 진실 소스 의 관행에 준거합니다.사용자가 소스로부터 모든 것을 구축하려면 더 큰 스토리지 공간과 대역폭이 필요합니다.

가게

Nix의 설계로부터 계승된 패키지 매니저의 컨텐츠의 대부분은 Guix 데몬만이 기입 액세스 할 수 있는 디렉토리 /gnu/store에 보관되어 있습니다.이것은 파일 시스템으로 스토어가 읽기 전용으로 마운트되어 루트 사용자의 간섭도 금지되는 반면, Guix 데몬은 스토어를 자체 개인 네임스페이스에 읽기/쓰기 가능한 상태로 재마운트하는 특수한 바인드 마운트를 통해 이루어집니다.Guix는 이 데몬과 대화하여 가게에 보관되어 있는 물건을 만들거나 대체품을 가져옵니다.사용자는 쓰기 가능한 상태로 다시 마운트하여 스토어를 수동으로 만지지 않도록 합니다.이렇게 하면 스토어의 전체 용도가 무효화되기 때문입니다.

가비지 컬렉션

구익스(Nix)는 Nix와 마찬가지로 쓰레기 수거 시설을 내장하고 있어 죽은 물품의 제거살아있는 [15]물품의 보관을 지원합니다.

패키지 정의

다음 예에서는 hello 패키지의 패키지 정의 예를 보여 줍니다.

(정의 공개 안녕   (패키지    (이름. "안녕하세요")    (버전 "2.10")    (원천 (기원.             (방법 url-displicate(url-displicate))             (uri (현악기"mirror://hello/hello-" 버전                                 ".tar.gz"))             (sha256              (베이스32               "0ssi1wpaf7plaswqjwigppsg5 hh99vdlb9kzl7c9lng89ndq1i"))))    (빌드 시스템 gnu-build-system)    (개요 "안녕하세요, GNU 월드:GNU 패키지의 예")    (묘사     "GNU Hello는 "Hello, world!" "이후 종료됩니다.그것 는 표준 GNU 코딩 관행의 예로서 기능합니다.그 때문에, 서포트되고 있습니다. 명령줄 인수, 다국어 등입니다.")    (홈페이지 "https://www.gnu.org/software/hello/")    (면허증. gpl3+))) 

Guile을 사용해서 씁니다.패키지 레시피는 Guix에서 쉽게 검사(예를 들어 guix 편집 hello 실행)하고 변경할 수 있으므로 시스템이 투명하고 매우 쉽게 해킹할 수 있습니다.

트랜잭션 업그레이드

Nix의 설계로부터 계승된 스토어 아이템의 모든 조작은 서로 독립적이며 스토어의 디렉토리는 그 입력과 함께 파생 소스 코드의 base32 부호화된 해시로부터 시작한다.

프로필

Guix 패키지는 프로필 생성을 사용합니다. 프로필 생성은 사용자가 프로필에 설치한 항목을 구성하는 특정 저장소 항목에 대한 심볼 링크 모음입니다.패키지가 설치 또는 삭제될 때마다 새로운 세대가 구축됩니다.

예를 들어 GNU Hello만 설치한 사용자의 프로필에는 현재 사용되는 guix와 함께 설치된 hello 버전을 유지하는 스토어 항목에 대한 링크가 포함되어 있습니다.

예를 들어 guix 버전c087a90e06d7b9451f802323e24deb1862a21e0f에서는 /gnu/store/md2pliii4g5sk66wg9cgwc964l3xwhrm9-hello2.10(위 레시피에서 작성)에 대응합니다.

심볼링크와 더불어 각 프로파일 guix 빌드에는 모든 정보 매뉴얼, man-page, 아이콘, 글꼴 등의 조합이 포함되어 사용자가 문서를 참조하고 설치된 모든 아이콘 및 글꼴에 액세스할 수 있습니다.

프로필 생성에 대한 기본 심볼 링크는 파일 시스템의 /var/guix 아래에 저장됩니다.

여러 사용자 프로파일

사용자는 guix 패키지 -p PROFLE-NAME COMMAND를 호출하여 원하는 수의 프로파일을 생성할 수 있습니다.그 후 profile-name 및 profile-generation-symlinks를 가진 새 디렉토리가 현재 디렉토리에 생성됩니다.

롤백

Guix 패키지는 심볼 링크를 이전 프로파일 [16]세대로 변경하여 이전 프로파일 세대로 즉시 롤백할 수 있습니다.프로파일은 스토어에도 저장됩니다.예를 들어 이 아이템은 위의 hello를 포함하는 프로파일입니다./gnu/store/b4wipjlsapvnijmbawl7sh76087vpl4n-profile (guix install hello 실행 시 빌드 및 활성화됨).

환경

Guix 환경에서는 소프트웨어 개발에 필요한 패키지가 모두 존재하는 환경에 쉽게 진입할 수 있으며 여러 프로젝트에 [17]대한 의존관계로 인해 사용자의 기본 프로파일이 중단되지 않습니다.

예: running guix environment hello는 guix에서 hello를 컴파일하기 위해 필요한 모든 것(gcc, guile 등)이 존재하는 일회용 환경에 들어갑니다.

지속적 개발 환경

guix gc의 다음 실행 시 가비지가 수집되지 않은 영구 gc 루트 환경을 원하는 경우 루트를 생성할 수 있습니다.

예를 들어 실행 인 guix 환경 --root=hello hello는 guix 컴파일에 필요한 모든 것이 존재하는 환경(gcc, guile 등)에 들어가 현재 디렉토리에 루트로 등록됩니다(스토어 내의 항목에 심볼릭 링크).

포장하다

사용자는 Guix 팩을 사용하여 저장 항목을 묶어서 도커 바이너리 이미지, 재배치 가능한 타르볼 또는 스쿼시프 [18]바이너리로 출력할 수 있습니다.

그래프

Guix 그래프는 패키지 및 패키지의 [19]종속성에 대한 다양한 그래프를 볼 수 있도록 합니다.

Guix 시스템(운영 체제)

GNU Guix SystemNixOS가 Nix를 사용하는 방식과 마찬가지로 패키지 매니저 및 구성 시스템으로 Guix를 사용합니다.

역사

GNU Project는 2012년 11월 GNU Guix의 첫 번째 릴리스를 발표했습니다.GNU Guix는 Nix 기반의 기능 패키지 매니저로 Guile Scheme [20]API를 제공합니다.이 프로젝트는 GNU Guile 해커 중 한 명인 [21]Ludovic Courtés에 의해 2012년 6월에 시작되었습니다.2015년 8월 20일, Guix는 GNU Hurd[22]포팅되었다고 발표되었습니다.

릴리스

이 프로젝트는 출시 일정이 정해져 있지 않으며 현재까지 약 6개월마다 출시되고 있습니다.

버전 알리다 지원되는 아키텍처 패키지
0.1(알파) Courtès, Ludovic (18 January 2013). "GNU Guix 0.1 released (alpha)". i686, x86_64 ~150
0.2(알파) Courtès, Ludovic (12 May 2013). "GNU Guix 0.2 released (alpha)". ~400
0.3 Courtès, Ludovic (17 Jul 2013). "GNU Guix 0.3 released". ~430
0.4 Courtès, Ludovic (27 Sep 2013). "GNU Guix 0.4 released". ~490
0.5 Courtès, Ludovic (11 Dec 2013). "GNU Guix 0.5 released". ~600
0.6 Courtès, Ludovic (9 Apr 2014). "GNU Guix 0.6 released". ~691
0.7 Courtès, Ludovic (25 Jul 2014). "GNU Guix 0.7 released". ~825
0.8 Courtès, Ludovic (18 Nov 2014). "GNU Guix 0.8 released". i686, x86_64, mips64el ~987
0.8.1 Courtès, Ludovic (29 Jan 2015). "GNU Guix 0.8.1 released". i686, x86_64, mips64el, armv7 ~1151
0.8.2 Courtès, Ludovic (14 May 2015). "GNU Guix 0.8.2 released". ~1869
0.8.3 Courtès, Ludovic (22 Jul 2015). "GNU Guix 0.8.3 released". ~2048
0.9.0 Courtès, Ludovic (5 Nov 2015). "GNU Guix 0.9.0 released". ~2591
0.10.0 Courtès, Ludovic (29 Mar 2016). "GNU Guix & GuixSD 0.10.0 released". ~3230
0.11.0 Courtès, Ludovic (3 Aug 2016). "GNU Guix & GuixSD 0.11.0 released". ~3714
0.12.0 Wurmus, Ricardo (21 Dec 2016). "GNU Guix & GuixSD 0.12.0 released". ~4567
0.13.0 Courtès, Ludovic (22 May 2017). "GNU Guix & GuixSD 0.13.0 released". i686, x86_64, mips64el, armv7, arch64 ~5407
0.14.0 Courtès, Ludovic (7 Dec 2017). "GNU Guix & GuixSD 0.14.0 released". ~6618
0.15.0 Courtès, Ludovic (6 Jul 2018). "GNU Guix & GuixSD 0.15.0 released". ~7857
0.16.0 Courtès, Ludovic (6 Dec 2018). "GNU Guix & GuixSD 0.16.0 released". ~8715
1.0.0 Courtès, Ludovic (2 May 2019). "GNU Guix 1.0.0 released". ~9712
1.0.1 Courtès, Ludovic (19 May 2019). "GNU Guix 1.0.1 released". ~9771
1.1.0 Courtès, Ludovic (15 April 2020). "GNU Guix 1.1.0 released". i686, x86_64, armv7, aarch64 ~13161
1.2.0 Courtès, Ludovic (23 November 2020). "GNU Guix 1.2.0 released". ~15333
1.3.0 Courtès, Ludovic (11 May 2021). "GNU Guix 1.3.0 released". i686, x86_64, powerpc64le, armv7, arch64 ~17262

「 」를 참조해 주세요.

레퍼런스

  1. ^ "GNU Guix 1.3.0 released". 11 May 2021. Retrieved 11 May 2021.
  2. ^ "GNU Guix 1.3.0 released". 11 May 2021. Retrieved 11 May 2021.
  3. ^ "GNU Guix Reference Manual". www.gnu.org. Retrieved 23 April 2018.
  4. ^ Ludovic Courtès (2013). "Functional Package Management with Guix". Madrid, Spain: European Lisp Symposium.
  5. ^ Dolstra, E., de Jonge, M. 및 Visser, E. "Nix: 소프트웨어 도입을 위한 안전하고 정책 없는 시스템"L. Damon(Ed.)에서 제18회 대규모 설치 시스템 관리 회의(LISA '04) 79~92쪽, 미국 조지아주 애틀랜타, USENIX, 2004년 11월
  6. ^ 돌스트라, E순수하게 기능하는 소프트웨어 도입 모델.네덜란드 위트레흐트, 과학부 박사 학위 논문.2006년 1월ISBN 90-393-4130-3.
  7. ^ Prins, P., Suresh, J. 및 Dolstra, E., "Nix는 모든 Linux 디스트리뷰션 의존의 지옥을 수정한다" 2008년 12월 26일 Wayback Machine linux.com, 2008년 12월 22일 아카이브 완료
  8. ^ 콘라드 힌센"단계적 계산: 사용하는지 몰랐던 기술입니다."과학 및 엔지니어링 분야 컴퓨팅 22, 99-103(2020년).doi:10.1109/MCSE.2020.2985508.https://hal.archives-ouvertes.fr/hal-02877319
  9. ^ "What to call Guix?" (Mailing list). gnu-system-discuss. 2015-01-15.
  10. ^ 프로그래밍 인터페이스(GNU Guix 참조 설명서)
  11. ^ Guix: 새로운 패키지 매니저와 GNU 디스트리뷰션 - Phoronix
  12. ^ "guix-europe". git.savannah.gnu.org. Retrieved 16 May 2019.
  13. ^ "Guix - Debian Package Tracker".
  14. ^ "Parabola GNU/Linux-libre - Package Search". www.parabola.nu. Retrieved 2021-09-14.
  15. ^ "Invoking guix gc". gnu.org. Retrieved 16 May 2019.
  16. ^ "Invoking guix package". gnu.org. Retrieved 16 May 2019.
  17. ^ "Invoking guix environment". gnu.org. Retrieved 16 May 2019.
  18. ^ "Invoking guix pack". gnu.org. Retrieved 16 May 2019.
  19. ^ "Invoking guix graph". gnu.org. Retrieved 16 May 2019.
  20. ^ Courtès, Ludovic (2012-11-23). "Introducing GNU Guix" (Mailing list). gnu-system-discuss.
  21. ^ Stallman, Richard (2012-06-05). "A GNU Distribution" (Mailing list). gnu-system-discuss.
  22. ^ Ragkousis, Manolis (August 20, 2015). "[GSoC update] Porting Guix to GNU/Hurd" (Mailing list). guix-devel. Retrieved August 20, 2015.
  23. ^ "About — GuixSD". www.gnu.org. Retrieved 2018-05-03.

외부 링크