GNU/Linux >> Tutoriales Linux >  >> Linux

Primeros pasos con el administrador de paquetes de Nix

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!


Linux
  1. Comenzando con Zsh

  2. Primeros pasos con el Administrador de archivos de Plesk

  3. Comenzando con ls

  4. Primeros pasos con Samba para la interoperabilidad

  5. Primeros pasos con PostgreSQL en Linux

Primeros pasos con GIT en Linux

Primeros pasos con el sistema operativo Linux

Primeros pasos con GitHub

Primeros pasos con systemctl

Introducción a los ejemplos de comandos de Alpine Linux Apk

Primeros pasos con el comando Tar