Nächste: guix refresh
aufrufen, Vorige: guix hash
aufrufen, Nach oben: Zubehör [Inhalt][Index]
guix import
aufrufenDer Befehl guix import
ist für Leute hilfreich, die ein Paket
gerne mit so wenig Arbeit wie möglich zur Distribution hinzufügen
würden – ein legitimer Anspruch. Der Befehl kennt ein paar Sammlungen,
aus denen mit ihm Paketmetadaten „importiert“ werden können. Das Ergebnis
ist eine Paketdefinition oder eine Vorlage dafür in dem uns bekannten Format
(siehe Pakete definieren).
Die allgemeine Syntax lautet:
guix import [Globale-Optionen…] Importer Paket [Optionen…]
Der Importer gibt die Quelle an, aus der Paketmetadaten importiert
werden, und die Optionen geben eine Paketbezeichnung und andere vom
Importer abhängige Daten an. guix import
verfügt selbst über
folgende Globale-Optionen:
--insert=Datei
-i Datei
Die vom Importer erzeugten Paketdefinitionen in die angegebene Datei schreiben, entweder in alphabetischer Reihenfolge unter bestehenden Paketdefinitionen oder andernfalls am Dateiende.
Manche Importer setzen voraus, dass der Befehl gpgv
ausgeführt
werden kann. Sie funktionieren nur, wenn GnuPG installiert und im
$PATH
enthalten ist; falls nötig können Sie guix install gnupg
ausführen.
Derzeit sind folgende „Importer“ verfügbar:
gnu
Metadaten für das angegebene GNU-Paket importieren. Damit wird eine Vorlage für die neueste Version dieses GNU-Pakets zur Verfügung gestellt, einschließlich der Prüfsumme seines Quellcode-Tarballs, seiner kanonischen Zusammenfassung und seiner Beschreibung.
Zusätzliche Informationen wie Paketabhängigkeiten und seine Lizenz müssen noch manuell ermittelt werden.
Zum Beispiel liefert der folgende Befehl eine Paketdefinition für GNU Hello:
guix import gnu hello
Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur Verfügung:
--key-download=Richtlinie
Die Richtlinie zum Umgang mit fehlenden OpenPGP-Schlüsseln beim Verifizieren
der Paketsignatur (auch „Beglaubigung“ genannt) festlegen, wie bei
guix refresh
. Siehe --key-download.
pypi
¶Metadaten aus dem Python Package Index
importieren. Informationen stammen aus der JSON-formatierten Beschreibung,
die unter pypi.python.org
verfügbar ist, und enthalten meistens alle
relevanten Informationen einschließlich der Abhängigkeiten des Pakets. Für
maximale Effizienz wird empfohlen, das Hilfsprogramm unzip
zu
installieren, damit der Importer „Python Wheels“ entpacken und daraus Daten
beziehen kann.
Der folgende Befehl importiert Metadaten für die neueste Version des
Python-Pakets namens itsdangerous
:
guix import pypi itsdangerous
Sie können auch um eine bestimmte Version bitten:
guix import pypi itsdangerous@1.1.0
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
gem
¶Metadaten von RubyGems
importieren. Informationen kommen aus der JSON-formatierten Beschreibung,
die auf rubygems.org
verfügbar ist, und enthält die relevantesten
Informationen einschließlich der Laufzeitabhängigkeiten. Dies hat aber auch
Schattenseiten – die Metadaten unterscheiden nicht zwischen
Zusammenfassungen und Beschreibungen, daher wird dieselbe Zeichenkette für
beides eingesetzt. Zudem fehlen Informationen zu nicht in Ruby geschriebenen
Abhängigkeiten, die benötigt werden, um native Erweiterungen zu in Ruby
geschriebenem Code zu erstellen. Diese herauszufinden bleibt dem
Paketentwickler überlassen.
Der folgende Befehl importiert Metadaten aus dem Ruby-Paket rails
.
guix import gem rails
Sie können auch um eine bestimmte Version bitten:
guix import gem rails@7.0.4
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
minetest
¶Importiert Metadaten aus der ContentDB. Informationen werden aus den JSON-formatierten Metadaten genommen, die über die Programmierschnittstelle („API“) von ContentDB angeboten werden, und enthalten die relevantesten Informationen wie zum Beispiel Abhängigkeiten. Allerdings passt das Ergebnis nicht ganz. Lizenzinformationen sind oft unvollständig. Der Commit-Hash fehlt manchmal. Die importierten Beschreibungen sind in Markdown formatiert, aber Guix braucht stattdessen Texinfo-Auszeichnungen. Texturpakete und Teilspiele werden nicht unterstützt.
Der folgende Befehl importiert Metadaten für die Mesecons-Mod von Jeija:
guix import minetest Jeija/mesecons
Man muss den Autorennamen nicht angeben:
guix import minetest mesecons
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
cpan
¶Importiert Metadaten von MetaCPAN. Informationen werden aus den JSON-formatierten Metadaten
genommen, die über die Programmierschnittstelle („API“) von MetaCPAN angeboten werden, und
enthalten die relevantesten Informationen wie zum Beispiel
Modulabhängigkeiten. Lizenzinformationen sollten genau nachgeprüft
werden. Wenn Perl im Store verfügbar ist, wird das Werkzeug corelist
benutzt, um Kernmodule in der Abhängigkeitsliste wegzulassen.
Folgender Befehl importiert Metadaten für das Perl-Modul Acme::Boolean:
guix import cpan Acme::Boolean
Like many other importers, the cpan
importer supports recursive
imports:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
cran
¶Metadaten aus dem CRAN importieren, der zentralen Sammlung für die statistische und grafische Umgebung GNU R.
Informationen werden aus der Datei namens DESCRIPTION des Pakets extrahiert.
Der folgende Befehl importiert Metadaten für das Cairo-R-Paket:
guix import cran Cairo
Sie können auch um eine bestimmte Version bitten:
guix import cran rasterVis@0.50.3
Wird zudem --recursive angegeben, wird der Importer den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für all die Pakete erzeugen, die noch nicht Teil von Guix sind.
Wird --style=specification angegeben, wird der Importer Paketdefinitionen erzeugen, deren Eingaben als Paketspezifikationen statt als Referenzen auf Paketvariable vorliegen. Das ist nützlich, wenn die erzeugten Paketdefinitionen in bestehende, nutzereigene Module eingefügt werden, weil dann die Liste der benutzten Paketmodule nicht angepasst werden muss. Die Vorgabe ist --style=variable.
Wird --prefix=license: angegeben, stellt der Importer jedem für
eine Lizenz stehenden Atom das Präfix license:
voran, damit
(guix licenses)
mit diesem Präfix importiert werden kann.
Wird --archive=bioconductor angegeben, werden Metadaten vom Bioconductor importiert, einer Sammlung von R-Paketen zur Analyse und zum Verständnis von großen Mengen genetischer Daten in der Bioinformatik.
Informationen werden aus der Datei namens DESCRIPTION im Archiv des Pakets extrahiert.
Der folgende Befehl importiert Metadaten für das R-Paket GenomicRanges:
guix import cran --archive=bioconductor GenomicRanges
Schließlich können Sie auch solche R-Pakete importieren, die noch nicht auf CRAN oder im Bioconductor veröffentlicht wurden, solange sie in einem Git-Repository stehen. Benutzen Sie --archive=git gefolgt von der URL des Git-Repositorys.
guix import cran --archive=git https://github.com/immunogenomics/harmony
texlive
¶Informationen über TeX-Pakete, die Teil der TeX-Live-Distribution sind, aus der Datenbank von TeX Live importieren.
Paketinformationen werden der Paketdatenbank von TeX Live entnommen. Bei ihr
handelt es sich um eine reine Textdatei, die im texlive-scripts
-Paket
enthalten ist. Der Quellcode wird von unter Umständen mehreren Stellen im
SVN-Repository des TeX-Live-Projekts heruntergeladen. Beachten Sie, dass
deswegen SVN installiert und in $PATH
zu finden sein muss; führen Sie
dazu gegebenenfalls guix install subversion
aus.
Der folgende Befehl importiert Metadaten für das TeX-Paket fontspec
:
guix import texlive fontspec
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
json
¶Paketmetadaten aus einer lokalen JSON-Datei importieren. Betrachten Sie folgende Beispiel-Paketdefinition im JSON-Format:
{ "name": "hello", "version": "2.10", "source": "mirror://gnu/hello/hello-2.10.tar.gz", "build-system": "gnu", "home-page": "https://www.gnu.org/software/hello/", "synopsis": "Hello, GNU world: An example GNU package", "description": "GNU Hello prints a greeting.", "license": "GPL-3.0+", "native-inputs": ["gettext"] }
Die Felder sind genauso benannt wie bei einem <package>
-Verbundstyp
(siehe Pakete definieren). Referenzen zu anderen Paketen stehen darin
als JSON-Liste von mit Anführungszeichen quotierten Zeichenketten wie
guile
oder guile@2.0
.
Der Importer unterstützt auch eine ausdrücklichere Definition der
Quelldateien mit den üblichen Feldern eines <origin>
-Verbunds:
{ … "source": { "method": "url-fetch", "uri": "mirror://gnu/hello/hello-2.10.tar.gz", "sha256": { "base32": "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i" } } … }
Der folgende Befehl liest Metadaten aus der JSON-Datei hello.json
und
gibt einen Paketausdruck aus:
guix import json hello.json
hackage
¶Metadaten aus Hackage, dem zentralen Paketarchiv der Haskell-Gemeinde, importieren. Informationen werden aus Cabal-Dateien ausgelesen. Darin sind alle relevanten Informationen einschließlich der Paketabhängigkeiten enthalten.
Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur Verfügung:
--stdin
-s
Eine Cabal-Datei von der Standardeingabe lesen.
--no-test-dependencies
-t
Keine Abhängigkeiten übernehmen, die nur von Testkatalogen benötigt werden.
--cabal-environment=Aliste
-e Aliste
Aliste muss eine assoziative Liste der Scheme-Programmiersprache sein,
die die Umgebung definiert, in der bedingte Ausdrücke von Cabal ausgewertet
werden. Dabei werden folgende Schlüssel akzeptiert: os
, arch
,
impl
und eine Zeichenkette, die dem Namen einer Option (einer „Flag“)
entspricht. Der mit einer „Flag“ assoziierte Wert muss entweder das Symbol
true
oder false
sein. Der anderen Schlüsseln zugeordnete Wert
muss mit der Definition des Cabal-Dateiformats konform sein. Der vorgegebene
Wert zu den Schlüsseln os
, arch
and impl
ist jeweils
‘linux’, ‘x86_64’ bzw. ‘ghc’.
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
Der folgende Befehl importiert Metadaten für die neuste Version des
Haskell-„HTTP“-Pakets, ohne Testabhängigkeiten zu übernehmen und bei
Übergabe von false
als Wert der Flag ‘network-uri’:
guix import hackage -t -e "'((\"network-uri\" . false))" HTTP
Eine ganz bestimmte Paketversion kann optional ausgewählt werden, indem man nach dem Paketnamen anschließend ein At-Zeichen und eine Versionsnummer angibt wie in folgendem Beispiel:
guix import hackage mtl@2.1.3.1
stackage
¶Der stackage
-Importer ist ein Wrapper um den
hackage
-Importer. Er nimmt einen Paketnamen und schaut dafür die
Paketversion nach, die Teil einer Stackage-Veröffentlichung mit Langzeitunterstützung (englisch „Long-Term
Support“, kurz LTS) ist, deren Metadaten er dann mit dem
hackage
-Importer bezieht. Beachten Sie, dass es Ihre Aufgabe ist,
eine LTS-Veröffentlichung auszuwählen, die mit dem von Guix benutzten
GHC-Compiler kompatibel ist.
Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur Verfügung:
--no-test-dependencies
-t
Keine Abhängigkeiten übernehmen, die nur von Testkatalogen benötigt werden.
--lts-version=Version
-l Version
Version ist die gewünschte Version der LTS-Veröffentlichung. Wird keine angegeben, wird die neueste benutzt.
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
Der folgende Befehl importiert Metadaten für dasjenige Haskell-„HTTP“-Paket, das in der LTS-Stackage-Veröffentlichung mit Version 7.18 vorkommt:
guix import stackage --lts-version=7.18 HTTP
elpa
¶Metadaten aus der Paketsammlung „Emacs Lisp Package Archive“ (ELPA) importieren (siehe Packages in The GNU Emacs Manual).
Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur Verfügung:
--archive=Repo
-a Repo
Mit Repo wird die Archiv-Sammlung (ein „Repository“) bezeichnet, von dem die Informationen bezogen werden sollen. Derzeit sind die unterstützten Repositorys und ihre Bezeichnungen folgende:
gnu
. Dies
ist die Vorgabe.
Pakete aus elpa.gnu.org
wurden mit einem der Schlüssel im
GnuPG-Schlüsselbund in share/emacs/25.1/etc/package-keyring.gpg (oder
einem ähnlichen Pfad) des emacs
-Pakets signiert (siehe ELPA-Paketsignaturen in The GNU Emacs Manual).
nongnu
.
melpa-stable
.
melpa
.
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
crate
¶Metadaten aus der Paketsammlung crates.io für Rust crates.io importieren, wie Sie in diesem Beispiel sehen:
guix import crate blake2-rfc
Mit dem Crate-Importer können Sie auch eine Version als Zeichenkette angeben:
guix import crate constant-time-eq@0.1.0
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
--recursive-dev-dependencies
Wenn Sie --recursive-dev-dependencies angeben, werden zudem auch die „dev-dependencies“ (Development Dependencies) von rekursiv importierten Paketen benutzt und importiert.
--allow-yanked
Wenn es keine nicht zurückgenommene („yanked“) Version einer Crate gibt, wird die neueste zurückgenommene benutzt statt abzubrechen.
elm
¶Metadaten aus der Paketsammlung package.elm-lang.org für Elm importieren, wie Sie in diesem Beispiel sehen:
guix import elm elm-explorations/webgl
Mit dem Elm-Importer können Sie auch eine Version als Zeichenkette angeben:
guix import elm elm-explorations/webgl@1.1.3
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
npm-binary
¶Import metadata from the npm Registry, as in this example:
guix import npm-binary buffer-crc32
The npm-binary importer also allows you to specify a version string:
guix import npm-binary buffer-crc32@1.0.0
Anmerkung: Generated package expressions skip the build step of the
node-build-system
. As such, generated package expressions often refer to transpiled or generated files, instead of being built from source.
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
opam
¶Metadaten aus der Paketsammlung OPAM der OCaml-Gemeinde importieren.
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
composer
¶Metadaten aus dem Paketarchiv Composer, das die PHP-Gemeinschaft verwendet, importieren.
guix import composer phpunit/phpunit
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
--repo
Vorgegeben ist, nach Paketen im offiziellen OPAM-Repository zu suchen. Mit dieser Befehlszeilenoption, die mehr als einmal angegeben werden kann, können Sie andere Repositorys hinzufügen, in denen nach Paketen gesucht wird. Als gültige Argumente akzeptiert werden:
opam
,
coq
(äquivalent zu coq-released
), coq-core-dev
,
coq-extra-dev
oder grew
.
opam repository add
erfordert (zum Beispiel wäre
https://opam.ocaml.org die URL, die dem Namen opam
oben
entspricht).
Die an diese Befehlszeilenoption übergebenen Repositorys sind in der
Reihenfolge Ihrer Präferenz anzugeben. Die zusätzlich angegebenen
Repositorys ersetzen nicht das voreingestellte Repository
opam
; es bleibt immer als letzte Möglichkeit stehen.
Beachten Sie ebenso, dass Versionsnummern mehrerer Repositorys nicht verglichen werden, sondern einfach das Paket aus dem ersten Repository (von links nach rechts), das mindestens eine Version des angeforderten Pakets enthält, genommen wird und die importierte Version der neuesten aus nur diesem Repository entspricht.
go
¶Metadaten für ein Go-Modul von proxy.golang.org importieren.
guix import go gopkg.in/yaml.v2
Es ist möglich, bei der Paketspezifikation ein Suffix @VERSION
anzugeben, um diese bestimmte Version zu importieren.
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
--pin-versions
Wenn Sie diese Option verwenden, behält der Importer genau diese Version der Go-Modul-Abhängigkeiten bei, statt die neuesten verfügbaren Versionen zu benutzen. Das kann hilfreich sein, wenn Sie versuchen, Pakete zu importieren, die für deren Erstellung rekursiv von alten Versionen ihrer selbst abhängen. Wenn Sie diesen Modus nutzen, wird das Symbol für das Paket durch Anhängen der Versionsnummer an seinen Namen gebildet, damit mehrere Versionen desselben Pakets gleichzeitig existieren können.
egg
¶Metadaten für CHICKEN-Eggs
importieren. Die Informationen werden aus den PAKET.egg-Dateien
genommen, die im Git-Repository eggs-5-all stehen. Jedoch gibt es dort nicht alle Informationen, die wir
brauchen: Ein Feld für die Beschreibung (description
) fehlt und die
benutzten Lizenzen sind ungenau (oft wird BSD angegeben statt BSD-N).
guix import egg sourcehut
Sie können auch um eine bestimmte Version bitten:
guix import egg arrays@1.0
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
hexpm
¶Metadaten aus der Paketsammlung hex.pm für Erlang und Elixir hex.pm importieren, wie Sie in diesem Beispiel sehen:
guix import hexpm stun
Der Importer versucht, das richtige Erstellungssystem für das Paket zu erkennen.
Mit dem hexpm-Importer können Sie auch eine Version als Zeichenkette angeben:
guix import hexpm cf@0.3.0
Zu den zusätzlichen Optionen gehören:
--recursive
-r
Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in Guix noch nicht gibt.
guix import
verfügt über eine modulare Code-Struktur. Mehr
Importer für andere Paketformate zu haben, wäre nützlich, und Ihre Hilfe ist
hierbei gerne gesehen (siehe Mitwirken).
Nächste: guix refresh
aufrufen, Vorige: guix hash
aufrufen, Nach oben: Zubehör [Inhalt][Index]