Nächste: guix package
aufrufen, Nach oben: Paketverwaltung [Inhalt][Index]
Wir nehmen hier an, dass Sie schon Ihre ersten Erfahrungen mit Guix gemacht haben (siehe Einstieg in Guix) und gerne einen Überblick darüber bekommen würden, wie Guix im Detail funktioniert.
Wenn Sie Guix benutzen, landet jedes Paket schließlich im Paket-Store
in seinem eigenen Verzeichnis – der Name ist ähnlich wie
/gnu/store/xxx-package-1.2, wobei xxx
eine Zeichenkette in
Base32-Darstellung ist.
Statt diese Verzeichnisse direkt anzugeben, haben Nutzer ihr eigenes
Profil, welches auf diejenigen Pakete zeigt, die sie tatsächlich
benutzen wollen. Diese Profile sind im Persönlichen Verzeichnis des
jeweiligen Nutzers gespeichert als $HOME/.guix-profile
.
Zum Beispiel installiert alice
GCC 4.7.2. Dadurch zeigt dann
/home/alice/.guix-profile/bin/gcc auf
/gnu/store/…-gcc-4.7.2/bin/gcc. Auf demselben Rechner hat bob
bereits GCC 4.8.0 installiert. Das Profil von bob
zeigt dann einfach
weiterhin auf /gnu/store/…-gcc-4.8.0/bin/gcc – d.h. beide
Versionen von GCC koexistieren auf demselben System, ohne sich zu stören.
Der Befehl guix package
ist das zentrale Werkzeug, um Pakete zu
verwalten (siehe guix package
aufrufen). Es arbeitet auf dem eigenen
Profil jedes Nutzers und kann mit normalen Benutzerrechten ausgeführt
werden.
Der Befehl stellt die offensichtlichen Installations-, Entfernungs- und
Aktualisierungsoperationen zur Verfügung. Jeder Aufruf ist tatsächlich eine
eigene Transaktion: Entweder die angegebene Operation wird
erfolgreich durchgeführt, oder gar nichts passiert. Wenn also der Prozess
von guix package
während der Transaktion beendet wird, oder es zum
Stromausfall während der Transaktion kommt, dann bleibt der alte, nutzbare
Zustands des Nutzerprofils erhalten.
Zudem kann jede Pakettransaktion zurückgesetzt werden (Rollback). Wird also zum Beispiel durch eine Aktualisierung eine neue Version eines Pakets installiert, die einen schwerwiegenden Fehler zur Folge hat, können Nutzer ihr Profil einfach auf die vorherige Profilinstanz zurücksetzen, von der sie wissen, dass sie gut lief. Ebenso unterliegt bei Guix auch die globale Systemkonfiguration transaktionellen Aktualisierungen und Rücksetzungen (siehe Das Konfigurationssystem nutzen).
Alle Pakete im Paket-Store können vom Müllsammler (Garbage Collector)
gelöscht werden. Guix ist in der Lage, festzustellen, welche Pakete noch
durch Benutzerprofile referenziert werden, und entfernt nur diese, die
nachweislich nicht mehr referenziert werden (siehe guix gc
aufrufen). Benutzer können auch ausdrücklich alte Generationen ihres Profils
löschen, damit die zugehörigen Pakete vom Müllsammler gelöscht werden
können.
Guix verfolgt einen rein funktionalen Ansatz bei der Paketverwaltung, wie er in der Einleitung beschrieben wurde (siehe Einführung). Jedes Paketverzeichnis im /gnu/store hat einen Hash all seiner bei der Erstellung benutzten Eingaben im Namen – Compiler, Bibliotheken, Erstellungs-Skripts etc. Diese direkte Entsprechung ermöglicht es Benutzern, eine Paketinstallation zu benutzen, die sicher dem aktuellen Stand ihrer Distribution entspricht. Sie hilft auch dabei, die Reproduzierbarkeit der Erstellungen zu maximieren: Dank den isolierten Erstellungsumgebungen, die benutzt werden, resultiert eine Erstellung wahrscheinlich in bitweise identischen Dateien, auch wenn sie auf unterschiedlichen Maschinen durchgeführt wird (siehe Container).
Auf dieser Grundlage kann Guix transparent Binär- oder Quelldateien
ausliefern. Wenn eine vorerstellte Binärdatei für ein
/gnu/store-Objekt von einer externen Quelle verfügbar ist – ein
Substitut –, lädt Guix sie einfach herunter und entpackt sie,
andernfalls erstellt Guix das Paket lokal aus seinem Quellcode (siehe
Substitute). Weil Erstellungsergebnisse normalerweise Bit für Bit
reproduzierbar sind, müssen die Nutzer den Servern, die Substitute anbieten,
nicht blind vertrauen; sie können eine lokale Erstellung erzwingen und
Substitute anfechten (siehe guix challenge
aufrufen).
Kontrolle über die Erstellungsumgebung ist eine auch für Entwickler
nützliche Funktionalität. Der Befehl guix shell
ermöglicht es
Entwicklern eines Pakets, schnell die richtige Entwicklungsumgebung für ihr
Paket einzurichten, ohne manuell die Abhängigkeiten des Pakets in ihr Profil
installieren zu müssen (siehe guix shell
aufrufen).
Ganz Guix und all seine Paketdefinitionen stehen unter Versionskontrolle und
guix pull
macht es möglich, auf dem Verlauf der Entwicklung von
Guix selbst „in der Zeit zu reisen“ (siehe guix pull
aufrufen). Dadurch kann eine Instanz von Guix auf einer anderen Maschine oder
zu einem späteren Zeitpunkt genau nachgebildet werden, wodurch auch
vollständige Software-Umgebungen gänzlich nachgebildet werden können,
mit genauer Provenienzverfolgung, wo diese Software herkommt.
Nächste: guix package
aufrufen, Nach oben: Paketverwaltung [Inhalt][Index]