Arch, Debian, Suckless and wrapping up the Linux experience
Después de un tiempo tinkereando con un thinkpad t480 de segunda mano que terminé comprando en un recondito lugar de la ciudad en donde vivo, he estado probando distintas distros y ambientes de escritorio pero en general me centraré en dos distribuciones de Linux que a mi parecer son las más importantes: Debian y Arch. Además de esto quise probar un nuevo Tiling windows manager que también me había llamado la atención y bueno un conjunto de softwares que engloban una filosofía interesante: Suckless.
Algunas experiencias con Arch y Debian
Para empezar con las distribuciones, Debian es increiblemente sencillo para empezar, la instalación es abordable, y debo admitir que me gusta que sea (o que pretenda ser) 100% software libre, además de que una vez que haces el proceso de instalación el escritorio que elijas simplemente funciona, sin sorpresas, es una una roca y por supuesto no esperas mucho en el horizonte respecto a las actualizaciones. De hecho cada vez que hice un apt update, simplemente estaba todo al día. Por lo que es una distribución bastante aburrida si es que quieres que te sorprenda con nuevas cosas constantemente, pero para mi esto es algo bastante positivo, dado que mantiene las certezas en el sistema, sabes que no va a fallar salvo que hagas algo estupido. Respecto a software que instalas, obviamente es donde notas la brecha, ya que Debian es bastante conservador a la hora de portar software a su repositorio principal y por lo mismo no es raro que tendrás versiones de software que pueden tener 10 o 12 meses de diferencia con respecto a la versión actual de desarrollo, puede que no sea un gran problema, pero cada software tiene una velocidad de desarrollo distinta, y en un año puedes tener grandes diferencias, además, si vienes acarreando versiones más actualizadas de programas que tienen algún tipo de config file, eso puede ser un problema. Un ejemplo donde noté esto fue cuando quise instalar Alacritty y portar mi .toml file con mis configuraciones, al usarlo me percaté que los cambios no se aplicaron, la razón fue que la versión de alacritty que viene de apt Debian, era una versión antigua que usaba archivos .yml , por lo que tenía que 1) adaptar mis archivos de configuración a esta versión lo cual para este caso no era complicado ó 2) compilar desde el código fuente.
Compilar desde el código fuente no es un mal approach, sin embargo, significa que quedas a la deriva de que tu administrador de paquetes pueda hacerce cargo de las actualizaciones futuras, y obviamente eso puede representar un riesgo, un asunto importante de un sistema como Linux es que tengas tus software actualizados y que operen de forma armónica con tu sistema operativo. Por supuesto, no hay nada de malo en compilar desde el codigo fuente, yo lo he hecho con algunos software pero es importante notar que no es lo más deseable. Sin embargo, algo positivo a reconocer es que Debian tiene un repositorio basto lo que reduce las posibilidades de que tengas que llegar a instalar desde el código fuente.
Por otro lado, ahora estoy usando Arch (btw) así que todavía estoy en un proceso de experimentación con esta variante, Arch es distinto en su proceso de instalación, aunque ahora hay un script que simplifica el proceso, la instalación manual es en la terminal digitando comandos y donde tienes que seguir las instrucciones de la wiki, no es tan dificil, pero obviamente es más probable de que te puedas equivocar en el transcurso y por lo tanto la cagues, de hecho yo la embarré un par de veces porque no configuré bien el driver de Nvidia y por lo tanto mi sistema falló, por lo que tuve que optar por reiniciar el proceso de nuevo.
Si quieres software actualizado esta es la distribución e incluso si quieres acceder a software propietario, Arch no tiene problemas, es una distribución agnóstica y por lo tanto tiene una mentalidad laissez-faire con respecto a los usuarios, puedo correr el analogo apt update que en este caso es Pacman -Syu cada día y puede que hayan nuevas actualizaciones. Obviamente con software como Alacritty o Neovim no tuve que llegar a compilarlo desde el código fuente porque Arch de por si ya provee actualizaciones recientes lo cual también es un agrado no tener que intervenir directamente con el código, otra cosa es que además de el repositorio de base, Arch cuenta con el AUR que es otro repositorio donde la comunidad puede subir software y por supuesto eso permite que tus posibilidades se amplien, sin embargo en mi experiencia, es en la AUR donde tienes más posibilidades de fallo de software.
Aquí otros ejemplos de software que me permitieron comparar las distribuciones. Como me gusta ver anime, quise instalar ani-cli que es una aplicación para ver el contenido desde la terminal (hay que agradecer que la comunidad hacker es bastante otaku), desafortunadamente, este software en Debian no esta considerado en su repositorio principal todavía y será recien agregado al parecer en la versión 13, por lo que una opción era compilarlo, pero finalmente desistí hacerlo. En cambio, con Arch no hubo ningún problema, el repo estaba en AUR así que la instalación fue bastante simple. El segundo caso, fue Anki, una aplicación de flashcards, la cual me gusta y la he usado mucho para aprender idiomas por lo que pensé en instalarlo también en mi pc (aunque la app de Android esta bastante bien la verdad), lamentablemente Anki es un despelote, fuí a la documentación y traté de instalarlo siguiendo el instructivo pero tuve problemas en el proceso, afortunadamente Debian tiene Anki en su repositorio principal, por lo que instalarlo con apt era la mejor opción, por otro lado Arch lo tenía en el AUR, sin embargo, tuve problemas con la instalación por lo que no continué con el asunto. El tercer y último caso fue Librewolf, en este caso Debian no tuvo problemas, al seguir los pasos de la documentación el asunto funcionó sin problemas, Arch lo tenía en la AUR, y el proceso de instalación tomó bastante tiempo y finalmente tuve problemas con eso, pero no me hice muchos problemas con el asunto por lo que simplemente agregué el user.js de Arkenfox para asegurar una mejor privacidad a Firefox.
Como nota aparte, debo ensalzar la Wiki de Arch Linux, puede o no gustarte arch, pero creo que nadie puede negar de que su documentación es de gran nivel, me sirvió ver un caso puntual donde quería ver la forma de instalar en el teclado en japones los kanas propios de la escritura de este idioma, revisé la documentación en Debian y Arch, finalmente este último me dió las instrucciones claras sobre como configurarlo correctamente, además de que en otras ocasiones cuando he tenido problemas con algo en en Debian/Ubuntu/Fedora o el mismisimo Arch la Wiki ha sido de ayuda.
Finalmente quiero destacar que ambos tienen posibilidades de realizar instalaciones minimas, por lo que si tienes una laptop con restricciones de hardware, creo que no hay problema con ninguna de esta variantes para que puedas hacer una instalación mínima y en vez de usar un ambiente de escritorio pesado (o bloated como le dicen en inglés), puedas usar un administrador de ventanas que será mucho más liviano y eficiente en recursos como Sway, I3 o dwm. A pesar de que escribí en otro post acerca de Sway, ahora quiero enfocarme en dwm y otro conjunto de softwares que pertenecen a suckless
Suckless: software menos basura
Suckless es una comunidad de hackers que han construído un conjunto de software que se basan en el concepto de minimalismo, simplicidad y frugalidad, parte de esta decisión lo puedes leer en su filosofía, pero para tratar de ir al grano, todo el código se escribe en C, y no existe archivos de configuración, si quieres hacer la instalación de esto, descargas el código y lo compilas, quieres hacer modificación de algo, vas directo al código fuente que esta escrito en C lo modificas y recompilas. Los software más importantes (en mi opinión) son:
- st un emulador de terminal
- dwm el administrador de ventanas
- dmenu el menu dinamico que puedes usar para ejecutar tus programas
Algo que tienes que notar es que este software posee características minimas, por ejemplo St no tiene forma de escrollear, tampoco tiene para acceder a hacer tu terminal transparente, si quieres lograr esto, tienes dos opciones: la primera es escribir el código por tu cuenta, pero si eres como yo que no tiene idea de C entonces acceder a los patches que la comunidad ha creado y mejorado en el tiempo es la opción, así por ejemplo a la terminal le puedo agregar la transparencia con alpha y un esquema de colores gruvbox. A dwm puedo ponerle parches para agregarle gaps con useless gaps. todo esto solo con el comando
patch -p1 < path/to/patch
Cabe destacar, de que empezar a agregar patches puede conllevar a errores, por lo que tendras que ser tu quien haga los ajustes correspondientes por los fallos, y en algunos casos si tienes varios patches en mente, tienes que considerar de que existe un orden más apropiado de hacerlo para reducir la cantidad de potenciales errores. Obviamente la idea no es que vayas y tomes una colección que te “tinque” de patches y los apliques, pero que seas mucho más austero y los vayas seleccionando según una necesidad real vaya apareciendo, por ejemplo dwm solo le apliqué useless gaps por un poco de estetica, pero la verdad por si solo dwm ha sido fantastico, la verdad es que no he tenido intención de agregarle otro patch por ahora, st no he tenido la necesidad de agregarle scrolling, dado que uso bastante tmux, que cumple esa función de forma sustituta. Así que si te gusta agregarle cosas a tu aplicación solo por que si, es posible pero tendrás que lidiar con debugear los errores que vayan ocurriendo mientras agregas los patches.
Otros software que he ido agregando y que siguen una filosofía similar:
- nxiv: Para mostrar imagenes
- scrot: pantallazos
- feh: configurar una imagen como background
- cmus: reproductor de música
- ly: minimo administrador de sesiones.
- mpv: Reproductor de media
- slock: bloquear tu sistema con contraseña.
- xclip: clipboard de X11
Entre otros…
Obviamente tengo que destacar de que este tipo ejercicios para una maquina que realmente no es tan antigua y que tiene un hardware relativamente decente es un poco exagerado, como ejercicio valió la pena y me enseño harto sobre instalaciones mínimas y como puedes llegar a niveles de customización mientras mantienes el uso de recursos al minimo y de hecho seguiré usando esta configuración hasta que me aburra, pero si no estas interesado en eso Gnome o KDE corren bastante bien en una maquina como esta.
Conclusiones al cierre
Respecto a Arch y Debian no tengo una clara preferencia todavía, ambos tienen sus pros y contras, por el momento seguiré usando Arch para seguir evaluando que tal. Aunque hay otras distribuciones incluso algunas más hardcores como Gentoo, por ahora mi curiosidad no ha llegado a ese punto. Suckless software es una interesante perspectiva, bastante radical a las tendencias del mercado y bien de nicho, no me imagino que muchas personas quieran meterse en este punto, pero para los que si, estoy seguro de que es un buen ejercicio usar algo como dwm, inspeccionar el código en C, customizar, agregar patches, si puedes hacer eso, puede que la idea de hacer tu propio software para una necesidad puntual personal no sea tan descabellada. También me he divertido bastante con Linux durante estos últimos 4 meses, me ha enseñado bastante de como funciona un sistema operativo especialmente cuando he querido ir a niveles un poco más profundos y empezar a eliminar el uso de interfaces, no me voy a denominar como un “power user”, pero ciertamente hay cierto conocimiento que rescato y entiendo un poco más a esa gente que quiere conocer más su sistema y ajustarlo a su parecer y tener control absoluto de este. Si hay alguien que le interese saber cual fue mi “ruta de aprendizaje”, que por cierto no tuvo nada de planeado solo fue pura curiosidad yo lo describiría de la siguiente forma:
- Instalar software libre y de código abierto en tu propia maquina, incluso si estas en MacOS o Windows. Instalar y familiarizarte de sus usos básicos y si puedes incluirlo en algo que hagas diariamente mejor. Por ejemplo Vim, Python, R, libreoffice, etc.
- Aprender comandos básicos en una terminal: comandos como cd, mv, rm, cp, ls. Yo los uso constantemente hoy en día y yo recomendaría leer un poco al respecto y hacer unas pruebas para quitarle el miedo a la pantalla negra, luego puedes ir agregando nuevos comandos como curl, grep, sed, etc.
- Instalar Ubuntu u otra distribución amigable: Yo usé ubuntu en su momento, hay gente que lo critica actualmente por diversas razones. Pero algo que tiene ubuntu es que su proceso de instalación era super amigable, un look moderno, hay documentación de sobra en internet y funciona bien. Linux Mint parece otra buena alternativa a Ubuntu, pero no tengo experiencia con esa distribución. Esto es para un inicio, después si quieres moverte a otra distribución nada te impedirá hacerlo
- Familiarizarte con el administrador de paquetes: La primera forma de instalar software es desde la terminal usando tu package manager, si estas en ubuntu o Mint tendrás que usar algo como sudo apt update y luego sudo apt install tusoftware , hay otras alternativas de instalar software pero esta debería ser tu método prioritario.
- Instalar software compilando código fuente: Toma un software que te interese ve a su documentación o el repositorio donde se encuentre y lee sobre su proceso de instalación, probablemente además del package manager tendrá un espacio donde dará instrucciones de como hacerlo, sigue esas instrucciones.
- Usa un Tiling Windows Manager: Hay dos grandes ambientes de escritorio en Linux GNOME y KDE, ambos tienen un monton de features y puedes tranquilamente navegar en ellos, ajustar brillos, conectarte al wifi, explorar tus carpetas con archivos, screenshots, etc. Con un twm no tendrás nada de eso, y tendrás que revisar en como ejecutar cada uno de estos comandos, necesitas conectar tu mouse por bluetooth, una posible solución es instalar bluez y bluez utils, abrir la terminal y usa el comando bluetoothctl, también hay opciones con GUI, pero dependerá de ti ver la forma de ejecutarlo. Juega con esto y si quieres trata de hacer un ricing (configurar tu entorno para que se vea esteticamente atractivo).
- Crea un servidor remoto y ejecuta algunos programas en ellos: Si tienes una laptop antigua, o una raspberry pi, o rentar un vps, puedes tratar de crear un servidor remoto donde puedas alojar algunos programas, esto es el camino a otro mundo que es el self-hosting, soy bastante novato en esto, pero hay un par de experiencias que te pueden enseñar algo, por ejemplo crea una página web personal y hostealo en tu servidor, compra tu dominio y redireccionalo a tu página web. Una cosa que hice por ejemplo fue deshacerme de Kindle y hostear mis libros en Calibre, por lo que ahora puedo acceder a mi librería personal desde mi propio servidor. Con esto puedes aprender un poco de conectarse via ssh, nginx, dns, docker, etc. Hay gente que hostea un montón de aplicaciones desde un frontend de youtube, correos, vpn, etc. Ahí puedes ver por tu cuenta que hacer.
- Instala Arch Linux manualmente: Si instalaste Ubuntu antes, notarás que el proceso es bastante sencillo en general, instalar Arch es más complejo, pero te va a enseñar a como hacer un sistema operativo desde cero, así podrás entender para que son algunas de las librerías de base, hacer las particiones manualmente, configurar red, zona horaria, teclado, decidir entre X11 o Wayland, etc. Trata de usarlo por un periodo de tiempo como primera maquina y usalo para todo lo que puedas.
- Contribuye a Linux: Me declaro culpable de no hacerlo todavía, supongo que esto es una nota para el futuro.
En fin, ha sido un camino interesante y creo que seguire usando Linux para mis maquinas personales. Probablemente seguire viendo algunas cosas de selfhosting, pero creo que ya tuve suficiente con los ricing y probar distribuciones, es tiempo de moverse a otro tema.