Hola compañeros,
En este breve post les mostraré como instalar y usar el gestor de paquetes Nix.
Que es Nix?
Nix es un gestor de paquetes linux que hace que la gestión de paquetes sumamente sencilla. Universal, porque puede instalarse en cualquier distro. Proporciona actualizaciones y la coexistencia de múltiples versiones de un paquete, permitiendo, ademas, restaurar su estado a un punto determinado, gestión de paquetes multi-usuario y sin necesidad de ser root.
Cabe destacar que Nix no altera el sistema donde se instala, sino que coexiste con el mismo. Podremos instalar, desinstalar, actualizar, etc, sin que afecte en lo mas mínimo nuestro sistema. Esto lo logra al instalar todos los paquetes y dependencias en una sola carpeta.
Nix, a mi en lo particular, siempre me a sido sumamente util cuando probaba sistemas LFS, Lunar, SMGL o Gentoo/Funtoo, cuando no tenia tiempo para compilar o lidiar con algun problema.
Nix tiene muchísimas opciones útiles, aquí solo les mostraré las mas básicas como para tenerlo funcionando.
Instalación:
Creamos la carpeta nix en la raíz:
sudo mkdir /nix
Cambiamos el propietario:
sudo chown mabas /nix
Instalamos Nix:
En mi caso uso zsh, si usan bash cambien zsh por bash.
zsh <(curl https://nixos.org/nix/install)
Sino también pueden hacerlo de esta otra manera:
curl https://nixos.org/nix/install | sh
Con esto ya tendran instalado Nix, pero al cerrar la terminal las variable PATH creada por Nix sera eliminada y no podrán iniciar las aplicaciones instaladas. Esto lo solucionan añadiendo lo siguiente al .bashrc o zshrc.
echo "export PATH=$PATH:/home/mabas/.nix-profile/bin" >> ~/.zshrc
Como veran la forma de almacenamiento dentro de /nix es algo coherente, aunque quizá poco práctica.
Comandos básicos:
Listar todos los paquetes disponibles en el repositorio Nixpkgs:
nix-env -qa
Buscar un paquete en el repositorio:
nix-env -qa paquete
Instalar un paquete:
nix-env -i
Eliminar un paquete:
nix-env -e paquete
Actualizar un paquete:
nix-env -u paquete
Actualizar todos los paquetes instalados:
nix-env -u
Simular la instalación de un paquete:
nix-env -i --dry-run paquete
Purgar el gestor de paquetes:
Verán, Nix en realidad cuando uno actualiza y borra un paquete en realidad lo que hace es eliminar los enlaces simbólicos. Esto es lo que permite la coexistencia de diferentes versiones o restaurar el gestor a un punto determinado. Lógicamente al cabo de un tiempo esto hará aumentar de tamaño el directorio /nix considerablemente. Nix permite purgar el sistema por generaciones, o sea todo o determinada cantidad de dias. Una generación es un dia.
Para purgar todos los paquete eliminados:
nix-env --delete-generations old
Para determinados días (por ej: 5 7 8):
nix-env --delete-generations 5 7 8
Para eliminar una cantidad determinada de generaciones (por ej: 8 dias):
nix-env --delete-generations 8d
Algo a tener en cuenta es que Nix instalar por defecto, solamente software libre. Esto puede ser una limitación para algunos (como yo), ya que algunos paquetes utilizan dependencias que no libres.
Esto podemos solucionarlo de la siguiente forma:
Creamos el directorio .nixpkgs:
mkdir ~/.nixpkgs
Dentro de .nixpkgs creamos en archivo config.nix indicando que queremos instalar paquetes no libres:
echo "{ allowUnfree = true; }" >> ~/.nixpkgs/config.nix
Si usamos escritorios notaran que los programas instalados no aparecen en nuestro panel. Esto se debe a que no están instalados propiamente dicho en nuestra distro, sino que están por fuera del sistema, pero pudiendo interactuar con el mismo. Las soluciones a esto son: crear accesos directos, enlaces simbólicos o simplemente iniciarlos desde la terminal.
En ~/.nix-profile/bin tendremos nuestros accesos directos a las aplicaciones instaladas.
Si quieren mas info (en ingles) pueden consultar el
Cualquier duda me consultan.
Hasta la próxima!