Nächste: Den Testkatalog laufen lassen, Vorige: Voraussetzungen, Nach oben: Mitwirken [Inhalt][Index]
Wenn Sie an Guix selbst hacken wollen, ist es empfehlenswert, dass Sie die neueste Version aus dem Git-Softwarebestand verwenden:
git clone https://git.savannah.gnu.org/git/guix.git
Doch wie können Sie sichergehen, dass sie eine unverfälschte Kopie des
Repositorys erhalten haben? Dazu müssen Sie guix git authenticate
ausführen, wobei Sie den Commit und den OpenPGP-Fingerabdruck der
Kanaleinführung angeben (siehe guix git authenticate
aufrufen):
git fetch origin keyring:keyring guix git authenticate 9edb3f66fd807b096b48283debdcddccfea34bad \ "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"
Dieser Befehl gibt bei Erfolg am Ende null als Exit-Status zurück, ansonsten wird eine Fehlermeldung ausgegeben und ein anderer Exit-Status zurückgegeben.
Wie Sie sehen können, liegt hier ein Henne-Ei-Problem vor: Sie müssen Guix zuvor bereits installiert haben. Üblicherweise würden Sie Guix System erst auf einem anderen System installieren (siehe Systeminstallation) oder Guix auf einer anderen Distribution installieren (siehe Aus Binärdatei installieren); in beiden Fällen würden Sie die OpenPGP-Signatur auf dem Installationsmedium prüfen. Damit haben Sie ein „Bootstrapping“ der Vertrauenskette durchgeführt.
Der einfachste Weg, eine Entwicklungsumgebung für Guix einzurichten, ist natürlich, Guix zu benutzen! Der folgende Befehl startet eine neue Shell, in der alle Abhängigkeiten und Umgebungsvariablen bereits eingerichtet sind, um an Guix zu arbeiten:
guix shell -D guix -CPW
Oder kürzer, aus einem Git-Arbeitsverzeichnis von Guix heraus:
guix shell -CPW
Wenn -C (die Kurzform von --container) auf Ihrem System
nicht unterstützt wird, können Sie --pure
statt -CPW
schreiben. Siehe guix shell
aufrufen für mehr Informationen, was Sie
mit diesem Befehl tun.
Wenn Sie Guix nicht benutzen können, wenn Sie es aus einem Checkout erstellen, werden die folgenden Pakete zusätzlich zu denen benötigt, die in den Installationsanweisungen angegeben sind (siehe Voraussetzungen).
Auf Guix können zusätzliche Abhängigkeiten hinzugefügt werden, indem Sie
stattdessen guix shell
ausführen:
guix shell -D guix help2man git strace --pure
Damit können Sie die Infrastruktur des Erstellungssystems mit Autoconf und Automake erzeugen.
./bootstrap
Möglicherweise erhalten Sie eine Fehlermeldung wie diese:
configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES
Das bedeutet wahrscheinlich, dass Autoconf pkg.m4 nicht finden konnte, welches von pkg-config bereitgestellt wird. Stellen Sie sicher, dass pkg.m4 verfügbar ist. Gleiches gilt für den von Guile bereitgestellten Makrosatz guile.m4. Wenn Sie beispielsweise Automake in /usr/local installiert haben, würde in /usr/share nicht nach .m4-Dateien geschaut. In einem solchen Fall müssen Sie folgenden Befehl aufrufen:
export ACLOCAL_PATH=/usr/share/aclocal
In Macro Search Path in The GNU Automake Manual finden Sie weitere Informationen.
Anschließend führen Sie dies aus:
./configure
Optional können auch --localstatedir
und --sysconfdir
als
Argumente angegeben werden. Vorgegeben ist, dass /var als
localstatedir
-Wert benutzt wird (weitere Informationen siehe Der Store) und /etc für sysconfdir
. Denken Sie daran, dass Sie am
Ende wahrscheinlich nicht make install
ausführen möchten
(müssen Sie auch nicht), aber es ist dennoch wichtig, die richtige
localstatedir
und sysconfdir
zu übergeben, welche im
Guile-Modul (guix config)
festgehalten werden.
Schließlich können Sie Guix erstellen und, wenn Sie möchten, die Tests ausführen (siehe Den Testkatalog laufen lassen):
make make check
Falls etwas fehlschlägt, werfen Sie einen Blick auf die Installationsanweisungen (siehe Installation) oder senden Sie eine E-Mail an die Mailingliste.
Von da an können Sie alle Commits in Ihrem Checkout authentifizieren, indem Sie dies ausführen:
guix git authenticate \ 9edb3f66fd807b096b48283debdcddccfea34bad \ "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"
The first run takes a couple of minutes, but subsequent runs are faster. On subsequent runs, you can run the command without any arguments since the introduction (the commit ID and OpenPGP fingerprints above) will have been recorded44:
guix git authenticate
Für den Fall, dass die Konfiguration Ihres lokal verfügbaren Git-Repositorys
nicht der voreingestellten entspricht, können Sie die Referenz für den
keyring
-Branch über die Option -k angeben. Im folgenden
Beispiel nehmen wir an, Sie haben ein Remote-Repository namens
‘myremote’ eingerichtet, das auf das offizielle Guix-Repository
verweist:
guix git authenticate \ -k myremote/keyring \ 9edb3f66fd807b096b48283debdcddccfea34bad \ "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"
Siehe guix git authenticate
aufrufen für weitere Informationen zu
diesem Befehl.
Anmerkung: By default, hooks are installed such that
guix git authenticate
is invoked anytime you rungit pull
orgit push
.
Wenn Sie das Repository einmal aktualisieren, kann es passieren, dass
make
mit einer Fehlermeldung ähnlich wie dieser fehlschlägt:
error: failed to load 'gnu/packages/linux.scm': ice-9/eval.scm:293:34: In procedure abi-check: #<record-type <origin>>: record ABI mismatch; recompilation needed
Das bedeutet, dass sich einer der in Guix definierten Verbundstypen (in
diesem Beispiel der origin
-Verbundstyp) geändert hat und alle Teile
von Guix für diese Änderung neu kompiliert werden müssen. Um das zu
veranlassen, führen Sie make clean-go
aus, gefolgt von
make
.
Falls make
mit einer Automake-Fehlermeldung fehlschlägt, nachdem
Sie aktualisiert haben, müssen Sie die in diesem Abschnitt geschilderten
Schritte wiederholen, angefangen mit ./bootstrap
.
Nächste: Den Testkatalog laufen lassen, Vorige: Voraussetzungen, Nach oben: Mitwirken [Inhalt][Index]