Suivant: , Précédent: , Monter: Utilitaires   [Table des matières][Index]


7.5 Invoquer 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 specifies the source from which to import package metadata, and options specifies a package identifier and other options specific to importer.

Some of the importers rely on the ability to run the gpgv command. For these, GnuPG must be installed and in $PATH; run guix install gnupg if needed.

Currently, the available “importers” are:

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 les métadonnées du module Perl Acme::Boolean :

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.

Les informations sont extraites du fichier DESCRIPTION du paquet.

La commande ci-dessous importe les métadonnées du paquet R Cairo :

guix import cran Cairo

Lorsque l’option --recursive est utilisée, l’importateur traversera le graphe des dépendances du paquet amont récursivement et générera des expressions de paquets pour tous ceux qui ne sont pas déjà dans Guix.

Lorsque l’option --archive=bioconductor est utilisée, les métadonnées sont importées de Bioconductor, un répertoire de paquets R pour l’analyse et la compréhension de données génomiques volumineuses en bioinformatique.

Information is extracted from the DESCRIPTION file contained in the package archive.

La commande ci-dessous importe les métadonnées du paquet R GenomicRanges :

guix import cran --archive=bioconductor GenomicRanges

Finally, you can also import R packages that have not yet been published on CRAN or Bioconductor as long as they are in a git repository. Use --archive=git followed by the URL of the git repository:

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 utilisé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 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 Nixpkgs19. 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 de la dernière version du paquet Haskell HTTP sans inclure les dépendances des tests et en spécifiant la valeur du drapeau ‘network-uri’ comme étant 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 du paquet Haskell HTTP inclus dans la version LTS 7.18 de 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, qu’on peut choisir avec l’identifiant 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, qu’on peut sélectionner avec l’identifiant melpa-stable.
  • - MELPA, qu’on peut sélectionner avec l’identifiant 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

Import metadata from the crates.io Rust package repository crates.io, as in this example:

guix import crate blake2-rfc

The crate importer also allows you to specify a version string:

guix import crate constant-time-eq@0.1.0

Additional options include:

--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.

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).


Notes de bas de page

(19)

Cela repose sur la commande nix-instantiate de Nix.


Suivant: , Précédent: , Monter: Utilitaires   [Table des matières][Index]