Noticia Repositorio local con paquetes de AUR (Arch Linux)

Contexto en el que se realizo el post:

Muchos sabrán de que suelo usar distros basadas en código fuente, cuestión que estando de vacaciones la ultima actualización de mi amado Funtoo, hizo que el sistema reventara (quizá lo podía arreglar pero no tenia ganas de luchar con las uses), así que decidí darle una nueva oportunidad a Arch Linux, la usé hace mucho tiempo.

¿Y cuál fue mi problema con ella? Básicamente que uso MUCHÍSIMO software de AUR (para los que leen por primera vez AUR, es como un “repo” en el que los usuarios suben programas que no están en los repos oficiales, algo así como un PPA de Ubuntu).

¿Cuál es el problema de esto? Que muchas veces el software de AUR no anda, ya sea porque los mantenedores descuidan sus paquetes o porque simplemente no tienen los conocimientos para arreglar el problema que surgió con la nueva versión, esto, básicamente y contemplando que me enojo con mucha facilidad, me jode, ya que para estar peleando con compilaciones y pkgbuilds que revientan me voy a Gentoo/Funtoo.

Acá esta la estadística de la página oficial siendo generosos y suponiendo que los paquetes que nunca fueron actualizados y los paquetes huérfanos son los mismos, tenemos casi 1/4 de AUR que no sirve, de ahí mi enojo. ¿Qué fue distinto esta vez?

Inicio del post


Encontré la aplicación local-repo, esta maravilla que se ve que alguien perturbado por AUR igual que yo, decidió crear, para por lo menos ceder al usuario el control de estos “problemas”, básicamente lo que nos permite esta aplicación, es hacer un repositorio local, en el cual podemos poner los paquetes que vamos compilando con el AUR, de esta manera, podemos encargarnos nosotros de organizar y mantener correctamente los paquetes del AUR.

Instalacion:


Podemos descargarlo y compilarlo con makepkg:

wget https://aur.archlinux.org/packages/lo/local-repo/local-repo.tar.gz
tar -xf local-repo.tar.gz
cd hello
makepkg -sic

O podemos instalarlo mediante Yaourt:

yaourt -S --noconfirm local-repo

Configuración:


Luego como nos indica ahí, debemos configurar local-repo mediante el archivo “~/.config/local-repo” inicialmente esta vacío, lo que procederemos a hacer es crear las carpetas donde alojaremos nuestro repo, en mi caso lo puse en /home/x11tete11x/.repo/x11tete11x

mkdir -p ~/.repo/x11tete11x/logs
mkdir -p ~/.repo/x11tete11x/pkgbuilds
mkdir -p ~/.repo/x11tete11x/pkgs-x86_64

ahora configuramos ”~/.config/local-repo” :

nano ~/.config/local-repo

Notar que tienen ejemplos de como configurar local-repo aqui: /usr/share/local-repo/config.example

En fin, como para lo que quiero usar local-repo es muy básico, esta es mi configuración:

[x11tete11x]
path = /home/x11tete11x/.repo/x11tete11x/pkgs-x86_64
sign = no
signdb = no
log = /home/x11tete11x/.repo/x11tete11x/logs/local-repo-log
buildlog = /home/x11tete11x/.repo/x11tete11x/logs/build-logs
pkgbuild = /home/x11tete11x/.repo/x11tete11x/pkgbuilds

Como verán le especifico de donde quiero que saque cada cosa, acá tienen una descripción de que hace cada cosa sacada el post en que me base para hacer este:

  • path -> Indica la ubicación de los paquetes del repositorio.
  • sign -> Firma los paquetes con una clave PGP.
  • signdb -> Firma la base de datos con una clave PGP.
  • log -> Ubicación del archivo donde se guardará el log de local-repo.
  • buildlog -> Carpeta donde se almacenarán los logs al construir los paquetes.
  • pkgbuild -> Carpeta donde almacenar los archivos PKGBUILD.
Agregar paquetes


Si el paquete a agregar se encuentra en nuestras carpetas como un paquete suelto (por ejemplo descargamos uno y lo tenemos en la carpeta descargas, o compilamos un paquete nosotros mismos en una carpeta dentro de nuestro home destinada a las compilaciones), lo agregamos con:

local-repo nombre-del-repositorio -a ruta-del-paquete

y si es un paquete de AUR usamos:

local-repo nombre-del-repositorio -A nombre-paquete

Aclaración: Si el paquete que se quiere instalar tiene a su vez otra dependencia de AUR, no “resuelve automáticamente” estas dependencias

Es decir por ejemplo si queremos instalar el paquete appmenu-gtk2 que depende de libdbusmenu-gtk2 que esta en AUR, no podemos hacer

local-repo x11tete11x -A appmenu-gtk2

ya que va a decir que no encuentra el paquete libdbusmenu-gtk2, tenemos que hacer:

local-repo nombrerepo -A libdbusmenu-gtk2 y luego local-repo nombrerepo -A appmenu-gtk2

de esta manera cuando busque las dependencias libdbusmenu-gtk2 ya va a estar disponible en los repos.

Para agregar un paquete se puede copiar directamente a la carpeta del repositorio (en mi caso ~/.repo/x11tete11x/pkgs-x86_64) y después actualizar la base de datos manualmente, pero esto es muy engorroso

Eliminar paquetes

Para eliminar paquetes contamos con la instrucción:

local-repo nombre-del-repositorio -r nombre-paquete

Agregar el repositorio local a la lista de repositorios

Debemos añadir el repositorio creado a la lista de repositorios que actualmente usamos, para esto tenemos que editar el archivo /etc/pacman.conf y colocar las lineas que pongo a continuación, al principio de donde empiezan los repositorios, para que nuestro repo gane prioridad sobre el resto, también se puede agregar al final como un repo añadido:

sudo nano /etc/pacman.conf

y ponemos:

[x11tete11x]
SigLevel = Optional TrustAll
Server = file:///home/x11tete11x/.repo/x11tete11x/pkgs-x86_64

Finalmente sincronizamos las bases de datos de Pacman y ya tenemos listo nuestro repositorio.

sudo pacman -Sy


Nota: La primera vez que lo quise sincronizar me largaba error y me decía que no encontraba el archivo: “/home/x11tete11x/.repo/x11tete11x/pkgs-x86_64/x11tete11x.db” lo solucione haciendo: touch /home/x11tete11x/.repo/x11tete11x/pkgs-x86_64/x11tete11x.db es decir creaba un archivo vacio llamado así, y luego solo cuando lo sincronice lo actualizo bien y empezó a funcionar correctamente
Actualizar repositorio local


Una vez que tenemos nuestro repositorio funcionando debemos ocuparnos nosotros de mantenerlo actualizado, para esto contamos con:

local-repo -UV nombre-del-repositorio

La opción -U actualiza los paquetes que se encuentren en AUR y la opción -V actualiza los paquetes CVS de AUR (como los git, svn o cvs por ejemplo).
Y por ultimo unas capturas del repo
icon_biggrin.gif
:



Yapa: “Acelerar proceso de compilación de paquetes”

Ya que vamos a compilar paquetes, vamos a acelerar un poco el progreso tocando una de las opciones que por default viene desactivada, básicamente lo que vamos a hacer es decirle al makepkg que utilice todos los núcleos para compilar para esto buscamos la linea: “MAKEFLAGS” dentro de /etc/makepkg.conf y le ponemos “= -j<numero de cores + cores de HT (Si tuvieran Hyper Threading) + 1>” es decir en mi caso poseo un Core I7 de 4 nucleos que por HT me añade 4 núcleos lógicos mas, entonces mi MAKEFLAGS queda así:

MAKEFLAGS="-j9"




JwDN8S85Ils


Continúar leyendo...