GNU Guix
![]() | |
Stabile Version | |
---|---|
Repository | |
Geschrieben in | Guile -Programm, C ++ (Nix Ader) |
Lizenz | GPLV3+ |
Webseite | Guix |
GNU Guix (/ɡichks/[3]) ist ein funktional plattformübergreifend Paket-Manager und ein Werkzeug zum Sofortieren und Verwalten Unix-artig Betriebssysteme basierend auf der Nix Package Manager. Konfigurations- und Paketrezepte sind in geschrieben Guile -Programm. GNU Guix ist der Standardpaketmanager des GNU -Guix -System Verteilung.[4]
Unterscheidet sich von traditionell PaketmanagerGuix (wie Nix) nutzt ein rein funktional Bereitstellungsmodell, bei dem Software in eindeutige Verzeichnisse installiert wird, die über generiert werden Kryptografische Hashes. Alle Abhängigkeiten für jede Software sind in jedem Hash enthalten.[5][6] Dies löst das Problem von Abhängigkeit Hölle,[7] Ermöglicht mehrere Versionen derselben Software zusammen koexistieren und machen Pakete tragbar und reproduzierbar. Die Durchführung wissenschaftlicher Berechnungen in einem Guix -Setup wurde als vielversprechende Antwort auf die vorgeschlagen Replikationskrise.[8]
Die Entwicklung von GNU Guix ist mit dem verflochten GNU -Guix -System,[9] eine installierbare Betriebssystemverteilung mit der Linux-Libre Kernel und Gnu Shepherd Init -System.[10][11][12]
Allgemeine Merkmale
Guix -Pakete werden durch definiert funktional Guile Scheme -APIs speziell für das Paketmanagement konzipiert. Die Abhängigkeiten werden direkt in dieser Sprache durch spezielle Werte, die als "Ableitungen" bezeichnet werden, verfolgt, die vom Guix -Daemon bewertet werden träge. Guix verfolgt diese Referenzen automatisch, damit installierte Pakete sein können Müll gesammelt Wenn kein anderes Paket von ihnen abhängt. Auf Kosten größerer Speicheranforderungen sind alle Upgrades in Guix garantiert beides Atomic und kann zurückgerollt werden. Die Roll-Back-Funktion von Guix wird aus dem Design von NIX geerbt und in keiner der nativen Paketmanager beliebter Linux-Verteilungen wie z. Debian und seine Derivate, Arch Linux und seine Derivate oder in anderen wichtigen Verteilungen wie Fedora, CentOS oder OpenSuse. Der Guix -Paketmanager kann jedoch in solchen Verteilungen verwendet werden und ist für DEBIAN und Parabola verfügbar.[13][14] Auf diese Weise können mehrere Benutzer Software ohne Administratorrechte sicher auf demselben System installieren.
Im Vergleich zu herkömmlichen Paketmanagern können Guix -Paketgeschäfte erheblich größer werden und erfordern daher mehr Bandbreite. Obwohl im Vergleich zu Container Lösungen (wie Docker), die auch häufig zur Lösung der Abhängigkeitshölle verwendet werden, ist Guix schlanker und entspricht Praktiken wie Wiederhole dich nicht und Einzelne Quelle der Wahrheit. Wenn der Benutzer sich dafür entscheidet, alles aus Quelle zu erstellen, ist noch größerer Speicherplatz und Bandbreite erforderlich.
Das Geschäft
Der größte Teil des Inhalts des Paketmanagers wird in einem Verzeichnis aufbewahrt /gnu/store wo nur der Guix-Daemon Schreibzugriff hat. Dies wird über spezialisierte Bindungshalterungen erreicht, in denen der Speicher als Dateisystem montiert ist schreibgeschützt, Verbot von Störungen sogar vom Stammbenutzer, während der Guix Dämon den Laden als Lesen/Schreiben in seinem eigenen privaten Namespace renoviert. Guix spricht mit diesem Daemon, um Dinge zu bauen oder Ersatzstoffe zu holen, die alle im Laden gehalten werden. Benutzer sind davon abgehalten, den Laden immer manuell zu berühren, indem sie ihn als beschreibbar neu montieren, da dies den gesamten Zweck des Geschäfts besiegt.
Müllsammlung
Guix - wie Nix - verfügt tot Speichern Sie Artikel und behalten Sie die live Einsen.[15]
Paketdefinitionen
Dies ist ein Beispiel für eine Paketdefinition für das Hello-Package:
(Definieren Sie öffentlich hallo (Paket (Name "hallo") (Ausführung "2.10") (Quelle (Ursprung (Methode URL-Fetch) (Uri (Zeichenfolge "Mirror: // gnu/Hallo/Hallo-" Ausführung ".Tar.gz")) (SHA256 (Basis32 "0SSI1WPAF7PLASWQQJWIGPPSG5FYH99VDLB9KZL7C9LNG89NDQ1I")))) (Bausystem GNU-Build-System) (Zusammenfassung "Hallo, GNU World: Ein Beispiel GNU -Paket") (Bezeichnung "Gnu Hallo druckt die Nachricht" Hallo, Welt! "Und dann verlässt. Es dient als Beispiel für Standard -GNU -Codierungspraktiken. Als solche unterstützt es Befehlszeilenargumente, mehrere Sprachen und so weiter. ") (Startseite "https://www.gnu.org/software/hello/") (Lizenz GPL3+)))
Es ist mit Guile geschrieben. Die Paketrezepte können problemlos untersucht werden (laufend, z. Guix bearbeiten Hallo) und in Guix geändert, wodurch das System transparent und sehr leicht hackbar ist.
Transaktions -Upgrades
Alle Manipulationen von Geschäftspositionen sind unabhängig voneinander geerbt, und die Verzeichnisse des Geschäfts beginnen mit einem Base32-kodierten Hash des Quellcodes der Ableitung zusammen mit seinen Eingaben.
Profile
Das GUIX -Paket verwendet Profilgenerationen, die eine Sammlung von Symlinks für bestimmte Speicherelemente zusammen sind, die zusammenschließen, was der Benutzer in das Profil installiert hat. Jedes Mal, wenn ein Paket installiert oder entfernt wird, wird eine neue Generation erstellt.
Z.B. Das Profil eines Benutzers, der nur GNU Hello installiert hat, enthält Links zu dem Store -Element, der die Version von Hello mit dem aktuell verwendeten Guix befindet.
Z.B. Auf Version C087A90E06D7B9451F802323E24DEB1862A21E0F von GUIX entspricht dies dem folgenden Element:/gnu/store/md2plii4g5SK66wg9cgwc964l3xwri9-Hello-2.10 (erbaut aus der Rezept.
Zusätzlich zu Symlinks enthält jeder Profil-Guix-Builds auch eine Vereinigung aller Informationen, Mannseiten, Symbole, Schriftarten usw., damit der Benutzer Dokumentation durchsuchen und Zugriff auf alle installierten Symbole und Schriftarten hat.
Die Standard -Symlinks zu Profilgenerationen werden unter gespeichert /var/guix im Dateisystem.
Mehrere Benutzerprofile
Der Benutzer kann eine beliebige Anzahl von Profilen erstellen, indem er aufgerufen wird GUIX -Paket -P -Profilname Befehl. Anschließend wird im aktuellen Verzeichnis ein neues Verzeichnis mit dem Profilnamen sowie der Profil-Generationssymlinks erstellt.
Roll-Back
Das Guix-Paket ermöglicht sofortige Roll-Back-Back zu einer früheren Profilgenerierung, indem der Symlink in eine frühere Profilgenerierung geändert wird.[16] Profile werden auch im Geschäft gespeichert, z. Dieses Element ist ein Profil mit Hallo oben:/gnu/store/b4wipjlsapvnijmbawl7SH76087VPL4N-Profil (gebaut und beim Laufen aktiviert Guix installieren Hallo).
Umfeld
Mit der Guix -Umgebung können der Benutzer einfach eine Umgebung eingeben, in der alle erforderlichen Pakete für die Entwicklung von Software vorhanden sind, ohne das Standardprofil des Benutzer mit Abhängigkeiten für mehrere Projekte zu verstopfen.[17]
Z.B. laufend Guix -Umgebung Hallo tritt in eine wegwerfbare Umgebung ein, in der alles zusammengestellt werden musste hallo auf Guix ist anwesend (GCC, Guile usw.).
Anhaltendes Entwicklungsumfeld
Wenn Sie eine anhaltende GC-Wurzelumgebung wünschen, die auf dem nächsten Lauf von Guix GC nicht Müll gesammelt wird, können Sie eine Wurzel erstellen:
Z.B. laufend Guix-Umgebung-Root = Hallo-Root Hallo Geben Sie eine Umgebung ein, in der alles, was zum Zusammenstellen von Guix erforderlich ist, vorhanden ist (GCC, Guile usw.) und im aktuellen Verzeichnis (durch Symbolung für die Artikel im Geschäft) als Stammgeld registriert wird.
Pack
Mit dem Guix -Paket kann der Benutzer speichern und als Docker -Binärbild, einen lockeren Tarball oder einen Squashfs -Binary ausgeben.[18]
Graph
Mit Guix -Diagramm können der Benutzer verschiedene Grafiken der Pakete und seiner Abhängigkeiten anzeigen.[19]
Guix -System (Betriebssystem)
GNU -Guix -System verwendet Guix als Paketmanager und Konfigurationssystem, ähnlich wie Nixos Verwendet Nix.
Geschichte
Das GNU -Projekt kündigte im November 2012 die erste Veröffentlichung von GNU Guix, einem funktionalen Paketmanager basierend auf Nix das liefert unter anderem, List Planen Apis.[20] Das Projekt wurde im Juni 2012 von Ludovic Courtès, einem der GNU -Guile -Hacker, gegründet.[21] Am 20. August 2015 wurde angekündigt, dass Guix auf portiert worden war Gnu Hurd.[22]
Veröffentlichungen
Das Projekt hat keinen Zeitplan für feste Veröffentlichungen und hat bis jetzt ungefähr alle 6 Monate veröffentlicht.
Ausführung | Bekanntmachung | Unterstützte Architekturen | Pakete |
---|---|---|---|
0,1 (Alpha) | Courtès, Ludovic (18. Januar 2013). "GNU Guix 0.1 veröffentlicht (Alpha)". | i686, x86_64 | ~ 150 |
0,2 (Alpha) | Courtès, Ludovic (12. Mai 2013). "GNU Guix 0.2 veröffentlicht (Alpha)". | ~ 400 | |
0,3 | Courtès, Ludovic (17. Juli 2013). "GNU Guix 0.3 veröffentlicht". | ~ 430 | |
0,4 | Courtès, Ludovic (27. September 2013). "GNU Guix 0.4 veröffentlicht". | ~ 490 | |
0,5 | Courtès, Ludovic (11. Dezember 2013). "GNU Guix 0.5 veröffentlicht". | ~ 600 | |
0,6 | Courtès, Ludovic (9. April 2014). "GNU Guix 0.6 veröffentlicht". | ~ 691 | |
0,7 | Courtès, Ludovic (25. Juli 2014). "GNU Guix 0.7 veröffentlicht". | ~ 825 | |
0,8 | Courtès, Ludovic (18. November 2014). "GNU Guix 0.8 veröffentlicht". | i686, x86_64, mips64el | ~ 987 |
0,8,1 | Courtès, Ludovic (29. Januar 2015). "GNU Guix 0.8.1 veröffentlicht". | i686, x86_64, MIPS64el, ARMV7 | ~ 1151 |
0,8,2 | Courtès, Ludovic (14. Mai 2015). "GNU Guix 0.8.2 veröffentlicht". | ~ 1869 | |
0,8,3 | Courtès, Ludovic (22. Juli 2015). "GNU Guix 0.8.3 veröffentlicht". | ~ 2048 | |
0.9.0 | Courtès, Ludovic (5. November 2015). "GNU Guix 0.9.0 veröffentlicht". | ~ 2591 | |
0,10.0 | Courtès, Ludovic (29. März 2016). "GNU Guix & Guixsd 0.10.0 veröffentlicht". | ~ 3230 | |
0.11.0 | Courtès, Ludovic (3. August 2016). "GNU Guix & Guixsd 0.11.0 veröffentlicht". | ~ 3714 | |
0,12.0 | Wurmus, Ricardo (21. Dezember 2016). "GNU Guix & Guixsd 0.12.0 veröffentlicht". | ~ 4567 | |
0,13.0 | Courtès, Ludovic (22. Mai 2017). "GNU Guix & Guixsd 0.13.0 veröffentlicht". | i686, x86_64, mips64el, armv7, aarch64 | ~ 5407 |
0,14,0 | Courtès, Ludovic (7. Dezember 2017). "GNU Guix & Guixsd 0.14.0 veröffentlicht". | ~ 6618 | |
0,15,0 | Courtès, Ludovic (6. Juli 2018). "GNU Guix & Guixsd 0.15.0 veröffentlicht". | ~ 7857 | |
0,16,0 | Courtès, Ludovic (6. Dezember 2018). "GNU Guix & Guixsd 0.16.0 veröffentlicht". | ~ 8715 | |
1.0.0 | Courtès, Ludovic (2. Mai 2019). "GNU Guix 1.0.0 veröffentlicht". | ~ 9712 | |
1.0.1 | Courtès, Ludovic (19. Mai 2019). "GNU Guix 1.0.1 veröffentlicht". | ~ 9771 | |
1.1.0 | Courtès, Ludovic (15. April 2020). "GNU Guix 1.1.0 veröffentlicht". | i686, x86_64, armv7, aarch64 | ~ 13161 |
1.2.0 | Courtès, Ludovic (23. November 2020). "GNU Guix 1.2.0 veröffentlicht". | ~ 15333 | |
1.3.0 | Courtès, Ludovic (11. Mai 2021). "GNU Guix 1.3.0 veröffentlicht". | i686, x86_64, powerpc64le, armv7, aarch64 | ~ 17262 |
Siehe auch
- GNU -Guix -System
- Debian GNU/Hurd
- Vergleich der Linux -Verteilungen
- Nixos - Ein ähnliches Betriebssystem, das GNU Guix inspirierte[23]
Verweise
- ^ "GNU Guix 1.3.0 veröffentlicht". 11. Mai 2021. Abgerufen 11. Mai 2021.
- ^ "GNU Guix 1.3.0 veröffentlicht". 11. Mai 2021. Abgerufen 11. Mai 2021.
- ^ "GNU Guix Referenzhandbuch". www.gnu.org. Abgerufen 23. April 2018.
- ^ Ludovic Courtès (2013). "Funktionaler Paketverwaltung mit Guix". Madrid, Spanien: Europäisches Lisp -Symposium.
- ^ Dolstra, E., de Jonge, M. und Visser, E. "NIX: Ein sicheres und politikfreies System für die Bereitstellung von Software." In Damon, L. (Hrsg.), 18. große Installationssystemverwaltungskonferenz (LISA '04), Seiten 79–92, Atlanta, Georgia, USA. Usenix, November 2004.
- ^ Dolstra, E. Das rein funktionale Software -Bereitstellungsmodell. Doktorarbeit, Fakultät für Wissenschaft, Utrecht, Niederlande. Januar 2006. ISBN90-393-4130-3.
- ^ Prins, P., Suresh, J. und Dolstra, E.,, "Nix behebt die Abhängigkeit Hölle auf allen Linux -Verteilungen", " Archiviert 26. Dezember 2008 bei der Wayback -Maschine Linux.com, 22. Dezember 2008
- ^ Konrad Hinsen. `` Inszenierte Berechnung: Die Technik, von der Sie nicht wussten, dass Sie verwendet wurden. doi: 10.1109/MCSE.2020.2985508. https://hal.archives-ouvertes.fr/hal-02877319
- ^ "Wie man Guix nennt?" (Mailingliste). Gnu-System-Discuss. 2015-01-15.
- ^ Programmierschnittstelle (GNU -Guix -Referenzhandbuch)
- ^ GUIX: Ein neuer Paketmanager & GNU -Vertrieb - Phoronix
- ^ "Guix-Europe". git.savannah.gnu.org. Abgerufen 16. Mai 2019.
- ^ "Guix - Debian Paket Tracker".
- ^ "Parabola GNU/Linux -Libre - Paketsuche". www.parabola.nu. Abgerufen 2021-09-14.
- ^ "Guix GC aufrufen". gnu.org. Abgerufen 16. Mai 2019.
- ^ "Guix -Paket aufrufen". gnu.org. Abgerufen 16. Mai 2019.
- ^ "Guix -Umgebung aufrufen". gnu.org. Abgerufen 16. Mai 2019.
- ^ "Guix Pack aufrufen". gnu.org. Abgerufen 16. Mai 2019.
- ^ "Guix -Diagramm aufrufen". gnu.org. Abgerufen 16. Mai 2019.
- ^ Courtès, Ludovic (2012-11-23). "GNU Guix einführen" (Mailingliste). Gnu-System-Discuss.
- ^ Stallman, Richard (2012-06-05). "Eine GNU -Verteilung" (Mailingliste). Gnu-System-Discuss.
- ^ Ragkousis, Manolis (20. August 2015). "[GSOC -Update] Portierung von Guix mit GNU/Hurd" (Mailingliste). Guix-devel. Abgerufen 20. August, 2015.
- ^ "Über - Guixsd". www.gnu.org. Abgerufen 2018-05-03.