Next: Invoking guix style
, Previous: Invocación de guix import
, Up: Utilidades [Contents][Index]
guix refresh
The primary audience of the guix refresh
command is packagers. As
a user, you may be interested in the --with-latest option, which
can bring you package update superpowers built upon guix refresh
(see --with-latest). By
default, guix refresh
reports any packages provided by the
distribution that are outdated compared to the latest upstream version, like
this:
$ guix refresh gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18.2.1 gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0
De manera alternativa, se pueden especificar los paquetes a considerar, en cuyo caso se emite un aviso para paquetes que carezcan de actualizador:
$ guix refresh coreutils guile guile-ssh gnu/packages/ssh.scm:205:2: warning: no updater for guile-ssh gnu/packages/guile.scm:136:12: guile would be upgraded from 2.0.12 to 2.0.13
guix refresh
navega por los repositorios oficiales de cada paquete
y determina el número de versión mayor entre las publicaciones
encontradas. La orden sabe cómo actualizar tipos específicos de paquetes:
paquetes GNU, paquetes ELPA, etc.—vea la documentación de --type
más adelante. Hay muchos paquetes, no obstante, para los que carece de un
método para determinar si está disponible una versión oficial posterior. No
obstante, el mecanismo es extensible, ¡no tenga problema en contactar con
nosotras para añadir un método nuevo!
--recursive
Considera los paquetes especificados, y todos los paquetes de los que dependen.
$ guix refresh --recursive coreutils gnu/packages/acl.scm:40:13: acl would be upgraded from 2.2.53 to 2.3.1 gnu/packages/m4.scm:30:12: 1.4.18 is already the latest version of m4 gnu/packages/xml.scm:68:2: warning: no updater for expat gnu/packages/multiprecision.scm:40:12: 6.1.2 is already the latest version of gmp …
A veces el nombre oficial es diferente al nombre de paquete usado en Guix, y
guix refresh
necesita un poco de ayuda. La mayor parte de los
actualizadores utilizan la propiedad upstream-name
en las
definiciones de paquetes, que puede usarse para obtener dicho efecto:
(define-public network-manager
(package
(name "network-manager")
;; …
(properties '((upstream-name . "NetworkManager")))))
Cuando se proporciona --update, modifica los archivos de fuentes de
la distribución para actualizar los números de versión y hash de los
archivadores tar de fuentes en las recetas de los paquetes (see Definición de paquetes). Esto se consigue con la descarga del último archivador de
fuentes del paquete y su firma OpenPGP asociada, seguida de la verificación
del archivador descargado y su firma mediante el uso de gpg
, y
finalmente con el cálculo de su hash—tenga en cuenta que GnuPG debe estar
instalado y en $PATH
; ejecute guix install gnupg
si es
necesario.
Cuando la clave pública usada para firmar el archivador no se encuentra en
el anillo de claves de la usuaria, se intenta automáticamente su obtención
desde un servidor de claves públicas; cuando se encuentra, la clave se añade
al anillo de claves de la usuaria; en otro caso, guix refresh
informa de un error.
Se aceptan las siguientes opciones:
--expression=expr
-e expr
Considera el paquete al que evalúa expr
Es útil para hacer una referencia precisa de un paquete concreto, como en este ejemplo:
guix refresh -l -e '(@@ (gnu packages commencement) glibc-final)'
Esta orden enumera los paquetes que dependen de la libc “final” (esencialmente todos los paquetes).
--update
-u
Actualiza los archivos fuente de la distribución (recetas de paquetes) en su lugar. Esto se ejecuta habitualmente desde una copia de trabajo del árbol de fuentes de Guix (see Ejecución de Guix antes de estar instalado):
$ ./pre-inst-env guix refresh -s non-core -u
See Definición de paquetes, para más información sobre la definición de paquetes.
--select=[subconjunto]
-s subconjunto
Selecciona todos los paquetes en subconjunto, o bien core
o
bien non-core
.
El subconjunto core
hace referencia a todos los paquetes en el núcleo
de la distribución—es decir, paquetes que se usan para construir “todo lo
demás”. Esto incluye GCC, libc, Binutils, Bash, etc. Habitualmente, cambiar
uno de esos paquetes en la distribución conlleva la reconstrucción de todos
los demás. Por tanto, esas actualizaciones son una inconveniencia para las
usuarias en términos de tiempo de construcción o ancho de banda usado por la
actualización.
El subconjunto non-core
hace referencia a los paquetes restantes. Es
típicamente útil en casos donde una actualización de paquetes básicos no
sería conveniente.
--manifest=archivo
-m archivo
Select all the packages from the manifest in file. This is useful to check if any packages of the user manifest can be updated.
--type=actualizador
-t actualizador
Selecciona únicamente paquetes manejados por actualizador (puede ser una lista separada por comas de actualizadores). Actualmente, actualizador puede ser:
gnu
el actualizador de paquetes GNU;
savannah
el actualizador para paquetes alojados en Savannah;
sourceforge
the updater for packages hosted at SourceForge;
gnome
el actualizador para paquetes GNOME;
kde
el actualizador para paquetes KDE;
xorg
el actualizador para paquetes X.org;
kernel.org
el actualizador para paquetes alojados en kernel.org;
egg
the updater for Egg packages;
elpa
el actualizador para paquetes ELPA;
cran
el actualizador para paquetes CRAN;
bioconductor
el actualizador para paquetes R Bioconductor;
cpan
el actualizador para paquetes CPAN;
pypi
el actualizador para paquetes PyPI.
gem
el actualizador para paquetes RubyGems.
github
el actualizador para paquetes GitHub.
hackage
el actualizador para paquetes Hackage.
stackage
el actualizador para paquetes Stackage.
crate
el actualizador para paquetes Crates.
launchpad
el actualizador para paquetes Launchpad.
generic-html
a generic updater that crawls the HTML page where the source tarball of the package is hosted, when applicable.
generic-git
a generic updater for packages hosted on Git repositories. It tries to be smart about parsing Git tag names, but if it is not able to parse the tag name and compare tags correctly, users can define the following properties for a package.
release-tag-prefix
: a regular expression for matching a prefix of
the tag name.
release-tag-suffix
: a regular expression for matching a suffix of
the tag name.
release-tag-version-delimiter
: a string used as the delimiter in
the tag name for separating the numbers of the version.
accept-pre-releases
: by default, the updater will ignore
pre-releases; to make it also look for pre-releases, set the this property
to #t
.
(package
(name "foo")
;; ...
(properties
'((release-tag-prefix . "^release0-")
(release-tag-suffix . "[a-z]?$")
(release-tag-version-delimiter . ":"))))
Por ejemplo, la siguiente orden únicamente comprueba actualizaciones de
paquetes Emacs alojados en elpa.gnu.org
y actualizaciones de paquetes
CRAN:
$ guix refresh --type=elpa,cran gnu/packages/statistics.scm:819:13: r-testthat would be upgraded from 0.10.0 to 0.11.0 gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 11.88.9
--list-updaters
Enumera los actualizadores disponibles y finaliza (vea la opción previa --type).
Para cada actualizador, muestra la fracción de paquetes que cubre; al final muestra la fracción de paquetes cubiertos por todos estos actualizadores.
Además, guix refresh
puede recibir uno o más nombres de paquetes,
como en este ejemplo:
$ ./pre-inst-env guix refresh -u emacs idutils gcc@4.8
The command above specifically updates the emacs
and idutils
packages. The --select option would have no effect in this case.
You might also want to update definitions that correspond to the packages
installed in your profile:
$ ./pre-inst-env guix refresh -u \ $(guix package --list-installed | cut -f1)
Cuando se considera la actualización de un paquete, a veces es conveniente
conocer cuantos paquetes se verían afectados por la actualización y su
compatibilidad debería comprobarse. Para ello la siguiente opción puede
usarse cuando se proporcionan uno o más nombres de paquete a guix
refresh
:
--list-dependent
-l
Enumera los paquetes de nivel superior dependientes que necesitarían una reconstrucción como resultado de la actualización de uno o más paquetes.
See el tipo reverse-package
de guix
graph
, para información sobre cómo visualizar la lista de paquetes que
dependen de un paquete.
Sea consciente de que la opción --list-dependent únicamente aproxima las reconstrucciones necesarias como resultado de una actualización. Más reconstrucciones pueden ser necesarias bajo algunas circunstancias.
$ guix refresh --list-dependent flex Building the following 120 packages would ensure 213 dependent packages are rebuilt: hop@2.4.0 emacs-geiser@0.13 notmuch@0.18 mu@0.9.9.5 cflow@1.4 idutils@4.6 …
La orden previa enumera un conjunto de paquetes que puede ser construido
para comprobar la compatibilidad con una versión actualizada del paquete
flex
.
--list-transitive
Enumera todos los paquetes de los que uno o más paquetes dependen.
$ guix refresh --list-transitive flex flex@2.6.4 depends on the following 25 packages: perl@5.28.0 help2man@1.47.6 bison@3.0.5 indent@2.2.10 tar@1.30 gzip@1.9 bzip2@1.0.6 xz@5.2.4 file@5.33 …
La orden previa enumera un conjunto de paquetes que, en caso de cambiar,
causarían la reconstrucción de flex
.
Las siguientes opciones pueden usarse para personalizar la operación de GnuPG:
--gpg=orden
Use orden como la orden de GnuPG 2.x. Se busca orden en
PATH
.
--keyring=archivo
Usa archivo como el anillo de claves para claves de
proveedoras. archivo debe estar en el formato keybox. Los
archivos Keybox normalmente tienen un nombre terminado en .kbx y
GNU Privacy Guard (GPG) puede manipular estos archivos (see kbxutil
in Using the GNU Privacy Guard, para información
sobre una herramienta para manipular archivos keybox).
Cuando se omite esta opción, guix refresh
usa
~/.config/guix/upstream/trustedkeys.kbx como el anillo de claves para
las firmas de proveedoras. Las firmas OpenPGP son comprobadas contra claves
de este anillo; las claves que falten son descargadas a este anillo de
claves también (véase --key-download a continuación).
Puede exportar claves de su anillo de claves GPG predeterminado en un archivo keybox usando órdenes como esta:
gpg --export rms@gnu.org | kbxutil --import-openpgp >> mianillo.kbx
Del mismo modo, puede obtener claves de un archivo keybox específico así:
gpg --no-default-keyring --keyring mianillo.kbx \ --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
See --keyring in Using the GNU Privacy Guard, for more information on GPG’s --keyring option.
--key-download=política
Maneja las claves no encontradas de acuerdo a la política, que puede ser una de:
always
Siempre descarga las claves OpenPGP no encontradas del servidor de claves, y las añade al anillo de claves GnuPG de la usuaria.
never
Nunca intenta descargar claves OpenPGP no encontradas. Simplemente propaga el error.
interactive
Cuando se encuentra un paquete firmado por una clave OpenPGP desconocida, pregunta a la usuaria si descargarla o no. Este es el comportamiento predeterminado.
--key-server=dirección
Use dirección como el servidor de claves OpenPGP cuando se importa una clave pública.
--load-path=directorio
-L directorio
Añade directorio al frente de la ruta de búsqueda de módulos de paquetes (see Módulos de paquetes).
Esto permite a las usuarias definir sus propios paquetes y hacerlos visibles a las herramientas de línea de órdenes.
El actualizador github
usa la API de GitHub para consultar nuevas publicaciones. Cuando se usa
repetidamente, por ejemplo al comprobar todos los paquetes, GitHub terminará
rechazando las peticiones siguientes a través de su API. Por defecto se
permiten 60 peticiones por hora a través de su API, y una actualización
completa de todos los paquetes de GitHub en Guix necesita más que eso. La
identificación con GitHub a través del uso de un identificador de su API
(“token”) amplia esos límites. Para usar dicho identificador, establezca
la variable de entorno GUIX_GITHUB_TOKEN
al valor obtenido a través de
https://github.com/settings/tokens o de otra manera.
Next: Invoking guix style
, Previous: Invocación de guix import
, Up: Utilidades [Contents][Index]