Instalando Neofetch en Ubuntu 22.04

Una anotación breve, muy breve…

Valencia, 26/10/2026, G.B.
No he podido resistirme a probar Neofetch en Ubuntu 22.04 (entorno de escritorio Wayland). aún quedan muchas cosas por hacer…

Cuando Neofetch se ejecuta por primera vez, se crea un archivo de configuración con todas las opciones y configuraciones:

$HOME/.config/neofetch/config.conf

Este archivo permite modificar la información del sistema que se ve en el terminal. Se pueden crear, modificar o eliminar líneas de información y también modificar el script utilizando código bash para la gestión de la información que se va a ver en pantalla.

Fuente: Wikipedia (como no…).

Mi experiencia con Ubuntu 22.04, Wayland y la nostalgia productiva de Ubuntu MATE (for a retrospective future)

Valencia, 26/10/2026, G.B.
Recientemente (desde ayer) he estado probando a fondo Ubuntu 22.04 LTS con el entorno de escritorio Wayland en mi equipo principal (un HP ProDesk con procesador i5, 16 GB de RAM y un  disco SSD de 256 GB, comprado de segunda mano en ofertaspc.com, como siempre…). Aunque el rendimiento general tras una buena actualización masiva del sistema vuela como la seda, me he topado con algunos detalles interesantes en el camino, como la gestión de paquetes AppImage y mis propias conclusiones sobre porqué sigo prefiriendo ciertos sabores clásicos.

El pequeño escollo con las AppImages en Ubuntu 22.04

Al comenzar a instalar mis aplicaciones favoritas en formato AppImage, me encontré con que el sistema se negaba a ejecutarlas. Contrariamente a lo que se podría pensar, esto no tiene relación directa con Wayland, sino con un cambio introducido en esta versión de Ubuntu: libfuse2 no viene instalado por defecto.

Para solucionarlo de forma rápida y limpia desde la terminal, basta con ejecutar:

sudo apt update && sudo apt install libfuse2

Una vez instalado y tras dar permisos de ejecución al archivo (chmod +x), las aplicaciones vuelven a funcionar sin mayor complicación.

¿Espacio para dos mundos? Compartiendo el SSD

Aprovechando que mi equipo cuenta con discos duros secundarios dedicados al almacenamiento masivo de archivos, he estado valorando destinar unos 60 GB de mi SSD principal para instalar de forma conjunta Ubuntu 22.04 y Ubuntu MATE 22.04. Con 250 GB hay espacio más que de sobra para alojar ambos sistemas operativos de manera independiente, manteniendo los datos personales a salvo en los discos externos. Ubuntu MATe ocupará solo unos 50GB, calculo.

Ubuntu MATE: Un futuro retrospectivo que nunca pasa de moda

Aunque GNOME y Wayland representan la modernidad en Ubuntu, confieso que sigo sintiendo una debilidad especial por el entorno de escritorio de Ubuntu MATE 22.04 (heredero espiritual y directo de la filosofía clásica de GNOME 2).

Para mí, MATE encarna perfectamente el concepto de «for a retrospective future»: una interfaz limpia, menús en cascada tradicionales, alta eficiencia de recursos y una experiencia de usuario donde el escritorio simplemente trabaja para ti sin distracciones ni estorbos innecesarios. En equipos de oficina o estaciones de trabajo, este tipo de escritorios modulares y ligeros siguen ofreciendo una productividad imbatible.

¿Y tú qué opinas?

¿Eres de los que prefiere la vanguardia de los entornos modernos o también te atrae la robustez clásica de Ubuntu MATE? Déjamelo en los comentarios y sigamos debatiendo sobre Linux en Indaga.net.

Reportaré…

Cómo solucionar el error de dependencias de FortiClient VPN en Ubuntu 22.04 LTS

Valencia, 25/10/2026, G,B,
Al intentar instalar la versión de FortiClient VPN mediante el paquete .deb descargado oficialmente en Ubuntu 22.04 LTS (que acabo de instalar en un nuevo PC de segunda mano que me he comprado, un HP Prodesk), es muy habitual encontrarse con un fallo en la consola durante el proceso de desempaquetado con dpkg.

Si al ejecutar el comando de instalación obtienes un error que impide configurar el paquete indicando que falta libnss3-tools, en este tutorial te mostramos exactamente por qué ocurre y cómo resolverlo en un par de pasos desde la terminaEl problema: falta de dependencias (

Al ejecutar el comando tradicional de instalación:

sudo dpkg -i forticlient_vpn_7.4.3.5411_amd64.deb

La herramienta dpkg suele interrumpir la configuración arrojando una salida similar a esta:

dpkg: problemas de dependencias impiden la configuración de forticlient:
 forticlient depende de libnss3-tools (>= 3.21); sin embargo:
  El paquete `libnss3-tools' no está instalado.

dpkg: error al procesar el paquete forticlient (--install):
 problemas de dependencias - se deja sin configurar¿Por qué sucede esto?

A diferencia de apt, el comando dpkg no resuelve ni descarga automáticamente las dependencias faltantes. FortiClient requiere la biblioteca libnss3-tools (empleada para la gestión de certificados de seguridad y NSS) para poder registrar sus servicios en el sistema operativo.

Solución paso a paso

Para resolver la dependencia no satisfecha y completar la instalación de FortiClient VPN, sigue estos comandos desde tu terminal:

1. Actualizar repositorios e instalar la librería necesaria

Primero, actualiza la lista de paquetes e instala la herramienta requerida:

sudo apt update
sudo apt install libnss3-tools

2. Reparar y finalizar la instalación de FortiClient

Una vez instalada libnss3-tools, puedes indicarle al gestor de paquetes de Ubuntu que resuelva cualquier paquete a medio configurar. Ejecuta:

sudo apt --fix-broken install

Nota: El parámetro --fix-broken (o -f) detectará que FortiClient se encuentra en estado «sin configurar», comprobará que ya cuenta con las librerías necesarias y finalizará el proceso sin necesidad de volver a lanzar el .deb.

Verificación

Una vez finalizado el proceso anterior, podrás buscar FortiClient directamente en el menú de aplicaciones de tu sistema o ejecutarlo desde la terminal para empezar a configurar tus conexiones VPN empresariales o personales.

¿Te ha servido?

Si te ha quedado alguna duda o utilizas otra distribución basada en Debian/Ubuntu, déjanos un comentario o visita nuestras secciones de tutoriales en Linux dentro de Indaga.net.

Cómo filtrar direcciones IP y rangos en logs Web usando solo Bash

Valencia, 22/09/2026, G.B.
Cuando administramos servidores web como Apache, Nginx o LiteSpeed, los archivos de acceso (access.log) se convierten rápidamente en la fuente principal para identificar tráfico no deseado, bots malintencionados o intentos de fuerza bruta.

Aunque existen herramientas de análisis y cortafuegos dinámicos, en muchas ocasiones necesitamos realizar una limpieza rápida de un archivo de log directamente desde la consola, sin instalar dependencias adicionales ni recurrir a lenguajes externos como Python o Perl.

En este artículo veremos cómo construir un script en Bash puro que nos permita eliminar líneas enteras de un log basándonos en direcciones IP individuales o rangos mediante expresiones regulares (regex).

La herramienta clave: grep en modo extendido

Para filtrar contenido en GNU/Linux descartando líneas completas, el comando por excelencia es grep. En lugar de buscar lo que queremos conservar, le indicamos lo que queremos excluir mediante el parámetro -v.

Para manejar rangos o múltiples patrones en una sola pasada, utilizaremos dos modificadores esenciales:

  • -v (--revert-match): Invierte el resultado de la búsqueda, conservando únicamente las líneas que no coinciden con el patrón.
  • -E (--extended-regexp): Activa las expresiones regulares extendidas, permitiéndonos usar operadores lógicos como la barra vertical (|) para el condicional «O» (OR) y corchetes [] para rangos numéricos.

Filtrado de rangos IP mediante Expresiones Regulares

A diferencia de las herramientas orientadas a red que interpretan notación CIDR (como /24), las utilidades del Shell procesan el archivo de log como texto plano. Por ello, traduciremos las subredes a expresiones regulares fijas.

A continuación, algunas equivalencias útiles para definir rangos dentro del patrón de filtrado:

Rango deseadoExpresión RegularExplicación
Subred /24 completa192\.168\.1\.Coincide con cualquier IP que comience por 192.168.1.
Subred /16 completa10\.0\.Coincide con cualquier IP que empiece por 10.0.
Rango .0 a .9172\.16\.0\.[0-9]\bFiltra del 172.16.0.0 al 172.16.0.9
Rango .10 a .19172\.16\.0\.1[0-9]\bFiltra del 172.16.0.10 al 172.16.0.19
IP única203\.0\.113\.45Filtra exclusivamente esa dirección

Nota: Es fundamental escapar los puntos (\.) con una barra invertida. De lo contrario, en expresiones regulares el punto actuaría como un comodín que representa cualquier carácter. Igualmente importante: los patrones que terminan en un dígito suelto (como [0-9] o 1[0-9]) deben cerrarse con \b (límite de palabra), o de lo contrario también harán match con números más largos que empiecen por esos mismos dígitos.

El Script Bash: filtrar_log.sh

A continuación se muestra la estructura completa del script. Este toma como entrada el archivo de log original y genera un nuevo archivo limpio sin las líneas asociadas a las IP definidas.

#!/bin/bash

# ==============================================================================
# Script de filtrado de IPs y rangos en logs de acceso
# Publicado en Indaga.net
# ==============================================================================

# Validar que se introduzcan los argumentos necesarios
if [ "$#" -ne 2 ]; then
    echo "Error: Argumentos insuficientes."
    echo "Uso: $0 <log_origen> <log_destino>"
    exit 1
fi

LOG_ORIGEN="$1"
LOG_DESTINO="$2"

# Verificar la existencia del archivo de origen
if [ ! -f "$LOG_ORIGEN" ]; then
    echo "Error: El archivo '$LOG_ORIGEN' no existe."
    exit 1
fi

# Definición de reglas y rangos a excluir (formato Regex)
PATRONES=(
    "192\.168\.1\."           # Subred 192.168.1.0/24
    "10\.0\."                  # Subred 10.0.0.0/16
    "172\.16\.0\.[0-9]\b"      # IPs del 172.16.0.0 al 172.16.0.9
    "172\.16\.0\.1[0-9]\b"     # IPs del 172.16.0.10 al 172.16.0.19
    "203\.0\.113\.45"          # Dirección IP única estática
)

# Unir el array de patrones utilizando la barra vertical (|) como separador OR
PATRON_REGEX=$(IFS='|'; echo "${PATRONES[*]}")

# Ejecución del filtrado con grep
grep -v -E "$PATRON_REGEX" "$LOG_ORIGEN" > "$LOG_DESTINO"
RESULTADO=$?

# Confirmación de salida
# grep devuelve: 0 = hubo líneas tras filtrar, 1 = ninguna línea coincidió
# (log resultante vacío, no es un error), 2 = error real (lectura, etc.)
if [ "$RESULTADO" -le 1 ]; then
    echo "Filtrado completado con éxito."
    echo "Archivo limpio guardado en: $LOG_DESTINO"
else
    echo "Ocurrió un error al procesar el archivo."
fi

Modo de empleo

  1. Guardar el archivo: Crea el script en tu servidor, por ejemplo con nano filtrar_log.sh.
  2. Asignar permisos de ejecución:
    chmod +x filtrar_log.sh
  3. Ejecutar el proceso: Pasa como primer argumento el log actual y como segundo el nombre del archivo resultante:
    ./filtrar_log.sh /var/log/nginx/access.log /var/log/nginx/access_limpio.log

Ejecución rápida en una sola línea (One-Liner)

Si no necesitas la estructura del script y buscas solucionar una tarea puntual en la terminal, puedes ejecutar el filtro directamente concatenando los patrones deseados:

grep -v -E "192\.168\.1\.|10\.0\.|172\.16\.0\.[0-9]\b" access.log > access_filtrado.log

Esta alternativa utiliza únicamente las utilidades nativas de cualquier sistema POSIX, garantizando un rendimiento óptimo al procesar grandes volúmenes de texto sin sobrecargar los recursos del sistema.

SYSADMIT, un veterano blog de administración de sistemas

sysadmit

Valencia, 13/09/2026, G.B.
Sigo ampliando el directorio de webs recomendadas con sitios que uso o consulto a menudo si me surgen dudas relativas a administración de sistemas; o por pura curiosidad. Hoy le toca el turno a SYSADMIT, un blog de referencia en castellano sobre sysadmin, mantenido por Xavier Genestós.

Qué es SYSADMIT

SYSADMIT es un blog de administración de sistemas con años de recorrido, alojado en Blogger, centrado en Windows Server, Windows Client, virtualización con VMware, backups con Veeam, y también con presencia de contenidos sobre Linux, Docker, PowerShell, Active Directory y redes. El propio autor ha publicado varios libros técnicos en castellano bajo el sello de la casa (como los de la serie «LABS»), lo que da una idea del nivel de detalle que maneja en sus artículos.

Qué se puede encontrar

El contenido está organizado por etiquetas, y ahí se ve claramente hacia dónde apunta el blog: VMware, Windows Client y Windows Server concentran el grueso de las entradas, seguidos de Veeam Backup, Networking y PowerShell. Linux también tiene su hueco, con posts sobre Docker (persistencia de datos, laboratorios rápidos, actualización de contenedores) que están bastante bien explicados para quien se inicia en contenedores.

El formato de los artículos es el típico de guía práctica: se plantea un problema o una tarea concreta (por ejemplo, ver el tamaño de un directorio con PowerShell, o desinstalar un parche desde línea de comandos) y se resuelve paso a paso, sin rodeos.

Por qué lo recomiendo

Me parece un blog útil sobre todo si te mueves en entornos mixtos Windows/Linux, algo muy habitual en el día a día de un sysadmin. Yo ya no llevo servidores Windows como antes,  pero sigo consultándolo cuando me surge alguna duda de la vieja escuela.

Feeds, sitemap y una cabecera que sobra: pequeña auditoría de un sitio WordPress con curl

curl

Valencia, 08/09/2026, G.B.
Hay comandos que uno lanza casi por rutina y que, sin embargo, acaban destapando cosas interesantes. La semana pasada me tocó revisar el sitemap nativo de uno de mis sitios en WordPress y, de paso, aproveché para repasar algo que tenía pendiente desde hace tiempo: los feeds del sitio y una cabecera HTTP que no debería estar ahí.

Qué es el feed de un sitio en WordPress

El feed es una versión del contenido en XML —normalmente RSS 2.0, aunque WordPress también sabe hablar Atom— pensada para que lectores de noticias, agregadores o scripts consuman las entradas sin tener que «leer» el HTML de la página. Es una de esas piezas del núcleo de WordPress que llevan ahí desde siempre y que casi nadie mira hasta que algo deja de funcionar (a mí me pasó hace poco con un gadget de Blogger de terceros que dejó de refrescar entradas porque un Disallow: */feed/ en el robots.txt se lo estaba impidiendo).

Lo interesante es que WordPress no genera un único feed, sino uno por cada «vista» relevante del sitio:

  • Feed general, con todas las entradas: /feed/
  • Feed de comentarios de todo el sitio: /comments/feed/
  • Feed de una categoría: /category/nombre-categoria/feed/
  • Feed de una etiqueta: /tag/nombre-etiqueta/feed/
  • Feed de un autor: /author/nombre-autor/feed/
  • Feed de comentarios de una entrada concreta: /nombre-entrada/feed/
  • Feed de una búsqueda: /?s=termino&feed=rss2
  • Feed de un tipo de contenido personalizado, si el CPT lo soporta: /tipo-contenido/feed/

Y todavía hay una capa más: dentro de cada uno de esos ámbitos, el formato de salida se puede forzar con el parámetro ?feed=, con hasta cuatro variantes: rss2 (el que usa WordPress por defecto), rss (RSS 0.92, un formato ya legado), atom y rdf (RSS 1.0). En total, contando ámbitos y formatos, un sitio WordPress típico expone bastantes más «puertas de entrada» XML de las que uno recuerda a primera vista.

El sitemap no es un feed

Conviene no confundir los feeds con el sitemap. Desde WordPress 5.5 (2020), el núcleo genera automáticamente un sitemap XML nativo en /wp-sitemap.xml, sin necesidad de plugins de SEO. No es RSS ni Atom: es un índice que agrupa entradas, páginas, taxonomías y usuarios en sub-sitemaps independientes (wp-sitemap-posts-post-1.xml, wp-sitemap-users-1.xml, etc.), pensado para que los buscadores rastreen el sitio de forma eficiente.

Para comprobar rápidamente si el sitemap responde bien, sin descargarlo entero, uso el comando curl:

curl -I https://midominio.com/wp-sitemap.xml

El -I fuerza una petición HEAD: solo pide las cabeceras HTTP de la respuesta, no el cuerpo. Es la forma más rápida de saber si una URL existe, qué código de estado devuelve y qué tipo de contenido sirve, sin gastar ancho de banda en el XML completo.

Lo que las cabeceras cuentan (y lo que delatan)

Al lanzar ese curl -I contra uno de mis sitios, obtuve algo así (he sustituido la versión de PHP que aparecía por X.X.XX en el código que adjunto por motivos de seguridad):

HTTP/2 200
content-type: text/xml;charset=UTF-8
date: Fri, 04 Sep 2026 06:42:34 GMT
server: Apache
x-powered-by: PHP/X.X.XX

Todo correcto salvo un detalle: x-powered-by: PHP/X.X.XX está anunciando al mundo, con número de versión exacto, qué motor PHP corre detrás. No es una vulnerabilidad en sí misma, pero sí información gratuita para cualquiera que esté buscando qué CVEs probar contra esa versión concreta. Es el tipo de cabecera que no aporta nada al visitante legítimo y sí algo a quien está reconociendo el terreno.

La buena noticia es que server: Apache ya venía sin número de versión, así que esa parte no hacía falta tocarla.

Cómo quitar la cabecera con php.ini

Yo tengo creado el archivo php.ini (o .user.ini) propio en el directorio del sitio. El mío ya incluía algunos ajustes habituales:

upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300
memory_limit = 512M
zlib.output_compression = 1
zlib.output_compression_level = 9

Simplemente basta con añadir una línea más:

expose_php = Off

Tras guardar el archivo -y en algunos casos esperar unos minutos a que el hosting recargue la configuración- un nuevo curl -I me ha confirmado que la cabecera x-powered-by había desaparecido. Un cambio de una sola línea, pero de esos que conviene no dejar pendientes.

Resumiendo

  • Un sitio WordPress puede exponer más de media docena de feeds distintos, cada uno con hasta cuatro formatos posibles.
  • El sitemap nativo (/wp-sitemap.xml) es una pieza distinta, propia del núcleo desde la versión 5.5.
  • curl -I es la herramienta de cabecera rápida para auditar cualquier URL sin descargar su contenido.
  • Si tu hosting lo permite, expose_php = Off en tu php.ini o .user.ini es un cambio mínimo con un beneficio de seguridad nada despreciable.

Un plugin propio para aprender comandos básicos de Linux en WordPress

plugin comandos linux

Tal y como comentaba aquí, he preparado un pequeño plugin para mostrar comandos de Linux, para aprender, vaya. Insertaré el shortcode en una nueva página, en vez de en una entrada o post

Valencia, 06/09/2026, G.B.
Llevo tiempo trabajando en plugins a medida, sin dependencias externas, para cubrir necesidades muy concretas sin cargar el sitio con librerías de terceros. El último que he montado va dirigido a quien empieza con Linux: Comandos Linux, un plugin que permite gestionar una pequeña base de datos de comandos —con su explicación y un ejemplo práctico— y mostrarla en el front end mediante un shortcode.

Qué hace

El plugin crea su propia tabla en la base de datos con cuatro campos por registro:

  • Nombre del comando (ls, grep, chmod…)
  • Explicación, en lenguaje sencillo
  • Ejemplo práctico, listo para copiar y probar en terminal

Desde el panel de administración se pueden crear, editar y eliminar comandos con un formulario simple, y el listado incluye un buscador y paginación para cuando la lista crezca.

El shortcode

Para mostrarlo en cualquier entrada o página basta con insertar, entre corchetes []:

comandos_linux

El front end reproduce la misma lógica que el panel: buscador propio y resultados paginados, sin necesidad de recargar toda la página gracias a los parámetros por URL. Si se quiere ajustar cuántos comandos se muestran por página, se puede indicar con (entre corchetes []:

comandos_linux por_pagina="10"

Porqué así

Como en el resto de plugins que he ido publicando aquí, la idea es mantenerlo ligero: sin librerías externas, con consultas preparadas contra la base de datos, y siguiendo el patrón POST/Redirect/GET para evitar reenvíos accidentales de formularios. Es la misma filosofía que ya apliqué en el plugin de recursos o en el de autores: cubrir una necesidad concreta con el menor peso posible.

De momento arranca con comandos básicos como ls, cd, grep o chmod, pero la idea es irlo ampliando poco a poco a medida que vaya cubriendo más terreno, desde gestión de permisos hasta redes o procesos.

Así queda insertado el shortcode en una página  (iré añadiendo más y mejorándolo): Comandos Linux


Descargar el plugin desde mi cuenta de pCloud

GentleOS: el sistema operativo que resucita ordenadores de los años 80

GentleOS es un proyecto creado por el desarrollador Luke S. (luke8086) capaz de arrancar un escritorio gráfico completo en PCs de hace más de 40 años. Existen dos variantes: GentleOS/32, para máquinas i386 con solo 4 MB de RAM, y GentleOS/16, aún más ligero, que funciona en procesadores 8086/80186 de 1978-1982 con apenas 192 KB de RAM y gráficos CGA.

No requiere disco duro ni conexión a internet: todo corre en memoria y arranca casi al instante, a costa de renunciar a multitarea, red o almacenamiento persistente. Es software libre bajo licencia GPLv2.

📥 Descarga:
GentleOS/32
GentleOS/16

🔗 Fuente: ComputerHoy (20minutos)

Clementine, mi reproductor de música en Linux

clementine
  • Ahora mismo escuchando una canción en Clementine que grabé con mi hermano Gianni: «Tasmanian Blues»… Igual se me ocurre algún día subirla algún repositorio de música gratuito. Tendré que consultarlo. Ya veremos…

Valencia, 31/08/2026, G.B.
Llevo tiempo usando Clementine en mi Ubuntu MATE 22.04, y sigue siendo mi opción de cabecera para gestionar música local. Es un reproductor multiplataforma, gratuito y de código abierto, que nació en 2010 como bifurcación de Amarok 1.4, cuando ese proyecto dio el salto a una interfaz que a muchos no nos habría convencido.

Lo que más valoro de Clementine es justamente eso: mantiene una interfaz clásica, ligera y muy funcional, sin florituras innecesarias. Para quien viene de iTunes o del Amarok de toda la vida, resulta muy intuitivo.

Lo que ofrece:

  • Gestión de biblioteca musical local con portadas y etiquetas
  • Reproducción de streaming (SoundCloud, Jamendo, radios de internet)
  • Compatible con MP3, FLAC, OGG, WMA y más formatos habituales
  • Ecualizador, letras de canciones y sincronización con dispositivos MP3/iPod
  • Consumo de recursos muy contenido, algo que se agradece en equipos más modestos

Es software libre bajo licencia GPL, y aunque su ritmo de desarrollo se ha ralentizado respecto a sus años de mayor actividad (2010-2015), sigue recibiendo actualizaciones puntuales y cuenta con una comunidad fiel, sobre todo en el mundo Linux.

Web oficial: clementine-player.org

Métodos de instalación de programas en Linux: apt, snap, Flatpak y AppImage

flatpak

Valencia, 26/08/2026, G.B.
Si vienes de Windows o macOS, seguro que lo tienes claro: descargas un instalador, haces doble clic y listo. En Linux la cosa es distinta, porque no hay un solo sistema de instalación, sino varios que conviven. Esto puede resultar confuso al principio, pero cada uno tiene su razón de ser. Vamos a repasarlos de forma sencilla.

APT: el clásico de Debian y Ubuntu

apt (Advanced Package Tool) es el gestor de paquetes tradicional de las distribuciones basadas en Debian, como Ubuntu, Linux Mint o Pop!_OS. Funciona conectándose a unos repositorios oficiales (servidores donde están alojados los programas ya compilados y listos para tu sistema) y descargando desde ahí. Personalmente es el método que más utilizo, y sospecho que la mayoría de los usuarios de GNU LInux.

Ejemplo de uso básico:

sudo apt update        # actualiza la lista de paquetes disponibles
sudo apt install firefox   # instala un programa
sudo apt remove firefox    # lo desinstala

Ventajas:
– Muy integrado con el sistema, gestiona bien las dependencias (las «piezas» que un programa necesita para funcionar).
– Ligero: no duplica librerías entre programas.
– Es el método más estable y probado.

Inconvenientes:
– Los paquetes de los repositorios oficiales a veces no son la última versión del programa, ya que priorizan estabilidad.
– Solo funciona en distribuciones basadas en Debian/Ubuntu (otras familias usan dnf, pacman, etc.).

Snap: el sistema universal de Canonical

Snap es una tecnología creada por Canonical (la empresa detrás de Ubuntu) para poder distribuir programas que funcionen igual en cualquier distribución Linux, sin depender de sus repositorios específicos.

La idea clave es que un «snap» incluye, dentro del propio paquete, casi todas las dependencias que necesita para funcionar. Por eso ocupan más espacio, pero a cambio son más independientes del sistema.

sudo snap install spotify
sudo snap remove spotify

Ventajas:
– Últimas versiones de los programas, normalmente actualizadas de forma automática.
– Funciona en teoría en cualquier distribución.
– Aislamiento (sandboxing): cada snap corre en un entorno algo separado del sistema, lo que aporta seguridad.

Inconvenientes:
– Suelen tardar algo más en abrirse (arranque más lento).
– Ocupan más espacio en disco.
– Dependen de una tienda centralizada (Snap Store) controlada por Canonical, lo que a algunos usuarios no les convence.

Flatpak / Flathub: la alternativa independiente

Flatpak es un sistema similar a Snap en su filosofía (paquetes autocontenidos que funcionan en cualquier distribución), pero desarrollado de forma independiente, sin depender de una única empresa. Flathub es la tienda o repositorio más popular donde se publican aplicaciones en formato Flatpak.

flatpak install flathub org.videolan.VLC
flatpak run org.videolan.VLC

Ventajas:
– No depende de ninguna empresa concreta; el proyecto es más comunitario.
– También aísla las aplicaciones del sistema, mejorando la seguridad.
– Muy usado por muchas distribuciones (Fedora lo trae integrado de serie, por ejemplo).

Inconvenientes:
– Al igual que Snap, ocupa más espacio en disco por duplicar dependencias.
– Requiere instalar primero el propio Flatpak y añadir el repositorio de Flathub si tu distribución no lo trae ya configurado.

AppImage: el programa «portable»

AppImage es un enfoque diferente: no es un gestor de paquetes con instalación y desinstalación como tal, sino un único archivo ejecutable que contiene toda la aplicación y lo necesario para funcionar. Se parece un poco a los ejecutables portables de Windows.

Uso típico:

  1. Descargas el archivo .AppImage desde la web del programa.
  2. Le das permisos de ejecución:
    bash
    chmod +x programa.AppImage
  3. Lo ejecutas directamente haciendo doble clic o desde terminal:
    bash
    ./programa.AppImage

Ventajas:
– No requiere instalación ni permisos de administrador.
– Puedes tener varias versiones del mismo programa en distintas carpetas sin conflictos.
– Es muy fácil de eliminar: basta con borrar el archivo.

Inconvenientes:
– No se actualiza solo (salvo que el propio programa incluya un sistema de actualización interno).
– No aparece integrado en el menú de aplicaciones por defecto (aunque hay herramientas como AppImageLauncher que solucionan esto).
– Cada AppImage lleva sus propias dependencias, así que también ocupa más espacio.

¿Cuál elegir?

No hay una respuesta única, depende de lo que busques:

  • apt: para el uso diario y programas del sistema, priorizando estabilidad e integración.
  • Snap: si tu distribución lo trae de serie (como Ubuntu) y quieres comodidad con actualizaciones automáticas.
  • Flatpak/Flathub: buena alternativa a Snap, especialmente en distribuciones que no son de la familia Ubuntu.
  • AppImage: ideal para probar un programa puntual, sin instalarlo «de verdad», o cuando quieres portabilidad total.

En la práctica, es habitual combinar varios métodos en un mismo sistema: apt para la base y herramientas del sistema, y Snap, Flatpak o AppImage para aplicaciones concretas que necesitas siempre en su última versión. No hay nada de malo en ello, cada herramienta cubre una necesidad distinta.