Siguiente: , Anterior: , Subir: Utilidades   [Índice general][Índice]


9.5 Invocación de guix import

La orden guix import es útil para quienes desean añadir un paquete a la distribución con el menor trabajo posible—una demanda legítima. La orden conoce algunos repositorios de los que puede “importar” metadatos de paquetes. El resultado es una definición de paquete, o una plantilla de ella, en el formato que conocemos (véase Definición de paquetes).

La sintaxis general es:

guix import importador opciones

importador especifica la fuente de la que se importan los metadatos del paquete, opciones especifica un identificador de paquete y otras opciones específicas del importador.

Algunos de los importadores dependen de poder ejecutar la orden gpgv. Para ello, GnuPG debe estar instalado y en $PATH; ejecute guix install gnupg si es necesario.

Actualmente los “importadores” disponibles son:

gnu

Importa los metadatos del paquete GNU seleccionado. Proporciona una plantilla para la última versión de dicho paquete GNU, incluyendo el hash de su archivador tar de fuentes, y su sinopsis y descripción canónica.

Información adicional como las dependencias del paquete y su licencia deben ser deducidas manualmente.

Por ejemplo, la siguiente orden devuelve una definición de paquete para GNU Hello.

guix import gnu hello

Las opciones específicas de línea de ordenes son:

--key-download=política

Como en guix refresh, especifica la política de tratamiento de las claves OpenPGP no encontradas cuando se verifica la firma del paquete. Véase --key-download.

pypi

Importa metadatos desde el índice de paquetes Python (PyPI). La información se toma de la descripción con formato JSON disponible en pypi.python.org y habitualmente incluye toda la información relevante, incluyendo las dependencias del paquete. Para una máxima eficiencia, se recomienda la instalación de la utilidad unzip, de manera que el importador pueda extraer los archivos wheel de Python y obtener datos de ellos.

La siguiente orden importa los metadatos para el paquete de Python itsdangerous:

guix import pypi itsdangerous
--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en Guix.

gem

Importa metadatos desde RubyGems. La información se extrae de la descripción en formato JSON disponible en rubygems.org e incluye la información más relevante, incluyendo las dependencias en tiempo de ejecución. Hay algunos puntos a tener en cuenta, no obstante. Los metadatos no distinguen entre sinopsis y descripción, por lo que se usa la misma cadena para ambos campos. Adicionalmente, los detalles de las dependencias no-Ruby necesarias para construir extensiones nativas no está disponible y se deja como ejercicio a la empaquetadora.

La siguiente orden importa los meta-datos para el paquete de Ruby rails:

guix import gem rails
--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en Guix.

cpan

Importa metadatos desde MetaCPAN. La información se extrae de la descripción en formato JSON disponible a través del API de MetaCPAN e incluye la información más relevante, como las dependencias de otros módulos. La información de la licencia debe ser comprobada atentamente. Si Perl está disponible en el almacén, se usará la utilidad corelist para borrar los módulos básicos de la lista de dependencias.

La siguiente orden importa los metadatos del módulo Perl Acme::Boolean:

guix import cpan Acme::Boolean
cran

Importa metadatos desde CRAN, el repositorio central para el entorno estadístico y gráfico GNU R.

La información se extrae del archivo DESCRIPTION del paquete.

La siguiente orden importa los metadatos del paquete de R Cairo:

guix import cran Cairo

Cuando se añade --recursive, el importador recorrerá el grafo de dependencias del paquete original proporcionado recursivamente y generará expresiones de paquetes para todos aquellos que no estén todavía en 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.

Cuando se usa --archive=bioconductor, los metadatos se importan de Bioconductor, un repositorio de paquetes R para el análisis y comprensión de datos genéticos de alto caudal en bioinformática.

La información se extrae del archivo DESCRIPTION contenido en el archivo del paquete.

La siguiente orden importa los metadatos del paquete de R GenomicRanges:

guix import cran --archive=bioconductor GenomicRanges

Por último, también puede importar paquetes de R que no se hayan publicado todavía en CRAN o en Bioconductor siempre que estén en un repositorio git. Use --archive=git seguido de la URL del repositorio git:

guix import cran --archive=git https://github.com/immunogenomics/harmony
texlive

Importa metadatos desde CTAN, la completa red de archivos TeX para paquetes TeX que son parte de la distribución TeX Live.

La información del paquete se obtiene a través del API XML proporcionado por CTAN, mientras que el código fuente se descarga del repositorio SVN del proyecto TeX Live. Se hace porque CTAN no guarda archivos con versiones.

La siguiente orden importa los metadatos del paquete de TeX fontspec:

guix import texlive fontspec

Cuando se añade --archive=directorio, el código fuente no se descarga del subdirectorio latex del árbol texmf-dist/source en el repositorio SVN de Tex Live, sino de el directorio especificado bajo esa la misma raíz.

La siguiente orden importa los metadatos del paquete ifxetex de CTAN mientras que obtiene las fuentes del directorio texmf/source/generic:

guix import texlive --archive=generic ifxetex
json

Importa metadatos de paquetes desde un archivo JSON local. Considere el siguiente ejemplo de definición de paquete en formato 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"]
}

Los nombres de los campos son los mismos que para el registro <package> (Véase Definición de paquetes). Las referencias a otros paquetes se proporcionan como listas JSON de cadenas de especificación de paquete entrecomilladas como guile o guile@2.0.

El importador también permite una definición de fuentes más explícita usando los campos comunes de los registros <origin>:

{
  …
  "source": {
    "method": "url-fetch",
    "uri": "mirror://gnu/hello/hello-2.10.tar.gz",
    "sha256": {
      "base32": "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"
    }
  }
  …
}

La siguiente orden importa los metadatos desde el archivo JSON hello.json y devuelve una expresión de “package”:

guix import json hello.json
hackage

Importa metadatos desde el archivo central de paquetes de la comunidad Haskell Hackage. La información se obtiene de archivos Cabal e incluye toda la información relevante, incluyendo las dependencias del paquete.

Las opciones específicas de línea de ordenes son:

--stdin
-s

Lee un archivo Cabal por la entrada estándar.

--no-test-dependencies
-t

No incluye las dependencias necesarias únicamente para las baterías de pruebas.

--cabal-environment=alist
-e alist

alist es una lista asociativa Scheme que define el entorno en el que los condicionales Cabal se evalúan. Los valores aceptados son: os, arch, impl y una cadena que representa el nombre de la condición. El valor asociado a la condición tiene que ser o bien el símbolo true o bien false. Los valores predeterminados asociados a las claves os, arch y impl son ‘linux’, ‘x86_64’ y ‘ghc’, respectivamente.

--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en Guix.

La siguiente orden importa los metadatos de la última versión del paquete Haskell HTTP sin incluir las dependencias de las pruebas y especificando la opción ‘network-uri’ con valor false:

guix import hackage -t -e "'((\"network-uri\" . false))" HTTP

Se puede especificar opcionalmente una versión específica del paquete añadiendo al nombre del paquete una arroba y el número de versión como en el siguiente ejemplo:

guix import hackage mtl@2.1.3.1
stackage

El importador stackage es un recubrimiento sobre el de hackage. Toma un nombre de paquete, busca la versión de paquete incluida en una publicación de la versión de mantenimiento extendido (LTS) Stackage y usa el importador hackage para obtener sus metadatos. Fíjese que es su decisión seleccionar una publicación LTS compatible con el compilador GHC usado en Guix.

Las opciones específicas de línea de ordenes son:

--no-test-dependencies
-t

No incluye las dependencias necesarias únicamente para las baterías de pruebas.

--lts-version=versión
-l versión

versión es la versión LTS de publicación deseada. Si se omite se usa la última publicación.

--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en Guix.

La siguiente orden importa los metadatos del paquete Haskell HTTP incluido en la versión de publicación LTS de Stackage 7.18:

guix import stackage --lts-version=7.18 HTTP
elpa

Importa metadatos desde el repositorio de archivos de paquetes Emacs Lisp (ELPA) (véase Packages en The GNU Emacs Manual).

Las opciones específicas de línea de ordenes son:

--archive=repo
-a repo

repo identifica el repositorio de archivos del que obtener la información. Actualmente los repositorios disponibles y sus identificadores son:

  • - GNU, seleccionado con el identificador gnu. Utilizado de manera predeterminada.

    Los paquetes de elpa.gnu.org están firmados con una de las claves que contiene el anillo de claves GnuPG en share/emacs/25.1/etc/package-keyring.gpg (o similar) en el paquete emacs (véase ELPA package signatures en The GNU Emacs Manual).

  • - MELPA-Stable, seleccionado con el identificador melpa-stable.
  • - MELPA, seleccionado con el identificador melpa.
--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en Guix.

crate

Importa metadatos desde el repositorio de paquetes Rust crates.io, como en este ejemplo:

guix import crate blake2-rfc

El importador de crate también le permite especificar una cadena de versión:

guix import crate constant-time-eq@0.1.0

La opciones adicionales incluyen:

--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en Guix.

opam

Importa metadatos desde el repositorio de paquetes OPAM usado por la comunidad OCaml.

La opciones adicionales incluyen:

--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en 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.
go

Import metadata for a Go module using proxy.golang.org.

guix import go gopkg.in/yaml.v2

It is possible to use a package specification with a @VERSION suffix to import a specific version.

La opciones adicionales incluyen:

--recursive
-r

Recorre el grafo de dependencias del paquete original proporcionado recursivamente y genera expresiones de paquete para todos aquellos paquetes que no estén todavía en Guix.

--pin-versions

When using this option, the importer preserves the exact versions of the Go modules dependencies instead of using their latest available versions. This can be useful when attempting to import packages that recursively depend on former versions of themselves to build. When using this mode, the symbol of the package is made by appending the version to its name, so that multiple versions of the same package can coexist.

La estructura del código de guix import es modular. Sería útil tener más importadores para otros formatos de paquetes, y su ayuda es bienvenida aquí (véase Contribuir).


Siguiente: , Anterior: , Subir: Utilidades   [Índice general][Índice]