Instalación de paquetes con GUIX
Instalación de paquetes con GUIX
Introducción
Guix é unha aplicación de terminal de GNU para a instalación de paquetes. Está baseada en Nix ca sua xestión de paquetes funcional. Isto fai que dada unha entrada a saída sempre será a mesma. Deste xeito é posible ter o sistema nun estado estable. Quero dicir, co arquivo de definición dos programas instalados, poderemos formatear, movernos a outro equipo, etc, conservando os mesmos programas e versións.
Ademáis, se non o executamos como administrador, as apliacións serán instaladas na nosa carpeta de usuario e non afectará a outras partes do sistema, ou a outros usuarios. O cal incrementa a seguridade ao estar contido o programa. Por exemplo, sen poder crear, modificar ou eliminar ficheiros fora dos directorios de instalación e configuración. Guix faise cargo de instanciar a configuración do sistema de xeito transaccional, reproducible e sen estado global. Isto último é especialmente interesante para desenvolvedores ao ter un entorno facilmente reproducible entre sistemas, evitando o inferno das dependencias. Ao ter distintas aplicacións que requiran distintas versións de librarías. Con Guix as aplicacións están contidas cas suas dependencias e non interfiren cas de outras aplicacións. Xa o propio sistema se encarga de evitar duplicar estas librarías internamente.
Instalación
Guix pode ser instalado sobre calquer sistema GNU/Linux e tamén está dispoñible como imaxe para QEMU, Guix System, unha distribución propia.
Para instalalo en OpenSuse Tumbleweed, chega con facelo co uso de Zypper, xa que é un paquete que está no repositorio.
sudo zypper install guix
NOTA: a forma de xestionar os paquetes de GUIX, fai que non interfira con outras ferramentas do sistema. Como zypper no caso de OpenSuse. Para isto fai uso de dous directorios, que soen ser /gnu/store e /var/guix. Co que non afecta aos arquivos do sistema en /etc.
Outras distros poden requerir outros xeitos de instalar, como por exemplo co uso de apt en Debian e derivadas.
Se non estivese nos repositorios da nosa distro, podemos recurrir a instalación dende o binario. Tal e como se explica na guía.
Configuración
Unha vez instalado crearemos o grupo guixbuild con sudo groupadd --system guixbuild. Para a continuación
engadir os usuarios de construcción. Estes non son os usuarios regulares do sistema, se non usuarios que o demo
de guix utilizará para compillar os paquetes. Crearemos dez deles.
for i in `seq -w 1 10`; do
sudo useradd -c "Guix build user $i" -d /var/empty \
-g guixbuild -G guixbuild \
-M -N -r -s /usr/sbin/nologin guixbuilder$i
done
Despois activamos o demo para que o comando poida comunicarse con el. Sen isto non funcionará, dando un erro conforme o servizo non está en execución.
sudo systemctl enable --now guix-daemon
Saída agardada
Created symlink '/etc/systemd/system/multi-user.target.wants/guix-daemon.service' → '/usr/lib/systemd/system/guix-daemon.service'.
Agora se comprobo o estado do demo:
systemctl status guix-daemon
Saída agardada
● guix-daemon.service - Build daemon for GNU Guix
Loaded: loaded (/usr/lib/systemd/system/guix-daemon.service; enabled; preset: disabled)
Active: active (running) since Sat 2026-03-21 17:49:48 CET; 55s ago
Invocation: 61e440c069ac4666b06065fe0c82f3b7
Main PID: 76846 (guix-daemon)
Tasks: 1 (limit: 8192)
CPU: 12ms
CGroup: /system.slice/guix-daemon.service
└─76846 /usr/bin/guix-daemon --build-users-group=guixbuild
Antes de comezar a instalar paquetes, precisamos instalar os paquetes de localización de guix e definir a variable GUIX_LOCPATH.
guix install glibc-locales && export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
Agora comprobamos que o socket estea accesible:
ls -l /var/guix/daemon-socket/socket
Saída agardada
srw-rw-rw-. 1 root root 0 Mar 21 17:49 /var/guix/daemon-socket/socket
Instalamos guix install glibc-locales
guix install glibc-locales
E configuramos a variable co path, mellor incluílo na configuración da terminal para facelo permanente.
export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
Comandos
- Obter o listado de paquetes:
guix pullExemplo de saída
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
0,0 MB will be downloaded
le-certs-1 5KiB 438KiB/s 00:00 [##################] 100.0%
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
-
Listar paquetes dispoñibles:
guix package --list-availableListado completo dos paquetes -
Buscar un paquete:
guix search nome do paquete
guix search vlc
Exemplo de saída
name: vlc
version: 3.0.23
outputs:
+ out: everything
systems: x86_64-linux
dependencies: alsa-lib@1.2.11 avahi@0.8 bash-minimal@5.2.37 bison@3.8.2 dav1d@1.5.1 dbus@1.16.2 eudev@3.2.14 ffmpeg@8.0 flac@1.5.0
+ flex@2.6.4 fontconfig-minimal@2.16.0 freetype@2.13.3 fribidi@1.0.12 gettext-minimal@0.23.1 gnutls@3.8.9 liba52@0.8.0
+ libarchive@3.7.7 libass@0.15.1 libavc1394@0.5.4 libbluray@1.3.4 libcaca@0.99.beta19 libcddb@1.3.2 libdca@0.0.7 libdvbpsi@1.3.3
+ libdvdnav@6.1.1 libdvdread@6.1.3 libebml@1.4.5 libgcrypt@1.11.0 libidn@1.43 libkate@0.4.1 libmad@0.15.1b libmatroska@1.7.1
+ libmicrodns@0.1.2 libmodplug@0.8.9.0 libmpeg2@0.5.1 libogg@1.3.6 libpng@1.6.39 libraw1394@2.1.2 librsvg@2.58.5 libsamplerate@0.1.9
+ libsecret@0.21.7 libssh2@1.11.1 libtheora@1.1.1 libupnp@1.14.30 libva@2.22.0 libvdpau@1.5 libvnc@0.9.15 libvorbis@1.3.7
+ libvpx@1.15.2 libx264@165-0.0480cb0 libxext@1.3.6 libxi@1.8.2 libxinerama@1.1.5 libxml2@2.14.6 libxpm@3.5.17
+ livemedia-utils@2025.11.06 lua@5.2.4 mesa@25.2.3 opus@1.5.2 perl@5.36.0 pkg-config@0.29.2 protobuf@3.21.9 pulseaudio@16.1
+ python-wrapper@3.11.14 qtbase@5.15.17 qtsvg@5.15.17 qtx11extras@5.15.17 samba@4.18.1 sdl-image@1.2.12 sdl12-compat@1.2.68
+ speex@1.2.1 speexdsp@1.2.1 srt@1.4.4 taglib@1.13.1 twolame@0.4.0 unzip@6.0 wayland-protocols@1.45 wayland@1.24.0 x265@3.5
+ xcb-util-keysyms@0.4.1
location: gnu/packages/video.scm:2489:2
homepage: https://www.videolan.org/
license: GPL 2+
synopsis: Audio and video framework
description: VLC is a cross-platform multimedia player and framework that plays most multimedia files as well as DVD, Audio CD,
+ VCD, and various streaming protocols.
relevance: 32
- Instalar un paquete:
guix install paquete
guix install vlc
The following package will be installed:
vlc 3.0.23
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
Executando programas
Parece que por defecto os programas instálanse no directorio ~/.guix-profile/bin, así que para executalo
sería ~/.guix-profile/bin/vlc.
Para simplificar, no meu .bashrc engadín a seguinte liña
export PATH=~/bin:~/.cargo/bin:~/scripts:~/.guix-profile/bin:$PATH
Con export imos establecer o valor na variable PATH. Despois do igual están as rutas que queremos incluír. Compre notar como cada ruta está
separada con :. E sobre todo non esquecer engadir ao final $PATH, que inclúe toda-las rutas que existían previamente. Neste caso
creadas polo propio sistema. Se non o facemos así, teremos problemas ao faltar certas rutas cando traballemos.
Conclusión
Neste punto xa teríamos GUIX configurado para instalar aplicacións. Seguirei vendo outras opcións. Por exemplo cando compre actualizar, ou como facer para definir unha configuración con versións concretas. De momento non é máis que curiosidade por este sistema, xa que cousas como VLC están no repo de OpenSuse. Pero de cara ao desenvolvemento, poder contar con configuracións estables para as aplicacións pode estar ben.
En definitiva ao igual que ocorre con Nix ou Flatpak, as aplicacións non interfiren unhas cas outras, nin co sistema. Co que poderemos xerar un paquete que será instalable en calquer sistema cas dependencias necesarias. Repito, dun xeito illado e seguro, evitando que o programa afecte aos aplicativos na carpeta /etc.
Fontes
- Documentación GUIX: Manual
Artigos Relacionados:
- Activación da gráfica integrada en OpenSuse Tumbleweed
- AWK
- Eliminar liñas nun ficheiro con sed
- Cómo crear un live USB dende a terminal
- Engadir tarefas a Systemd
- Copiar a saída do terminal ao portapapeis
- Controlar la temperatura del equipo con bash y telegram
- Activación da gráfica integrada en OpenSuse Tumbleweed
- Instalar Displaylink openSuse Tumbleweed
- Crear un PNG animado con FFMPEG
- Instalar Fedora con BTRFS, cifrado e Snapshots activos
- AWK
- Mudar as DNS en Fedora
- Distrobox
- Instalar Fedora en VirtualBox
- Eliminar liñas nun ficheiro con sed
- Cómo crear un live USB dende a terminal
- Engadir tarefas a Systemd
- Copiar a saída do terminal ao portapapeis
- Configurar acceso SFTP a un directorio
- Inicio de sesión automático en Alpine linux
- Crear un usuario con permisos restrinxidos para backups
- error: gpg failed to sign the data
- Xestionar varias claves ssh
- Cómo instalar Traefik con docker
- Configurar sshfs para acceder al sistema de ficheros de forma segura
- Securizar sudo no noso sistema
- Cómo instalar Raspberry OS
- Instalando docker en modo rootless en Debian
- Configuración e uso de GPG en linux