- ENTRADA 7 -

Compilando desde xbps-src


--- Fecha: mié 03 jul 2024 23:52:40 CEST ---


Al igual que ocurre en Archlinux, en Voidlinux existe algo llamado xbps-src, que son programas que no vienen en el árbol de binarios pero que pueden ser instalados desde código fuente desde el repositorio github de Void, o incluso desde gits de terceros.


NOTA: En voidlinux existe VUR (Void User Repository), que viene a ser el AUR en Arch y que eran paquetes que no estaban ni en el árbol src ni en los binarios, y digo eran porque creo que se ha quedado algo anticuado y los paquetes ya fueron añadidos. Si quieres echarle un ojo, dejo la web del proyecto:


VUR



El paquete se compila a partir de un archivo llamado "template", una plantilla con datos como versión del programa, dependencias, shasum, URL, etc, al igual que sucede en Archlinux con AUR y sus PKGBUILD o los EBUILD en gentoo.

Una vez se compila se obtiene un binario, que es el que instalaremos como cualquier otro en el sistema.


El paquete resultante habrá sido compilado para nuestra máquina, por lo que estará optimizado, dando estabilidad al sistema.


NOTA: Para trabajar con xbps-src hay que hacerlo siempre como usuario normal



Preparando el sistema


Primero debemos descargar el árbol de void-src de su git. Como me gusta tener todo más o menos unificado, voy a hacer el clonado en .local/share


cd .local/share
git clone https://github.com/void-linux/void-packages


NOTA: Ojo con el guión - entre "void" y "linux" (void-linux) ya que en algunos manuales de la red lo encontrarás sin guión. Me volví loco intentando resolver los problemas de acceso que me pedía antes de darme cuenta de que estaba poniendo mal la dirección.


Si listamos vemos que se ha creado el árbol de directorios de void-packages, con 3 directorios: common, etc y srcpkgs


Instalamos ahora bootstrap:


cd void-packages
./xbps-src binary-bootstrap

Si listamos vemos que se han creado directorios nuevos: hostdir y masterdir. Entra ahora en srcpkgs y lista, verás la cantidad de paquetes que hay.


Si entras a cualquier programa de los que hay, verás algunos archivos y puede que algún directorio (dependiendo del programa al que entres). El importante es "template", ya que es la plantilla usada para compilar, así que si abres ese archivo verás la info necesaria para compilar el paquete.

Es importantísimo que te fijes en las dependencias que necesita el paquete. Esto lo indica la línea que empieza por "hostmakedepends". Instalalas antes de compilar o te dará errores. Dejo un enlace a un artículo que hice sobre la verificación en AUR, porque aunque sea de Archlinux, sirve aquí también:


Verificando PKGBUILDs


Nos queda un paso, y es configurar el etc de void-packages.


NOTA: Este etc no es el del sistema raíz /etc, así que ojo con poner la barra, sobre todo si estás como root por algún motivo desconocido.


Para poder compilar programas que aparecen como "restricted" en su template, escribimos lo siguiente en el archivo etc/conf:


echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf



Compilando programas del árbol


Te situas en la raíz del árbol de void-packages, en mi caso .local/share/void-packages, y pones el siguiente comando. En mi caso, voy a compilar algo pequeño, xterm:


./xbps-src pkg xterm

Después de unos segundos de compilación, que variará a varios minutos dependiendo de lo que quieras compilar y de la máquina que tengas, el paquete recién creado aparecerá en "hostdir/binpkgs" (o en su subdirectorio nonfree si pertenece a esa categoría).

Veo que aparece el paquete xterm-382_1.x86_64.xbps, así que voy a instalar:


sudo xbps-install --repository hostdir/binpkgs xterm

NOTA: En este caso no hace falta que estés en la misma ruta, ya que la dirección de los compilados está definida en el sistema.



¿Problema con esto?, pues que si compilas un programa que no está en el repositorio de binarios, tendrás que actualizar los templates y recompilar. A veces solo hay que cambiar dentro del template los valores "version" y "checksum" a los de la nueva versión si conoces esos datos.



Tenéis más info en el git del proyecto:


Void-packages




Tags: #void #voidlinux #xbps-src




◄ Listado de artículos

◄◄ Inicio



/blog/void/