Este tutorial explica cómo realizar operaciones de administración de paquetes, como instalar, eliminar, actualizar y actualizar paquetes utilizando el administrador de paquetes Nix. Si aún no ha instalado el administrador de paquetes Nix, consulte nuestra guía anterior "Nix:un poderoso administrador de paquetes para Linux y Unix" . Como ya sabrá, no necesita ser un usuario root o sudo para realizar todas las operaciones de administración de paquetes con Nix.
Primeros pasos con el Administrador de paquetes Nix
Nix tiene muchos comandos. El comando principal para la gestión de paquetes es nix-env . Este comando se utiliza para enumerar, instalar, actualizar, revertir, eliminar y consultar paquetes. Veamos algunos comandos con ejemplos.
Actualización de canales de Nix
Un canal de Nix es solo una URL que apunta a un lugar que contiene un conjunto de expresiones de Nix y un manifiesto. De forma predeterminada, Nixpkgs El canal se agrega automáticamente a su lista de canales "suscritos" cuando instala Nix.
Para mantenerse actualizado con el canal Nix, ejecute el siguiente comando:
$ nix-channel --update
Salida de muestra:
downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s] unpacking channels...
También puede agregar manualmente un canal a su sistema como se muestra a continuación.
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
Después de suscribirse (agregar) un canal, no olvide actualizar el canal para obtener las últimas expresiones Nix disponibles usando el comando:
$ nix-channel --update
Para eliminar un canal, simplemente ejecute:
$ nix-channel --remove nixpkgs
Buscar/consultar paquetes disponibles
Para ver la lista de paquetes disponibles en el canal suscrito, ejecute:
$ nix-env -qa
La salida de muestra del comando anterior sería:
2048-in-terminal-2015-01-15 2bwm-0.2 389-ds-base-1.3.5.15 3dpong-0.5 4store-1.1.6 8086tiny-1.25 90secondportraits-1.01b 915resolution-0.5.3 9pfs a2jmidid-8 a2ps-4.14 a52dec-0.7.4p4 aacgain-1.9.0 aacskeys-0.4.0e aalib-1.4rc5 abc-verifier-20160818 abcde-2.7.2 abcl-1.4.0 [...]
Aquí, "-q" indica la operación de consulta. "-a" indica todos los paquetes disponibles (es decir, instalables).
Puede consultar un paquete en particular, como se muestra a continuación.
$ nix-env -qa chromium
Salida:
chromium-58.0.3029.110
Además, puede usar el siguiente comando para buscar un paquete en particular.
$ nix-env -qaP | grep python3-3
Salida de muestra:
nixpkgs.python33 python3-3.3.6 nixpkgs.python33Full python3-3.3.6 nixpkgs.python34 python3-3.4.6 nixpkgs.python34Full python3-3.4.6 nixpkgs.python35 python3-3.5.3 nixpkgs.python35Full python3-3.5.3 nixpkgs.python3Full python3-3.6.1 nixpkgs.python36Full python3-3.6.1 nixpkgs.python3 python3-3.6.1
Para enumerar todos los paquetes instalados, simplemente ejecute:
$ nix-env -q
También es posible ver el estado del paquete disponible. Mira el siguiente ejemplo.
$ nix-env -qas gcc
Salida de muestra:
IPS gcc-5.4.0
Aquí, "I" indica que el paquete especificado está instalado, "P" indica que el paquete está presente en nuestro sistema y "S" indica si hay un llamado sustituto para el paquete.
Puede consultar/listar paquetes usando expresiones regulares. Estos son algunos ejemplos de expresiones regulares.
cromo
Coincide con el nombre del paquete chromium y cualquier versión.
cromo-58.0
Coincide con el nombre del paquete chromium y la versión 58.0.
Ejemplo:
$ nix-env -qa chromium-58.0
gtk\\+
Coincide con el nombre del paquete gtk+ . El carácter + debe escaparse con una barra invertida para evitar que se interprete como un cuantificador, y la barra invertida debe escaparse a su vez con otra barra invertida para asegurarse de que el shell lo transmita.
Coincide con cualquier nombre de paquete. Este es el valor predeterminado para la mayoría de los comandos.
'.*zip.*'
Coincide con cualquier nombre de paquete que contenga la cadena zip . Tenga en cuenta los puntos:'*zip*' no funciona, porque en una expresión regular, el carácter * se interpreta como un cuantificador.
'.*(firefox|cromo).*'
Coincide con cualquier nombre de paquete que contenga las cadenas firefox o cromo .
Instalación de paquetes
Como mencioné en el tutorial anterior, todos los paquetes se almacenarán en Nix Store , generalmente el directorio /nix/store .
Para instalar un paquete, simplemente ejecute:
$ nix-env --install gcc
O,
$ nix-env -i gcc
El comando anterior instalará el último paquete gcc disponible.
La salida de muestra del comando anterior sería:
installing ‘gcc-5.4.0’ download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds... these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked): /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’... [...] fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... *** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’ created 78 symlinks in user environment
Verifiquemos si gcc está instalado o no usando el comando:
$ gcc -v
Salida de muestra:
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: Thread model: posix gcc version 5.4.0 (GCC)
Como notó en el resultado anterior, gcc ha estado en un subdirectorio llamado "dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0" en /nix/store . Aquí llamamos a dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 como identificador único. Este subdirectorio contiene todas las dependencias y bibliotecas requeridas del paquete gcc.
Paquetes de prueba sin instalar
Otra característica notable del administrador de paquetes Nix es que puede probar un paquete sin instalarlo en su sistema. Consulte la siguiente guía para saber cómo probar un paquete sin instalarlo.
- Cómo probar un paquete sin instalarlo en Linux
Paquetes de actualización
Para actualizar un paquete a la próxima versión disponible, simplemente ejecute:
$ nix-env --upgrade vim
O simplemente:
$ nix-env -u vim
El comando anterior solo actualizará vim paquete si hay una versión "más nueva".
Además, puede actualizar todos los paquetes instalados a la vez ejecutando el siguiente comando:
$ nix-env -u
Paquetes de reversión
Instaló un paquete, pero no es útil o no funciona correctamente. Necesita la versión inferior del mismo paquete. ¿Qué vas a hacer? Sencillo. Simplemente retroceda a la versión de trabajo anterior usando el siguiente comando:
$ nix-env --rollback
Desinstalar paquetes
Para desinstalar un paquete, ejecuta:
$ nix-env -e gcc
El comando anterior desinstalará el paquete llamado gcc de su sistema.
Puede eliminar varios paquetes como se muestra a continuación.
$ nix-env -e gcc vim
Salida de muestra:
uninstalling ‘vim-8.0.0442’ uninstalling ‘gcc-5.4.0’ building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’ created 6 symlinks in user environment
Eliminar paquetes no utilizados
Cuando se desinstala un paquete, no se elimina de Nix Store (es decir, el directorio /nix/store/). Solo que los enlaces simbólicos se eliminarán de su perfil.
Para eliminar realmente los paquetes desinstalados, ejecute:
$ nix-collect-garbage -d
Salida de muestra:
finding garbage collector roots... deleting garbage... deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’ deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’ deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’ [...] deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’ deleting ‘/nix/store/trash’ deleting unused links... note: currently hard linking saves -0.00 MiB 1447 store paths deleted, 12.65 MiB freed
Debe ejecutar este comando periódicamente para deshacerse de los paquetes no utilizados de su sistema.
Y, eso es todo por ahora. Espero que tenga una idea del uso básico del administrador de paquetes Nix. Lo que acabo de cubrir aquí es suficiente para comenzar con el administrador de paquetes Nix. Por supuesto, hay muchos comandos. Para obtener más información sobre los comandos de Nix, consulte el manual oficial de Nix que se incluye al final de esta guía.
Si encuentra útil esta guía, compártala en sus redes sociales y profesionales y apoye a OSTechNix. Más cosas buenas por venir. ¡Estén atentos!
¡Salud!