Saltar al contenido

Categoría: Archlinux

Script para ver paquetes de AUR comprometidos

Si son usuarios de Arch Linux, habrán escuchado que recientemente alguien logró acceder al Arch User’s Repository (AUR) y adoptó muchos paquetes huérfanos para modificarlos e inyectar código malicioso. Como lo hizo con muchos paquetes y durante un tiempo desconocido, es posible que tu equipo tenga instalados paquetes comprometidos. Una ventaja de todo este problema, es que el equipo de Arch publicó una lista oficial de paquetes que fueron víctimas de este ataque y me motivó a desarrollar un script para ver paquetes de AUR comprometidos

El script para ver paquetes de AUR comprometidos

Por esta razón, decidí hacer un script en Fish; si han leído mi blog antes, sabrán que uso Fish en mi consola y que la sintaxis de la terminal cambia un poco. Este script chequea el archivo oficial de paquetes comprometidos, valida que solo contenga texto y nombres de paquetes (para evitar que, si se compromete, te ataquen) y luego revisa tus paquetes instalados y los compara para ver si alguno de ellos está instalado en tu equipo.

#!/usr/bin/env fish

set URL "https://md.archlinux.org/s/SxbqukK6IA/download"

set installed (pacman -Qq)
set aur (pacman -Qqm 2>/dev/null)

# Download as plain text only; keep only valid-looking package names
set suspects (curl -fsSL "$URL" \
  | string match -r '^[a-z0-9][a-z0-9._+-]*$' \
  | sort -u)

set total (count $suspects)
set found_list
set i 0
set spinner "⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏"
set spin_i 1

function draw
    set i $argv[1]
    set total $argv[2]
    set spin $argv[3]

    set width 35

    if test "$total" -eq 0
        set percent 0
        set filled 0
    else
        set percent (math -s0 "$i * 100 / $total")
        set filled (math -s0 "$i * $width / $total")
    end

    set empty (math -s0 "$width - $filled")

    printf "\r%s [" "$spin"
    printf "%s" (string repeat -n $filled "=")
    printf "%s" (string repeat -n $empty " ")
    printf "] %3d%% (%d/%d)" $percent $i $total
end

echo "Scanning suspect packages..."
echo ""

for pkg in $suspects
    set i (math "$i + 1")

    if contains -- "$pkg" $installed; or contains -- "$pkg" $aur
        set -a found_list "$pkg"
    end

    draw "$i" "$total" "$spinner[$spin_i]"

    set spin_i (math "$spin_i + 1")
    if test "$spin_i" -gt (count $spinner)
        set spin_i 1
    end

    sleep 0.005
end

echo ""
echo ""

echo "Installed suspect packages:"
echo "----------------------------"

if test (count $found_list) -eq 0
    echo "None"
else
    for p in $found_list
        echo "$p"
    end
end

Nota: Recuerda ejecutarlo con fish y no con bash.

Finalmente, si tienes algún script, simplemente elimínalo del sistema con pacman y mantén tu sistema seguro.

Y recuerda compartir este script con otros usuarios de Arch, o al menos infórmales sobre este problema para que estén protegidos.

Deja un comentario

DCMTK en Arch Linux: de PKGBUILD personal al repositorio oficial

Hace más de 15 años, a mediados de 2008, escribí un pequeño PKGBUILD para empaquetar la librería DCMTK en Arch Linux. En ese momento no pensaba que se convertiría en una de las tareas más largas que haría dentro de la comunidad. Todo comenzó como un simple hobby: necesitaba la librería para un proyecto de un laboratorio de bioingeniería, allí trabajaba con una computadora con Arch Linux, pero como no existía un paquete disponible, decidí crearlo yo mismo para facilitar mi trabajo y, de paso, compartirlo con otros.

El mantenimiento de DCMTK lo largo de los años

Con el tiempo, lo que empezó como algo puntual se convirtió en una especie de ritual. Cada vez que salía una nueva versión de DCMTK, preparaba el paquete, lo probaba y lo publicaba para que cualquiera pudiera instalarlo fácilmente. Incluso este mismo año, antes de que se liberara oficialmente la nueva versión, me contactaron para tener el paquete listo a tiempo. Y así lo hice, adelantándome al lanzamiento oficial, tal como lo había hecho tantas veces antes.

Lo que no imaginaba es que, después de tantos años, DCMTK pasaría a formar parte de los repositorios oficiales de Arch Linux. Por un lado, me da un poco de nostalgia ya no ser el mantenedor después de tanto tiempo, porque este paquete me acompañó desde mis días de estudiante hasta hoy, pasando por las decadas del 2000, 2010 y 2020. Pero por otro lado, siento mucha satisfacción al ver que ahora forma parte de manera oficial del ecosistema de Arch.

Eso significa que mi esfuerzo inicial sirvió como semilla y que la comunidad seguirá dándole vida más allá de mí. En retrospectiva, fue un gran recorrido y considero que viví la esencia del software libre: aportar algo que ayude a otros y ver cómo esas contribuciones crecen y se transforman con el tiempo.

Gracias por leer este artículo y por acompañarme en esta pequeña despedida de uno de mis proyectos más longevos dentro de Arch.

Deja un comentario

¡Felices 20 años Archlinux!

Hoy hace 20 años se anunció el lanzamiento de la primera versión de Archlinux 0.1 denominada Homer. Desde hace 16 años es mi distribución de uso diario y he escrito sobre Arch a lo largo de estos años. Una vez que la probé no tuve que seguir buscando una mejor distribución a mis necesidades.

Las principales ventajas de Archlinux

En ese entonces Archlinux era una distribución compilada para la micro-arquitectura i686 en vez de i386, por lo que si tenías un equipo moderno para la época podrías disfrutar de mayor velocidad que el resto de las distribuciones sin tener que recompilar todo como en Gentoo.

Otra de sus principales ventajas, era su simplicidad debido que sigue la filosofía KISS (Keep it Simple Stupid, en español sería Manténlo Estúpidamente Simplemente). A diferencia de otras distribuciones (y creo aún se mantiene) donde al instalar un paquete te instala también las dependencias opciones, documentación, librerías que ofrece, etc. En Archlinux sólo tendrás lo necesario y el resto de cosas va en paquetes separados por lo que tendrás una instalación sencilla y limpia.

Uno de los mayores puntos de Archlinux es que es rolling-release. Esto significa que sólo necesitas instalarlo una vez y puedes actualizarla cada día sin instalar de nuevo. Otras distribuciones requieren que reinstales de nuevo para actualizar o lanzan actualizaciones grandes cada cierto tiempo para mejorar el sistema, como Ubuntu que cada 6 meses saca una nueva versión con nuevo Gnome, nuevos paquetes, etc. En Archlinux, todo los días hay actualizaciones y tienes un sistema seguro. De hecho, tuve instalaciones de 5 años que por problema de disco tuve que reinstalar, pero el sistema siempre fue estable y sin problemas luego de tanto tiempo.

Mi distribución favorita desde el 2006

La wiki de Archlinux

Cuando empecé a usar Arch, me di cuenta que su Wiki era muy simple y a la vez muy concisa. Solo tiene la información necesaria para informarte de algo o resolver un problema. Por esta razón es muy utilizada por otras distribuciones porque la calidad es muy buena.

La wiki de Archlinux es uno de los puntos fuertes de esta distribución de Linux. Al seguir el principio KISS le ha permitido crear excelentes entradas a lo largo de estos años. De hecho uno de mis primeros aportes al software libre, fue traducir artículos al español en la antigua comunidad de Archlinux en Español.

A lo largo de estos años, no ha parado de tener contenido nuevo y de calidad. Mantiene su principio KISS y estoy seguro que seguirá siendo así en los próximos años por venir.

El crecimiento de Arch

Cuando empecé a usar esta distribución en el 2006. No era muy conocida ni las principales, pero poco a poco a ido creciendo por las ventajas mencionadas anteriormente y la disponibilidad para nuevas arquitecturas. Por ello, ahora vez Archlinux en la Raspberry PI, en la SteamDeck de Valve, con núcleo BSD, entre otros.

De hecho ahora se ha popularizado la frase «Yo uso Archlinux» porque inicialmente sus usuarios se sentían orgullosos de usar una distribución no popular pero que erá medio complicada de instalar para un novato, rápida y excelente. Pero como cada vez somos mas usuarios de Arch ya es algo común y se volvió meme.

Deseo que Archlinux siga cumpliendo muchos años mas y tenga la misma visión que actualmente posee. Hasta los momentos, ha sido una excelente distribución que ha crecido gracias a su filosofía.

¡Gracias Archlinux por todos estos años!

Deja un comentario

Pacserve: sincroniza tus paquetes de Archlinux en tu red local

Debido a la naturaleza de rolling-release de Archlinux, si tienes varios equipos con Arch tendrás que lidiar con gastar mucho de ancho de banda al descargar las actualizaciones (casi diarias y a veces de gran tamaño). Ademas es probable que los equipos posean el mismo hardware y software. Entonces, técnicamente estarías descargando los mismos paquetes muchas veces. Pero gracias a PacServe evitaremos este problema.

¿Qué es PacServe?

Es un software permite usar uno de tus equipos con Arch como servidor de actualizaciones de paquetes. Entonces los demás equipos antes de descargar desde los repositorios oficiales, se conecta primero a este equipo con PacServe para descargar usando la red local (sin acceder a Internet) los paquetes y evitar gastar ancho de banda externo.

Instalación en la computadora con los paquetes

El primer paso es instalar el demonio de pacserve en el equipo con acceso a Internet y que se encargará de descargar los paquetes en el disco. Para ello debes instalar el PKGBUILD de pacserve y luego iniciar el demonio:

# systemctl start pacserve

Con esto ya tenemos corriendo el servidor. Comienza el anuncio a la red local y en lo demás equipos utilizas el cliente para conectarte aquí. En este equipo utilizas pacman como en cualquier instalación de Archlinux y mantén la cache con los paquetes descargados. No los elimines porque eso son los que se enviaran a los demás equipos.

Uso desde los clientes

En las computadoras que no tienen los paquetes y deseas actualizar. Debes usar pacserve en vez de pacman. Ya que este cliente se encargará de buscar un servidor en la red local para iniciar la descarga de paquetes antes de usar pacman y descargar desde los repositorios oficiales.

¡Listo! Ya puedes ahorrar ancho de banda al instalar actualizaciones en tu equipos con Arch. Para mayor información puedes consultar la entrada de Pacserve en la Wiki de Archlinux.

Deja un comentario