Next: Invocación de guix graph
, Previous: Invocación de guix lint
, Up: Utilidades [Contents][Index]
guix size
La orden guix size
ayuda a las desarrolladoras de paquetes a
perfilar el uso de disco de los paquetes. Es fácil pasar por encima el
impacto que produce añadir una dependencia adicional a un paquete, o el
impacto del uso de una salida única para un paquete que puede ser dividido
fácilmente (see Paquetes con múltiples salidas). Estos son los problemas
típicos que guix size
puede resaltar.
Se le pueden proporcionar una o más especificaciones de paquete como
gcc@4.8
o guile:debug
, o un nombre de archivo en el
almacén. Considere este ejemplo:
$ guix size coreutils store item total self /gnu/store/…-gcc-5.5.0-lib 60.4 30.1 38.1% /gnu/store/…-glibc-2.27 30.3 28.8 36.6% /gnu/store/…-coreutils-8.28 78.9 15.0 19.0% /gnu/store/…-gmp-6.1.2 63.1 2.7 3.4% /gnu/store/…-bash-static-4.4.12 1.5 1.5 1.9% /gnu/store/…-acl-2.2.52 61.1 0.4 0.5% /gnu/store/…-attr-2.4.47 60.6 0.2 0.3% /gnu/store/…-libcap-2.25 60.5 0.2 0.2% total: 78.9 MiB
Los elementos del almacén enumerados aquí constituyen la clausura transitiva de Coreutils—es decir, Coreutils y todas sus dependencias, recursivamente—como sería devuelto por:
$ guix gc -R /gnu/store/…-coreutils-8.23
Aquí la salida muestra tres columnas junto a los elementos del almacén. La primera columna, etiquetada “total”, muestra el tamaño en mebibytes (MiB) de la clausura del elemento del almacén—es decir, su propio tamaño sumado al tamaño de todas sus dependencias. La siguiente columna, etiquetada “self”, muestra el tamaño del elemento en sí. La última columna muestra la relación entre el tamaño del elemento en sí frente al espacio ocupado por todos los elementos enumerados.
En este ejemplo, vemos que la clausura de Coreutils ocupa 79 MiB, cuya mayor parte son libc y las bibliotecas auxiliares de GCC para tiempo de ejecución. (Que libc y las bibliotecas de GCC representen una fracción grande de la clausura no es un problema en sí, puesto que siempre están disponibles en el sistema de todas maneras).
Puesto que la orden también acepta nombres de archivo del almacén, comprobar el tamaño del resultado de una construcción es una operación directa:
guix size $(guix system build config.scm)
Cuando los paquetes pasados a guix size
están disponibles en el
almacén28 consultando al daemon para determinar sus dependencias, y mide su
tamaño en el almacén, de forma similar a du -ms --apparent-size
(see du invocation in GNU Coreutils).
Cuando los paquetes proporcionados no están en el almacén,
guix size
informa en base de las sustituciones disponibles
(see Sustituciones). Esto hace posible perfilar el espacio en disco
incluso de elementos del almacén que no están en el disco, únicamente
disponibles de forma remota.
Puede especificar también varios nombres de paquetes:
$ guix size coreutils grep sed bash store item total self /gnu/store/…-coreutils-8.24 77.8 13.8 13.4% /gnu/store/…-grep-2.22 73.1 0.8 0.8% /gnu/store/…-bash-4.3.42 72.3 4.7 4.6% /gnu/store/…-readline-6.3 67.6 1.2 1.2% … total: 102.3 MiB
En este ejemplo vemos que la combinación de los cuatro paquetes toma 102.3 MiB en total, lo cual es mucho menos que la suma de cada clausura, ya que tienen muchas dependencias en común.
Cuando tenga delante el perfil devuelto por guix size
puede
preguntarse cuál es la razón de que cierto paquete aparezca en el
perfil. Para entenderlo puede usar guix graph --path -t references
para mostrar la ruta más corta entre dos paquetes (see Invocación de guix graph
).
Las opciones disponibles son:
Usa la información de sustituciones de
urls. See la misma opción en guix
build
.
Ordena las líneas de acuerdo a clave, una de las siguientes opciones:
propio
el tamaño de cada elemento (predeterminada);
closure
el tamaño total de la clausura del elemento.
Escribe un mapa gráfico del uso del disco en formato PNG en el archivo.
Para el ejemplo previo, el mapa tiene esta pinta:
Esta opción necesita que la biblioteca
Guile-Charting esté
instalada y visible en la ruta de búsqueda de módulos Guile. Cuando no es el
caso, guix size
produce un error al intentar cargarla.
Considera paquetes para sistema—por ejemplo, x86_64-linux
.
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.
Más precisamente, guix size
busca la variante
sin injertos de los paquetes, como el devuelto por guix build
paquete --no-grafts
. See Actualizaciones de seguridad, para información sobre
injertos.
Next: Invocación de guix graph
, Previous: Invocación de guix lint
, Up: Utilidades [Contents][Index]