Suivant: Invoquer guix refresh
, Précédent: Invoquer guix hash
, Monter: Utilitaires [Table des matières][Index]
guix import
La commande guix import
est utile pour les gens qui voudraient
ajouter un paquet à la distribution avec aussi peu de travail que possible —
une demande légitime. La commande connaît quelques dépôts logiciels d’où
elle peut « importer » des métadonnées de paquets. Le résultat est une
définition de paquet, ou un modèle de définition, dans le format reconnu par
Guix (voir Définition des paquets).
La syntaxe générale est :
guix import [global-options…] importer package [options…]
importer specifies the source from which to import package metadata,
and options specifies a package identifier and other options specific
to importer. guix import
itself has the following
global-options:
--insert=file
-i file
Insert the package definition(s) that the importer generated into the specified file, either in alphabetical order among existing package definitions, or at the end of the file otherwise.
Certains des importeurs s’appuient sur la capacité d’exécuter la commande
gpgv
. Pour ceux-ci, GnuPG doit être installé dans $PATH
;
exécuter guix install gnupg
si nécessaire.
Actuellement, les « importeurs » disponibles sont :
gnu
Importe des métadonnées d’un paquet GNU donné. Cela fournit un modèle pour la dernière version de ce paquet GNU, avec le hash de son archive, le synopsis et la description canonique.
Les informations supplémentaires comme les dépendances du paquet et sa licence doivent être renseignées manuellement.
Par exemple, la commande suivante renvoie une définition de paquets pour GNU Hello :
guix import gnu hello
Les options spécifiques sont :
--key-download=politique
Comme pour guix refresh
, spécifie la politique de gestion des
clefs OpenPGP manquantes lors de la vérification de la signature d’un
paquet. Voir --key-download
.
pypi
¶Importe des métadonnées depuis l’index des
paquets Python. Les informations sont récupérées à partir de la
description en JSON disponible sur pypi.python.org
et inclus
généralement toutes les informations utiles, dont les dépendances des
paquets. Pour une efficacité maximale, il est recommandé d’installer
l’utilitaire unzip
, pour que l’importateur puisse dézipper les
wheels Python et récupérer les informations contenues à l’intérieur.
La commande ci-dessous importe les métadonnées de la dernière version du
paquet Python itsdangerous
:
guix import pypi itsdangerous
Vous pouvez aussi demander une version spécifique :
guix import pypi itsdangerous@1.1.0
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
gem
¶Importe des métadonnées de RubyGems. Les
informations sont récupérées au format JSON disponible sur
rubygems.org
et inclut les informations les plus utiles, comme les
dépendances à l’exécution. Il y a des cependant quelques restrictions. Les
métadonnées ne distinguent pas synopsis et description, donc la même chaîne
est utilisée pour les deux champs. En plus, les détails des dépendances non
Ruby requises pour construire des extensions natives sont indisponibles et
laissé en exercice à l’empaqueteur.
La commande ci-dessous importe les métadonnées pour le paquet Ruby
rails
:
guix import gem rails
Vous pouvez aussi demander une version spécifique :
guix import gem rails@7.0.4
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
minetest
¶Importe des métadonnées de ContentDB. Les informations sont récupérées au format JSON disponible à travers l’API de ContentDB et inclus les informations les plus utiles, dont les dépendances. Il y a cependant quelques limitations. L’information de licence est souvent incomplète. Le hash de commit est parfois oublié. Les descriptions sont au format Markdown mais Guix utilise plutôt Texinfo. Les packs de textures et les jeux ne sont pas pris en charge.
La commande ci-dessous importe les métadonnées pour le mod Mesecons de Jeija :
guix import minetest Jeija/mesecons
Vous pouvez aussi ne pas indiquer le nom de l’auteur :
guix import minetest mesecons
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
cpan
¶Importe des métadonnées de MetaCPAN. Les
informations sont récupérées au format JSON disponible à travers
l’API de MetaCPAN et inclus les
informations les plus utiles, comme les dépendances des modules.
L’information sur les licences doit être vérifiée avec attention. Si Perl
est disponible dans le dépôt, alors l’utilitaire corelist
sera
utiliser pour exclure les modules du cœur de la distribution Perl de la
liste des dépendances.
La commande ci-dessous importe des métadonnées pour le module Acme ::Boolean Perl :
guix import cpan Acme::Boolean
cran
¶Importe des métadonnées de CRAN, le dépôt central de l’environnement statistique et graphique GNU R.
L’ information est extraite du fichier DESCRIPTION du paquet.
La commande ci-dessous importe les métadonnées du paquet Cairo R :
guix import cran Cairo
Vous pouvez aussi demander une version spécifique :
guix import cran rasterVis@0.50.3
Lorsque l’option --recursive est utilisée, l’importateur traversera le graphe des dépendances du paquet en amont récursivement et générera des expressions de paquets pour tous ceux qui ne sont pas déjà dans Guix.
Lorsque vous ajoutez --style=specification, l’importateur générera des définitions de paquets dont les entrées sont les spécifications des paquets au lieu de références au variables des paquets. C’est utile lorsque des définitions de paquets doivent être ajoutées à des modules utilisateurs, comme la liste des modules de paquets n’a pas besoin d’être changée. La valeur par défaut est --style=variable.
Lorsque vous ajoutez --prefix=license:, l’outil d’import ajoutera
license:
au début du nom des licences, ce qui permet d’importer
(guix licenses)
avec un préfixe.
Lorsque --archive=bioconductor est ajoutée, les métadonnées sont importées depuis Bioconductor, un répertoire de paquets R pour l’analyse et la compréhension de données génomiques volumineuses en bioinformatique.
Les informations sont extraites du fichier DESCRIPTION du paquet contenu dans l’archive du paquet.
La commande ci-dessous importe les métadonnées pour le paquet R GenomicRanges :
guix import cran --archive=bioconductor GenomicRanges
Enfin, vous pouvez aussi importer des paquets R qui n’ont pas encore été publiés sur CRAN ou Bioconductor tant qu’ils ne sont pas dans le dépôt Git. Utilisez --archive=git suivi par l’URL du dépôt Git :
guix import cran --archive=git https://github.com/immunogenomics/harmony
texlive
¶Importe les informations de paquets TeX à partir de la base de données TeX Live pour les paquets TeX qui font partie de la distribution TeX Live.
Information about the package is obtained from the TeX Live package
database, a plain text file that is included in the texlive-scripts
package. The source code is downloaded from possibly multiple locations in
the SVN repository of the Tex Live project. Note that therefore SVN must be
installed and in $PATH
; run guix install subversion
if needed.
La commande ci-dessous importe les métadonnées du paquet TeX
fontspec
:
guix import texlive fontspec
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
json
¶Importe des métadonnées d’un fichier JSON local. Considérez l’exemple suivant d’une définition de paquet au format JSON :
{ "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"] }
Les noms des champs sont les mêmes que pour les enregistrements de
<package>
(Voir Définition des paquets). Les référence à d’autres
paquets sont fournies comme des listes JSON de chaînes de spécifications de
paquets comme guile
ou guile@2.0
.
L’importateur supporte aussi une définition plus explicite des sources avec
les champs habituels pour les enregistrements <origin>
:
{ … "source": { "method": "url-fetch", "uri": "mirror://gnu/hello/hello-2.10.tar.gz", "sha256": { "base32": "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i" } } … }
La commande ci-dessous lit les métadonnées du fichier JSON hello.json
et renvoie une expression de paquet :
guix import json hello.json
hackage
¶Importe les métadonnées de l’archive de paquets centrale de la communauté Haskell, Hackage. Les informations sont récupérées depuis les fichiers Cabal et incluent toutes les informations utiles, dont les dépendances des paquets.
Les options spécifiques sont :
--stdin
-s
Lit un fichier Cabal depuis l’entrée standard.
--no-test-dependencies
-t
N’inclut pas les dépendances requises uniquement par les suites de tests.
--cabal-environment=alist
-e alist
alist est une alist Scheme qui définie l’environnement dans lequel les
conditions de Cabal sont évaluées. Les clefs acceptées sont : os
,
arch
, impl
et une représentation sous forme de chaîne de
caractères du nom d’un drapeau. La valeur associée à un drapeau doit être
le symbole true
ou false
. La valeur associée aux autres clefs
doivent se conformer avec la définition du format de fichiers Cabal. La
valeur par défaut associée avec les clefs os
, arch
et
impl
sont respectivement ‘linux’, ‘x86_64’ et ‘ghc’.
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
La commande ci-dessous importe les métadonnées pour la dernière version du
paquet HTTP Haskell sans inclure les dépendances de test et en spécifiant la
valeur du drapeau ‘network-uri’ comme false
:
guix import hackage -t -e "'((\"network-uri\" . false))" HTTP
Une version spécifique du paquet peut éventuellement être spécifiée en faisant suivre le nom du paquet par un arobase et un numéro de version comme dans l’exemple suivant :
guix import hackage mtl@2.1.3.1
stackage
¶L’importateur stackage
est une enveloppe autour de l’importateur
hackage
. Il prend un nom de paquet, recherche la version incluse
dans une version au support étendu (LTS) de Stackage et utilise l’importateur hackage
pour récupérer les
métadonnées. Remarquez que c’est à vous de choisir une version LTS
compatible avec le compilateur GHC utilisé par Guix.
Les options spécifiques sont :
--no-test-dependencies
-t
N’inclut pas les dépendances requises uniquement par les suites de tests.
--lts-version=version
-l version
version est la version LTS désirée. Si elle est omise, la dernière version est utilisée.
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
La commande ci-dessous importe les métadonnées pour le paquet HTTP Haskell inclus dans la version 7.18 de LTS Stackage :
guix import stackage --lts-version=7.18 HTTP
elpa
¶Importe les métadonnées du dépôt de paquets ELPA (Emacs Lisp Package Archive) (voir Packages dans The GNU Emacs Manual).
Les options spécifiques sont :
--archive=repo
-a repo
repo identifie le dépôt d’archive depuis lequel récupérer les informations. Actuellement les dépôts supportés et leurs identifiants sont :
gnu
. C’est la valeur par défaut.
Les paquets de elpa.gnu.org
avec l’une des clefs contenues dans le
porte-clef GnuPG share/emacs/25.1/etc/package-keyring.gpg (ou
similaire) dans le paquet emacs
(voir ELPA
package signatures dans The GNU Emacs Manual).
nongnu
.
melpa-stable
.
melpa
.
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
crate
¶Importer les métadonnées du dépôt de paquets Rust crates.io crates.io, comme dans cet exemple :
guix import crate blake2-rfc
L’importeur crate vous permet aussi de spécifier une version de chaînes de caractères :
guix import crate constant-time-eq@0.1.0
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
--recursive-dev-dependencies
If --recursive-dev-dependencies is specified, also the recursively imported packages contain their development dependencies, which are recursively imported as well.
--allow-yanked
If no non-yanked version of a crate is available, use the latest yanked version instead instead of aborting.
elm
¶Importer les métadonnées du dépôt de paquets Elm package.elm-lang.org, comme dans cet exemple :
guix import elm elm-explorations/webgl
L’importeur Elm vous permet aussi de spécifier une version de chaînes de caractères :
guix import elm elm-explorations/webgl@1.1.3
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
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
Remarque : 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.
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
opam
¶Importe les métadonnées du répertoire de paquets OPAM utilisé par la communauté OCaml.
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
composer
¶Import metadata from the Composer package archive used by the PHP community, as in this example:
guix import composer phpunit/phpunit
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
--repo
Par défaut on recherche les paquets dans le dépôt OPAM officiel. Cette option, qui peut être utilisée plusieurs fois en même temps, vous permet d’ajouter d’autres dépôts dans lesquelles on recherchera les paquets. Les arguments valide sont :
opam
,
coq
(équivalent à coq-released
), coq-core-dev
,
coq-extra-dev
ou grew
.
opam repository add
(par exemple, l’URL équivalent au nom
opam
plus haut serait https://opam.ocaml.org).
Les dépôts sont passés à cette commande par ordre de préférence. Les dépôts
supplémentaires ne remplaceront pas le dépôt opam
par défaut, qui est
toujours gardé en dernier recours.
Ainsi, remarquez que les versions ne sont pas comparées entre dépôts. Le premier dépôt (de gauche à droite) qui a au moins une version d’un paquet donné prendra le pas sur les autres, et la version importée sera la plus récente trouvée dans ce dépôt uniquement.
go
¶Importe les métadonnées d’un module Go avec proxy.golang.org.
guix import go gopkg.in/yaml.v2
Il est possible d’utiliser la spécification d’un paquet avec le suffixe
@VERSION
pour importer une version spécifique.
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
--pin-versions
Lorsque vous utilisez cette option, l’importateur préserve les versions exactes des modules Go de dépendance au lieu d’utiliser leur dernière version disponible. C’est utile si vous essayez d’importer un paquet qui dépend récursivement de versions antérieures de lui-même pour la construction. Lorsque vous utilisez ce mode, le symbole du paquet sera créé en ajoutant la version à son nom, pour que plusieurs version du même paquet puissent coexister.
egg
¶Importe les métadonnées pour des « eggs » CHICKEN. L’information est récupérée dans les fichiers PACKAGE.egg trouvés dans le dépôt git eggs-5-all. Toutefois, il ne fournit pas toutes les informations dont vous avez besoin, il n’y a pas de champ “description” et les licences utilisées ne sont pas toujours précises (BSD est souvent employée à la place de BSD-N).
guix import egg sourcehut
Vous pouvez aussi demander une version spécifique :
guix import egg arrays@1.0
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
hexpm
¶Importer les métadonnées du dépôt de paquets Erlang et Elixir hex.pm hex.pm, comme dans cet exemple :
guix import hexpm stun
L’importateur essaye de déterminer le système de construction utilisé par le paquet.
L’importeur hexpm vous permet aussi de spécifier une version de chaînes de caractères :
guix import hexpm cf@0.3.0
Les options supplémentaires comprennent :
--recursive
-r
Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.
La structure du code de guix import
est modulaire. Il serait
utile d’avoir plus d’importateurs pour d’autres formats de paquets et votre
aide est la bienvenue sur ce sujet (voir Contribuer).
Suivant: Invoquer guix refresh
, Précédent: Invoquer guix hash
, Monter: Utilitaires [Table des matières][Index]