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 importer options…
importer spécifie la source depuis laquelle importer des métadonnées de paquets, et options spécifie un identifiant de paquet et d’autres options spécifiques à importer.
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 du paquet Python
itsdangerous
:
guix import pypi itsdangerous
--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
--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
Lorsque l’option --recursive est utilisée, l’importeur 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.
When --style=specification is added, the importer will generate package definitions whose inputs are package specifications instead of references to package variables. This is useful when generated package definitions are to be appended to existing user modules, as the list of used package modules need not be changed. The default is --style=variable.
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 métadonnées de CTAN, le réseau d’archive TeX complet pour les paquets TeX qui font partie de la distribution TeX Live.
Les informations sur les paquets sont obtenues à travers l’API XML fournie par CTAN, tandis que le code source est téléchargé depuis le dépôt SVN du projet Tex Live. Cette méthode est utilisée parce que CTAN ne garde pas d’archives versionnées.
La commande ci-dessous importe les métadonnées du paquet TeX fontspec
:
guix import texlive fontspec
Lorsque l’option --archive=directory est ajoutée, le code source n’est pas téléchargé depuis le sous-répertoire latex du l’arborescence texmf-dist/source dans le dépôt SVN de TeX Live, mais depuis le répertoire voisin directory spécifié sous la même racine.
La commande ci-dessous importe les métadonnées du paquet ifxetex
depuis CTAN en récupérant les sources depuis le répertoire
texmf/source/generic :
guix import texlive --archive=generic ifxetex
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
nix
Importe les métadonnées d’une copie locale des source de la distribution Nixpkgs21. Les définitions de paquets dans Nixpkgs sont habituellement écrites en un mélange entre le langage Nix et Bash. Cette commande n’importe que la structure de haut-niveau du paquet qui est écrite dans le langage Nix. Elle inclut normalement tous les champs de base de la définition d’un paquet.
Lorsque vous importez un paquet GNU, le synopsis et la description sont replacés par la version canonique en amont.
Normalement, vous devrez d’abord faire :
export NIX_REMOTE=daemon
pour que nix-instantiate
n’essaye pas d’ouvrir la base de données
de Nix.
Par exemple, la commande ci-dessous importe la définition du paquet de
LibreOffice (plus précisément, elle importe la définition du paquet lié à
l’attribut de plus haut-niveau libreoffice
) :
guix import nix ~/path/to/nixpkgs libreoffice
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).
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.
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.
--repo
Select the given repository (a repository name). Possible values include:
opam
, the default opam repository,
coq
or coq-released
, the stable repository for coq packages,
coq-core-dev
, the repository that contains development versions of coq,
coq-extra-dev
, the repository that contains development versions
of coq packages.
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]