Next: Invocación de guix refresh
, Previous: Invocación de guix hash
, Up: Utilidades [Contents][Index]
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 (see Definición de paquetes).
La sintaxis general es:
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.
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. See --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.
The command below imports metadata for the latest version of the
itsdangerous
Python package:
guix import pypi itsdangerous
You can also ask for a specific version:
guix import pypi itsdangerous@1.1.0
--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
You can also ask for a specific version:
guix import gem rails@7.0.4
--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.
minetest
¶Import metadata from ContentDB. Information is taken from the JSON-formatted metadata provided through ContentDB’s API and includes most relevant information, including dependencies. There are some caveats, however. The license information is often incomplete. The commit hash is sometimes missing. The descriptions are in the Markdown format, but Guix uses Texinfo instead. Texture packs and subgames are unsupported.
The command below imports metadata for the Mesecons mod by Jeija:
guix import minetest Jeija/mesecons
The author name can also be left out:
guix import minetest mesecons
--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
You can also ask for a specific version:
guix import cran rasterVis@0.50.3
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.
When --prefix=license: is added, the importer will prefix license
atoms with license:
, allowing a prefixed import of (guix
licenses)
.
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
¶Import TeX package information from the TeX Live package database for TeX packages that are part of the TeX Live distribution.
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 siguiente orden importa los metadatos del paquete de TeX fontspec
:
guix import texlive fontspec
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.
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>
(See 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) (see Packages in 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
. 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
(see ELPA package signatures in The GNU Emacs Manual).
nongnu
identifier.
melpa-stable
.
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.
--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
¶Import metadata from the Elm package repository package.elm-lang.org, as in this example:
guix import elm elm-explorations/webgl
The Elm importer also allows you to specify a version string:
guix import elm elm-explorations/webgl@1.1.3
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.
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
Nota: 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.
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.
composer
¶Import metadata from the Composer package archive used by the PHP community, as in this example:
guix import composer phpunit/phpunit
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
By default, packages are searched in the official OPAM repository. This option, which can be used more than once, lets you add other repositories which will be searched for packages. It accepts as valid arguments:
opam
,
coq
(equivalent to coq-released
), coq-core-dev
,
coq-extra-dev
or grew
.
opam repository add
command (for instance, the URL equivalent of the
above opam
name would be https://opam.ocaml.org).
Repositories are assumed to be passed to this option by order of
preference. The additional repositories will not replace the default
opam
repository, which is always kept as a fallback.
Also, please note that versions are not compared across repositories. The first repository (from left to right) that has at least one version of a given package will prevail over any others, and the version imported will be the latest one found in this repository only.
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.
egg
¶Import metadata for CHICKEN eggs. The information is taken from PACKAGE.egg files found in the eggs-5-all Git repository. However, it does not provide all the information that we need, there is no “description” field, and the licenses used are not always precise (BSD is often used instead of BSD-N).
guix import egg sourcehut
You can also ask for a specific version:
guix import egg arrays@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.
hexpm
¶Import metadata from the hex.pm Erlang and Elixir package repository hex.pm, as in this example:
guix import hexpm stun
The importer tries to determine the build system used by the package.
The hexpm importer also allows you to specify a version string:
guix import hexpm cf@0.3.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.
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í (see Contribuir).
Next: Invocación de guix refresh
, Previous: Invocación de guix hash
, Up: Utilidades [Contents][Index]