Die Veröffentlichung des Paketmanagers GNU Guix 1.3 und der darauf basierenden GNU/Linux-Distribution ist erfolgt. FĂŒr den Download wurden Images erstellt, die fĂŒr die Installation auf USB-Sticks (610 MB) und die Nutzung in Virtualisierungssystemen (972 MB) geeignet sind. Es wird UnterstĂŒtzung fĂŒr die Architekturen i686, x86_64, Power9, armv7 und aarch64 geboten.
Die Distribution erlaubt die Installation sowohl als eigenstĂ€ndiges Betriebssystem in Virtualisierungssystemen, in Containern und auf herkömmlicher Hardware als auch die AusfĂŒhrung in bereits installierten GNU/Linux-Distributionen, wobei sie als Plattform fĂŒr die Bereitstellung von Anwendungen fungiert. Dem Benutzer stehen Funktionen wie AbhĂ€ngigkeitsmanagement, reproduzierbare Builds, root-freie Nutzung, RĂŒckroll auf frĂŒhere Versionen bei Problemen, Konfigurationsmanagement und das Klonen von Umgebungen (Erstellung einer genauen Kopie der Softwareumgebung auf anderen Computern) zur VerfĂŒgung.
Hauptneuheiten:
- Eine erste UnterstĂŒtzung fĂŒr die Architektur POWER9 (powerpc64le-linux) wurde implementiert.
- Die Verwendung eines deklarativen Bereitstellungsmodus wurde ermöglicht, bei dem anstelle einer Reihe von Befehlen wie âguix installâ und âguix removeâ nur der Befehl âguix package âmanifest=manifest.scmâ ausgefĂŒhrt wird, in dem im Manifest manifest.scm alle erforderlichen Anwendungen definiert sind. FĂŒr die Generierung eines Manifests auf Basis des vorhandenen Installationsprofils wurden die Optionen ââexport-manifestâ und ââexport-channelsâ im Befehl âguix packageâ angeboten.
- Die Option zur Transformation von Paketen ââwith-latestâ wurde hinzugefĂŒgt, die fĂŒr diejenigen nĂŒtzlich ist, die die neuesten Versionen von Programmen haben möchten, selbst wenn fĂŒr die Anwendung noch kein fertiges Guix-Paket erstellt wurde. AuĂerdem wurde die Option ââwith-patchâ hinzugefĂŒgt, um eine Reihe von Paketen mit einem Patch auf eins oder mehrere von ihnen zu erstellen.
- In den âguixâ-Befehlen wurde eine Ergebnisanzeige implementiert, die Empfehlungen mit VorschlĂ€gen fĂŒr Alternativen bei Tippfehlern oder vorhandenen Unterbefehlen bietet. $ guix package âexport-manifests guix package: Fehler: export-manifests: nicht erkannte Option Hinweis: Meinten Sie `export-manifestâ?
- In âguix refreshâ wurde die UnterstĂŒtzung fĂŒr das Herunterladen von Updates von SourceForge hinzugefĂŒgt, sowie ein generic-html-Modus, um Aktualisierungen von der Homepage des Projekts zu erhalten.
- Ein neuer Befehl âguix import goâ wurde hinzugefĂŒgt, um Pakete in Go rekursiv zu importieren, wobei AbhĂ€ngigkeiten berĂŒcksichtigt werden. Im Befehl âguix import opamâ wird die UnterstĂŒtzung fĂŒr Coq-Pakete realisiert. Im âguix import crateâ wird das semantische Versionsmanagement im rekursiven Lade-Modus berĂŒcksichtigt. Der Befehl âguix import nixâ wurde entfernt.
- Die Installation von vorgefertigten BinĂ€rpaketen (substitute) wurde optimiert und die AusfĂŒhrung des Befehls âguix system initâ beschleunigt.
- Dem Befehl âguix environmentâ wurde die Option ââprofileâ hinzugefĂŒgt.
- Im guix-daemon wurde die Option ââdiscoverâ zur Erkennung im lokalen Netzwerk hinzugefĂŒgt Server, die gesammelte BinĂ€rpakete (substitute) bereitstellt, indem mDNS/DNS-SD-Protokolle verwendet werden. FĂŒr die AnkĂŒndigung von Servern in dem Befehl âguix publishâ wurde die Option ââadvertiseâ hinzugefĂŒgt.
- Die Möglichkeit zur Nutzung des Zstd-Algorithmus zur Kompression von Paketen wurde implementiert.
- Im Modus ââverbosity=1â wurde die Ausgabe der geladenen URLs gestoppt.
- Anstelle der Unterbefehle âdisk-imageâ und âvm-imageâ wurde der allgemeine Befehl âguix system imageâ vorgeschlagen.
- Im Abbild des Distributionssystems fĂŒr virtuellen Maschinen wurde die UnterstĂŒtzung fĂŒr das SPICE-Protokoll hinzugefĂŒgt.
- Der Installationsskript enthĂ€lt jetzt einen Modus fĂŒr die automatische Installation.
- Der Dienst lvm-device-mapping wurde zur UnterstĂŒtzung des LVM (Linux Logical Volume Manager) hinzugefĂŒgt.
- Der Modus âguix system image -t rock64-rawâ wurde hinzugefĂŒgt, um Images fĂŒr Rock64-Platinen zu generieren.
- Im initrd ist die UnterstĂŒtzung fĂŒr bcachefs standardmĂ€Ăig aktiviert.
- Im Druckserver CUPS ist der Dienst âbrlaserâ standardmĂ€Ăig aktiviert, um Brother-Drucker zu unterstĂŒtzen.
- Neue Systemdienste wurden hinzugefĂŒgt: agate, cuirass-remote-worker, ipfs, keepalived, laminar, radicale, syncthing, transmission-daemon, wireguard, xorg-server.
- Die Versionen der Programme in 3100 Paketen wurden aktualisiert, 2009 neue Pakete hinzugefĂŒgt. Darunter wurden die Versionen gcc 10.3.0, glibc 2.31, GNOME 3.34.5, gnupg 2.2.27, go 1.14.15, guile 3.0.5, icecat 78.10.0-guix0-preview1, icedtea 3.7.0, inkscape 1.0.2, julia 1.5.3, libreoffice 6.4.7.2, linux-libre 5.11.15, ocaml 4.11.1, octave 6.2.0, openjdk 14.0, python 3.8.2, racket 8.0, rust 1.51.0, r 4.0.4, sbcl 2.1.3, Xfce 4.16.0 und xorg-server 1.20.10 aktualisiert.
- Die SicherheitsanfĂ€lligkeit CVE-2021-27851 im guix-daemon wurde behoben, die es einem lokalen Benutzer ermöglichte, seine Systemberechtigungen zu erhöhen. Das Problem ergab sich, weil das Build-Verzeichnis wĂ€hrend der AusfĂŒhrung des Befehls âguix buildâ fĂŒr alle schreibbar blieb. Ein Benutzer konnte eine harte VerknĂŒpfung zu einer Datei erstellen, die dem Benutzer root gehörte und auĂerhalb des Build-Verzeichnisses platziert war, beispielsweise â/etc/shadowâ. Wenn beim Bauen die Option ââkeep-failedâ angegeben wurde, Ă€nderte der guix-daemon im Falle eines Fehlers den EigentĂŒmer des gesamten Build-Baums auf den aktuellen Benutzer, einschlieĂlich der harten VerknĂŒpfungen.
Wir erinnern daran, dass der Paketmanager GNU Guix auf den Konzepten des Nix-Projekts basiert und neben den typischen Paketverwaltungsfunktionen auch Möglichkeiten wie transaktionale Updates, die Möglichkeit, Updates rĂŒckgĂ€ngig zu machen, den Betrieb ohne Superuser-Rechte, die UnterstĂŒtzung benutzerspezifischer Profile sowie die gleichzeitige Installation mehrerer Versionen eines Programms bietet. DarĂŒber hinaus enthĂ€lt er Werkzeuge zur Bereinigung von nicht mehr verwendeten Paketversionen. Zur Definition von Anwendungsbau-Szenarien und Paketbildungsregeln wird empfohlen, eine spezialisierte, hochgradig abstrahierte, domĂ€nenspezifische Sprache und Komponenten der Guile Scheme API zu verwenden, die alle Paketverwaltungsoperationen in der funktionalen Programmiersprache Scheme ermöglichen.
Es besteht die Möglichkeit, Pakete zu verwenden, die fĂŒr den Nix-Paketmanager erstellt und im Nixpkgs-Repository bereitgestellt wurden. Neben Paketoperationen ist auch die Erstellung von Skripten zur Verwaltung der Anwendungs-Konfiguration möglich. Bei der Paketkompilierung werden automatisch alle zugehörigen AbhĂ€ngigkeiten heruntergeladen und kompiliert. Sowohl die Bereitstellung fertiger BinĂ€rpakete aus dem Repository als auch die Kompilierung aus Quelltexten mit allen AbhĂ€ngigkeiten sind möglich. Es stehen zudem Werkzeuge zur VerfĂŒgung, um die Versionen der installierten Programme durch die Organisation der Aktualisierungsinstallation aus einem externen Repository aktuell zu halten.
Die Sammlung von Paketen wird als Container organisiert, der alle notwendigen Komponenten fĂŒr den Betrieb von Anwendungen enthĂ€lt. Dies ermöglicht die Bildung eines Paketsets, das unabhĂ€ngig von der Basisumgebung des verwendeten Distributionssystems funktioniert, in dem Guix als Schicht eingesetzt wird. Zwischen den Guix-Paketen können AbhĂ€ngigkeiten definiert werden; zur ĂberprĂŒfung bereits installierter AbhĂ€ngigkeiten erfolgt eine Suche anhand von Hash-Identifikatoren im Verzeichnis der installierten Pakete. Die Pakete werden in einem separaten Verzeichnisbaum oder einem Unterverzeichnis im Benutzerverzeichnis installiert, wodurch ein gleichzeitiges Nebeneinander mit anderen Paketmanagern ermöglicht wird und eine breite UnterstĂŒtzung fĂŒr verschiedene bestehende Distributionen gewĂ€hrleistet ist. Zum Beispiel wird ein Paket installiert unter /nix/store/452a5978f3b0b426064a2b64a0c6f41-firefox-88.0.0/, wobei â452a59âŠâ die eindeutige Identifikationsnummer des Pakets ist, die zur Verwaltung der AbhĂ€ngigkeiten verwendet wird.
Die Distribution umfasst ausschlieĂlich freie Komponenten und wird mit dem GNU Linux-Libre-Kernel ausgeliefert, der von nicht-freien Elementen, wie binĂ€ren Firmware-Teilen, befreit ist. FĂŒr die Erstellung kommt GCC 9.3 zum Einsatz. Als Init-System wird der Dienstmanager GNU Shepherd (ehemals dmd) verwendet, der als Alternative zu SysV-init mit AbhĂ€ngigkeitsunterstĂŒtzung entwickelt wurde. Der verwaltende Daemon und die Utilities von Shepherd sind in Guile (einer Implementierung von Scheme) geschrieben, welches ebenfalls zur Definition der Startparameter fĂŒr die Dienste verwendet wird. Das Basis-Image unterstĂŒtzt den Betrieb im Konsolenmodus, aber es sind 17.243 einsatzbereite Pakete vorbereitet, darunter auch Komponenten des Grafikstapels auf Basis von X.Org, die Fenstermanager dwm und ratpoison, der Desktop Xfce sowie eine Auswahl an grafischen Anwendungen.
Quelle: opennet.ru
