Compartir actualizaciones de Arch Linux locamente 馃惂

Inicialmente tenia el titulo como tener tu repositorio local, pero realmente lo que compartes son tus actualizaciones y esta necesidad viene por el motivo que cada vez tengo mas dispositivos (en este momento son 4) con Arch,  ¿porqu茅 te peguntaras? es que Arch es la polla de las Distros Linux (dir铆a el gran Baitybait) y tengo un internet de mierda el cual complica las actualizaciones constantes de Arch, en todos los dispositivos debido a su naturaleza Rolling Release.

 


 
En el grupo de telegram (Arch Linux en Espa帽ol) planteaba mis lamentos 馃槶 y segundos despu茅s ya tenia la soluci贸n (Custom local repository) en la vieja confiable wiki de Arch, este grupo tambi茅n son la polla 馃悡


Usando un servidor web 馃摙

Hay varios m茅todos disponibles, pero el primero es extremadamente sencillo de implementar y funciona muy bien, consiste en instalar en el PC servidor (main-pc) el servidor web Darkhttpd 馃憤
$ sudo pacman -S darkhttpd
 
Luego ejecutar el siguiente comando, que realiza un enlace suave de la base de datos de los repositorios, al directorio cache de pacman 馃憤
$ sudo ln -s /var/lib/pacman/sync/*.db /var/cache/pacman/pkg/

Luego levantamos el servidor web apuntando al cache, con el siguiente comando.
$ sudo -u http darkhttpd /var/cache/pacman/pkg/ --no-server-id


Acceder al repositorio local 馃捇

Agregamos al archivo mirrorlist (listas de repositorios) a nuestro servidor como primera opci贸n, para el ejemplo usamos el editor nano.
$ sudo nano /etc/pacman.d/mirrorlist

Y agregamos 
Server = http://main-pc:8080
 
Donde:
  • main-pc es el hostname o la IP est谩tica de la PC (192.168.1.10) el cual sirve de repositorio ✌️

Luego actualizamos, como lo hacemos normalmente.

$ sudo pacman -Syu


Para aclarar que este paso, se hace solo en las otras PC a actualizar 馃槈


Consideraciones:
  • Antes de compartir es muy recomendable estar actualizado.
  • Aunque en la wiki no se especifica, siempre antes de levantar el servidor es recomendable ejecutar nuevamente el comando para copiar la base de datos, hace poco *  funcionaron repositorios y no me funcionaba.
  • Si en el servidor no se encuentra un paquete se bajara del segundo repositorio de la lista y as铆 sucesivamente. 
  • Y si, Darkhttpd debes instalarlo 馃槅


* Git migration completed [mayo 2023].


Python en vez de Darkhttpd 馃

En la wiki (2022) se recomienda el uso de Python http.server sobre Darkhttpd, pero seg煤n mi experiencia, he encontrado los siguiente problemas:
  • Se crachea, es decir da error y se cierra a menudo, en medio de las actualizaciones.
  • No permite retomar una actualizaci贸n, luego de que se cierre o de un error en la red, debe borrar la cache antes de re intentar actualizar.
     
De todos modos pueden probar, el comando para levantar el servidor con Python y es el siguiente:
$ python -m http.server -d /var/cache/pacman/pkg/ 8080


Mientras Darkhttpd funciona perfecto, es estable y se puede retomar una actualizaci贸n parcial.
 
Ademas se puede usar para montar una pagina WEB en Tor as铆 que por eso, Darkhttpd es la polla 馃悡



El script 馃槑

Este m茅todo lo uso a diario y es cansado de los cojones meter esos dos comandos, as铆 que me hice un script bash y lo llamo mediante un alias, ademas me quedo muy chulo y funciona muy bien, as铆 que se los comparto.


Mi script que es la polla 馃悡
Los iconos son de una Nerd Fonts.

#!/usr/bin/env bash
####### Formatos y Colores ######
FN='\e[1m'    #Bold Brillante
FD='\e[2m'    #Dim Oscuro
Fu='\e[4m'    #Underlined subrayados
FB='\e[5m'    #Blink titila
CR='\e[31m'   #Red
CG='\e[32m'   #Green
CY='\e[33m'   #Yellow
CB='\e[34m'   #Blue
CM='\e[35m'   #Mangenta
CC='\e[36m'   #Cyan
CO='\e[0;33m' #Orange
NC='\e[0m'
################################

# Limpiamos pantalla
clear

### Actualizando enlaces, permisos y mostrando informaci贸n del repositorio :D
echo -e "${CG}$NC ${FN}Activando repositorio local$NC $CB$NC"

echo -e "${CG}$NC Actualizando enlaces " \
    " ($(sudo ln -sf /var/lib/pacman/sync/*.db /var/cache/pacman/pkg/ && echo -e " Correcto ${CG}✔$NC " || echo -e " Fallo $(Style red)✖$NC "))"

echo -e "${CG}⭯$NC Actualizando permisos" \
    " ($(sudo chmod -R o+r /var/cache/pacman/pkg/ && echo -e " Correcto ${CG}✔$NC " || echo -e " Fallo $(Style red)✖$NC "))\n"

echo -e "${CG}$NC ${FN}Repositorio$NC"

# echo -e "${CG}馃摝$NC Paquetes [${CG}$(ls /var/cache/pacman/pkg/*.zst | wc -l)$NC] Tama帽o [${CG}$(du -hc /var/cache/pacman/pkg/ | grep total | gawk '{print $(NF-1)}')$NC]\n"

### Levantando servidor
echo -e "${CG}⭗$NC ${FN}Activando servidor WEB $NC"
darkhttpd /var/cache/pacman/pkg/ --no-server-id || echo -en "铴岶allo $(Style red)✖$NC "

exit 0

 

Si no sabes de Script, te dejo esta publicaci贸n b谩sica que realice.


Repositorio de tercero Chaotic-AUR

Ya les coste sobre este muy interesante repositorio aqu铆, para que tambi茅n puedas compartir estos paquetes hay que hacer dos cositas.

  1. Volver a ejecutar el comando que realiza los enlaces, con la base de datos en la PC servidor 馃憤
    $ sudo ln -s /var/lib/pacman/sync/*.db /var/cache/pacman/pkg/
  2. Agregar de primero la direcci贸n de nuestro servidor, en la lista de repositorios de Chaotic-AUR ubicado en /etc/pacman.d/chaotic-mirrorlist de igual forma que lo realizamos anteriormente, en las PC clientes.
    $ sudo nano /etc/pacman.d/chaotic-mirrorlist


En las otras PC deben estar habilitados los repositorios Chaotic-AUR, como lo indica la documentaci贸n oficial del repositorio.


Actualizado [10/2024]

Comentarios

Entradas m谩s populares de este blog

Super Mario RPG 馃幃