Skip to main content

the avatar of Federico Mena-Quintero

Automating my home network with Salt

I'm a lousy sysadmin.

For years, my strategy for managing my machines in my home network has been one of maximum neglect:

  • Avoid distribution upgrades or reinstalls as much as possible, because stuff breaks or loses its configuration.

  • Keep my $HOME intact across upgrades, to preserve my personal configuration files as much as possible, even if it accumulates vast amounts of cruft.

  • Cry when I install a long-running service on my home server, like SMB shares or a music server, because I know it will break when I have to reinstall or upgrade.

About two years ago, I wrote some scripts to automate at least the package installation step, and to set particularly critical configuration files like firewall rules. These scripts helped me lose part of my fear of updates/reinstalls; after running them, I only needed to do a little manual work to get things back in working order. The scripts also made me start to think actively on what I am comfortable with in terms of distro defaults, and what I really need to change after a default installation.

Salt

In my mind there exists this whole universe of scary power tools for large-scale sysadmin work. Of course you would want some automation if you have a server farm to manage. Of course nobody would do this by hand if you had 3000 workstations somewhere. But for my puny home network with one server and two computers? Surely those tools are overkill?

Thankfully that is not so!

My colleague Richard Brown has been talking about the Salt Project for a few years. It is similar to tools for provisioning and configuration management like Ansible or Puppet.

What I have liked about Salt so far is that the documentation is very good, and it has let me translate my little setup into its configuration language while learning some good practices along the way.

I started with the Salt walkthrough, which is pretty nice.

TL;DR: the salt-master is the central box that keeps and distributes configuration to other machines, and those machines are called salt-minions. You write some mostly-declarative YAML in the salt-master, and propagate that configuration to the minions. Salt knows how to "create a user" or "install a package" or "restart a service when a config file changes" without you having to use distro-specific commands.

My home setup and how I want it to be

pambazo - Has a RAID and serves media and stores backups. This is my home server.

tlacoyo - A desktop box, my main workstation.

torta - My laptop, which has seen very little use during the pandemic; in principle it should have an identical setup to my desktop box.

I open the MDNS firewall ports on those three machines so I can use somehost.local to access them directly, without having to set up DNS. Maybe I should learn how to do the latter.

All the machines need my basic configuration files (Emacs, shell prompt), and a few must-have programs (Emacs, Midnight Commander, git, podman).

My workstations need my gitlab/github SSH keys, my Suse VPN keys, some basic infrastructure for development, I need to be able to reinstall and reconstruct them quickly.

All the machines should get the same configuration for the two printers we have at home (a laser that can do two-sided printing, and an inkjet for photos).

My home server of course needs all the configuration for the various services it runs.

I also have a few short-lived virtual machines to test distro images. In those I only need my must-have packages.

Setting up the salt master

My home server works as the "salt master", which is the machine that holds the configuration that should be distributed to other boxes. I am just using the stock salt-master package from openSUSE. The only things I changed in its default configuration were the paths where it looks for configuration, so I can use a git checkout in my home directory instead of /etc/salt. This goes in /etc/salt/master:

# configuration for minions
file_roots:
  base:
    - /home/federico/src/salt-states

# sensitive data to be distributed to minions
pillar_roots:
  base:
    - /home/federico/src/salt-pillar

Setting up minions

It is easy enough to install the salt-minion package and set up its configuration to talk to the salt-master, but I wanted a way to bootstrap that. Salt-bootstrap is exactly that. I can run this on a newly-installed machine:

curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh -w -A 192.168.1.10 -i my-hostname stable

The first line downloads the bootstrap-salt.sh script.

The second line:

  • -w - use the distro's packages for salt-minion, not the upstream ones.

  • -A 192.168.1.10 - the IP address of my salt-master. At this point the machine that is to become a minion doesn't have MDNS ports open yet, so it can't find pambazo.local directly and it needs its IP address.

  • -i my-hostname - Name to give to the minion. Salt lets you have the minion's name different from the hostname, but I want them to be the same. That is, I want my tlacoyo.local machine to be a minion called tlacoyo, etc.

  • stable - Use a stable release of salt-minion, not a development one.

When the script runs, it creates a keypair and asks the salt-master to register its public key. Then, on the salt-master I run this:

salt-key -a my-hostname

This accepts the minion's public key, and it is ready to be configured.

The very basics: set the hostname, open up MDNS in the firewall

I want my hostname to be the same as the minion name. Make it so!

'set hostname to be the same as the minion name':
  network.system:
    - hostname: {{ grains['id'] }}
    - apply_hostname: True
    - retain_settings: True

Salt uses Jinja templates to preprocess its configuration files. One of the variables it makes available is grains, which contains information inherent to each minion: its CPU architecture, amount of memory, OS distribution, and its minion id. Here I am using {{ grains['id'] }} to look up the minion id, and then set it as the hostname.

To set up the firewall for desktop machines, I used YaST and then copied the resulting configuration to Salt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
/etc/firewalld/firewalld.conf:
  file.managed:
    - source: salt://opensuse/desktop-firewalld.conf
    - mode: 600
    - user: root
    - group: root

/etc/firewalld/zones/desktop.xml:
  file.managed:
    - source: salt://opensuse/desktop-firewall-zone.xml
    - mode: 644
    - user: root
    - group: root

firewalld:
  service.running:
    - enable: True
    - watch:
      - file: /etc/firewalld/firewalld.conf
      - file: /etc/firewalld/zones/desktop.xml

file.managed is how Salt lets you copy files to destination machines. In lines 1 to 6, salt://opensuse/desktop-firewalld.conf gets copied to /etc/firewalld/firewalld.conf. The salt:// prefix indicates a path under your location for salt-states; this is the git checkout with Salt's configuration that I mentioned above.

Lines 15 to 20 tell Salt to enable the firewalld service, and to restart it when either of two files change.

Indispensable packages

I cannot live without these:

'indispensable packages':
  pkg.installed:
    - pkgs:
      - emacs
      - git
      - mc
      - ripgrep

pkg.installed takes an array of package names. Here I hard-code the names which those packages have in openSUSE. Salt lets you do all sorts of magic with Jinja and the salt-pillar mechanism to have distro-specific package names, if you have a heterogeneous environment. All my machines are openSUSE, so I don't need to do that.

My username, and personal configuration files

This creates my user:

federico:
  user.present:
    - fullname: Federico Mena Quintero
    - home: /home/federico
    - shell: /bin/bash
    - usergroup: False
    - groups:
      - users

This just copies a few configuration files:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{% set managed_files = [
  [ 'bash_profile',  '.bash_profile',         644 ],
  [ 'bash_logout',   '.bash_logout',          644 ],
  [ 'bashrc',        '.bashrc',               644 ],
  [ 'starship.toml', '.config/starship.toml', 644 ],
  [ 'gitconfig',     '.gitconfig',            644 ],
] %}

{% for file_in_salt, file_in_homedir, mode in managed_files %}

/home/federico/{{ file_in_homedir }}:
  file.managed:
    - source: salt://opensuse/federico-config-files/{{ file_in_salt }}
    - user: federico
    - group: users
    - mode: {{ mode }}

{% endfor %}

I use a Jinja array to define the list of files and their destinations, and a for loop to reduce the amount of typing.

Install some flatpaks

Install the flatpaks I need:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
'Add flathub repository':
  cmd.run:
    - name: flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo
    - runas: federico

{% set flatpaks = [
   'com.github.tchx84.Flatseal',
   'com.microsoft.Teams',
   'net.ankiweb.Anki',
   'org.gnome.Games',
   'org.gnome.Solanum',
   'org.gnome.World.Secrets',
   'org.freac.freac',
   'org.zotero.Zotero',
] %}

install-flatpaks:
  cmd.run:
    - name: flatpak install --user --or-update --assumeyes {{ flatpaks | join(' ') }}
    - runas: federico
    - require:
      - 'Add flathub repository'

Set up one of their configuration files:

/home/federico/.var/app/org.freac.freac/config/.freac/freac.xml:
  file.managed:
    - source: salt://opensuse/federico-config-files/freac.xml
    - user: federico
    - group: users
    - mode: 644
    - makedirs: True

This last file is the configuration for fre:ac, a CD audio ripper. Flatpaks store their configuration files under ~/.var/app/flatpak-name. I configured the app once by hand in its GUI and then copied its configuration file to my salt-states.

Etcetera

The above is not all my setup; obviously things like the home server have a bunch of extra packages and configuration files. However, the patterns above are practically all I need to set up everything else.

How it works in practice

I have a git checkout of my salt-states. When I change them and I want to distribute the new configuration to my machines, I push to the git repository on my home server, and then just run a script that does this:

#!/bin/sh
set -e
cd /home/federico/src/salt-states
git pull
sudo salt '*' state.apply

The salt '*' state.apply causes all machines to get an updated configuration. Salt tells you what changed on each and what stayed the same. The slowest part seems to be updating zypper's package repositories; apart from that, Salt is fast enough for me.

Playing with this for the first time

After setting up the bare salt-master on my home server, I created a virtual machine and immediately registered it as a salt-minion and created a snapshot for it. I wanted to go back to that "just installed, nothing set up" state easily to test my salt-states as if for a new setup. Once I was confident that it worked, I set up salt-minions on my desktop and laptop in exactly the same way. This was very useful!

A process of self-actualization

I have been gradually moving my accumulated configuration cruft from my historical $HOME to Salt. This made me realize that I still had obsolete dotfiles lying around like ~/.red-carpet and ~/.realplayerrc. That software is long gone. My dotfiles are much cleaner now!

I was also able to remove my unused scripts in ~/bin (I still had the one I used to connect to Ximian's SSH tunnel, and the one I used to connect to my university's PPP modem pool), realize which ones I really need, move them to ~/.local/bin and make them managed under Salt.

To clean up that cruft across all machines, I have something like this:

/home/federico/.dotfile-that-is-no-longer-used:
  file.absent

That deletes the file.

In the end I did reach my original goal: I can reinstall a machine, and then get it to a working state with a single command.

This has made me more confident to install cool toys in my home server... like a music server, which brings me endless joy. Look at all this!

One thing that would be nice in Flatpak

Salt lets you know what changed when you apply a configuration, or it can do a dry run where it tells you what will change without actually modifying anything. For example, Salt knows how to query the package database for each distro and tell you if a package needs to be updated, or if an existing config file is different from the one that will be propagated.

It would be nice if the flatpak command-line tool would return this information. In the examples above, I use flatpak remote-add --if-not-exists and flatpak install --or-update to achieve idempotency, but Salt is not able to know what Flatpak actually did; it just runs the commands and returns success or failure.

Some pending things

Some programs keep state along with configuration in the same user-controlled files, and that state gets lost if each run of Salt just overwrites those files:

  • fre:ac, a CD audio ripper, has one of those "tip of the day" windows at startup. On each run, it updates the "number of the last shown tip" somewhere in its configuration for the user. However, since that configuration is in the same file that holds the paths for ripped music and the encoder parameters I want to use, the "tip of the day" gets reset to the beginning every time that Salt rewrites the config file.

  • When you load a theme in Emacs, say, with custom-enabled-theme in custom.el, it stores a checksum of the theme you picked after first confirming that you indeed want to load the theme's code — to prevent malicious themes or something. However, that checksum is stored in another variable in custom.el, so if Salt overwrites that file, Emacs will ask me again if I want to allow that theme.

In terms of Salt, maybe I need to use a finer-grained method than copying whole configuration files. Salt allows changing individual lines in config files, instead of overwriting the whole file. Copy the file if it doesn't exist; just update the relevant lines later?

I need to distill my dconf for GNOME programs installed on the system, as opposed to flatpaks, to be able to restore it later.

I'm sure there's detritus under ~/.config that should be managed by Salt... maybe I need to do another round of self-actualization and clean that up.

We have a couple of Windows machines kicking around at home, because schoolwork. Salt works on Windows, too, and I'd love to set them up for automatic backups to the home server.

a silhouette of a person's head and shoulders, used as a default avatar

Recopilación del boletín de noticias de la Free Software Foundation – abril de 2022

Recopilación y traducción del boletín mensual de noticias relacionadas con el software libre publicado por la Free Software Foundation.

¡El boletín de noticias de la FSF está aquí!

La Free Software Foundation (FSF) es una organización creada en Octubre de 1985 por Richard Stallman y otros entusiastas del software libre con el propósito de difundir esta filosofía.

La Fundación para el software libre (FSF) se dedica a eliminar las restricciones sobre la copia, redistribución, entendimiento, y modificación de programas de computadoras. Con este objeto, promociona el desarrollo y uso del software libre en todas las áreas de la computación, pero muy particularmente, ayudando a desarrollar el sistema operativo GNU.

Además de tratar de difundir la filosofía del software libre, y de crear licencias que permitan la difusión de obras y conservando los derechos de autorías, también llevan a cabo diversas campañas de concienciación y para proteger derechos de los usuarios frentes a aquellos que quieren poner restricciones abusivas en cuestiones tecnológicas.

Mensualmente publican un boletín (supporter) con noticias relacionadas con el software libre, sus campañas, o eventos. Una forma de difundir los proyectos, para que la gente conozca los hechos, se haga su propia opinión, y tomen partido si creen que la reivindicación es justa!!

Puedes ver todos los números publicados en este enlace: http://www.fsf.org/free-software-supporter/free-software-supporter

Después de muchos años colaborando en la traducción al español del boletín, desde inicios del año 2020 he decidido tomarme un descanso en esta tarea.

Pero hay detrás un pequeño grupo de personas que siguen haciendo posible la difusión en español del boletín de noticias de la FSF.

¿Te gustaría aportar tu ayuda en la traducción? Lee el siguiente enlace:

Por aquí te traigo un extracto de algunas de las noticias que ha destacado la FSF este mes de marzo de 2022

Libertad de coerción

Del 30 de marzo por Kyle Rankin

«Como usuario de software, tenga en cuenta el software del que depende, especialmente para aplicaciones críticas de seguridad o comerciales. ¿Está a salvo de puertas traseras forzadas o prohibiciones de software si los gobiernos se apoyan en sus proveedores?»

Esta publicación ofrece software gratuito como solución, ya que le permite a usted (o a alguien que designe) inspeccionar el código que se ejecuta en sus computadoras. El software gratuito, y solo el software gratuito, le permite revocar fácilmente la confianza, poseer y controlar completamente las claves y auditar su cadena de suministro digital.

Ley de Inteligencia Artificial (IA): ¡El software libre es clave!

Del 30 de marzo por la Free Software Foundation Europe

Free Software Foundation Europe (FSFE) pide al Parlamento Europeo que «incluya requisitos para liberar IA bajo una licencia de software libre». Identifican tres pilares importantes que guían sus demandas: innovación, control y confiabilidad. Lea el artículo, el documento de la FSFE dedicado a los responsables de la toma de decisiones y el hilo de discusión para obtener más información sobre la defensa de la FSFE en un tema de relevancia mundial.

Mantener la casa ordenada

Del 21 de marzo por Ludovic Courtès

GNU Guix, un «administrador de paquetes transaccionales y una distribución avanzada del sistema GNU que respeta la libertad del usuario», tiene una forma práctica de administrar y compartir archivos de configuración llamada «Guix Home».

Este artículo bien escrito e informativo explica la lógica detrás de Guix Home y cómo usarlo en su flujo de trabajo diario. La FSF es el patrocinador fiscal de Guix y puedes donar para apoyar el trabajo del proyecto.

Primer programa informático con certificación ecológica: el popular lector de PDF de KDE, Okular

Del 16 de marzo por Joseph Veaugh-Geiss

En febrero de 2022, Okular recibió la etiqueta ambiental Blue Angel, la etiqueta ambiental oficial otorgada por el gobierno alemán. «Las cuatro libertades siempre han puesto al software libre a la vanguardia del diseño de software sostenible.

Lo que es nuevo es que los valores [del software libre] ahora son reconocidos como directamente relacionados con la sostenibilidad por organizaciones como la Agencia Ambiental Alemana (Umweltbundesamt), que desarrolló los criterios de adjudicación».

apoyo_fsf

Estas son solo algunas de las noticias recogidas este mes, pero hay muchas más muy interesantes!! si quieres leerlas todas (cuando estén traducidas) visita este enlace:

Y todos los números del «supporter» o boletín de noticias de 2022 aquí:

Support freedom

—————————————————————

a silhouette of a person's head and shoulders, used as a default avatar

The cult of Amiga and SGI, or why workstations matter

I’m considered to be a server guy. I had access to some really awesome server machines. Still, when computers come up in discussions, we are almost exclusively talk about workstations. Even if servers are an important part of my life, that’s “just” work. I loved the SGI workstations I had access to during my university years. Many of my friends still occasionally boot their 30 years old Amiga boxes.

The cult of Amiga

One would say that the Amiga was popular in the eighties and early nineties. They were revolutionary desktop computers, ahead of their time in many ways. Way better multimedia capabilities than the x86 PCs of that age and a more responsive operating system as well. By the mid nineties they lost their technical advantages and the company went bankrupt. However, thirty years later people still boot these computers and even now new software is still developed. These boxes rarely change owners and if they do, they cost a smaller fortune.

Once upon a time I worked for Genesi. I was a Linux guy and I worked on quality assurance of Linux on their PowerPC boxes. It took a while for me to realize that at heart they were working on keeping the Amiga dream alive. I tried MorphOS, but compared to openSUSE on the Pegasos, I felt it really limited. However, many years later Linux on 32 bit big endian POWER is dead. No mainstream Linux distribution officially supports it. MorphOS on the other hand is still actively developed, it had a new release a few months ago. And whenever I mention that I worked for Genesi, people praise me like God, how close I was working to the Amiga dream.

The cult of SGI

I started my IT life with x86: an XT then 286, 486, and so on. I used some really powerful RS/6000 machines remotely at Dartmouth College. I learned basics of scripting on them, how to exit from vi, and few more things. But it was just a bit of curiosity, not any kind of attachment. I also had access to Macs there, but I never really liked it, as MacOS felt a kind of dumb, and does so ever since.

Fast forward a few years. Soon after I started university I became part of the student team at the faculty IT department. When a couple of SGI workstations arrived there, I got user access, and soon admin access as well. This is where I first used Netscape Navigator, ran Java applications, and enjoyed running a GUI on a UNIX machine.

Unfortunately, just like Amiga, SGI was also killed by x86. It took a bit longer, they even tried to embrace x86 and refocus from workstations to servers, but they are also gone now. Their legacy is still with us: I use the XFS file system originally developed by SGI. The classic SGI desktop is now available on Linux as well: https://docs.maxxinteractive.com/

SGI logo

The x86 takeover

Even if x86 PCs were limited, boring and slow compared to SGI, HP, IBM, DEC or SUN workstations, they had an advantage: price. So cost was a big factor and people realized with Beowulf clusters that you could get more performance for less cost than large SMP boxes using commodity hardware. So like many trends, it grew from HPC. In the end non-x86 workstation hardware disappeared, and just SUN and IBM kept producing servers using non-x86 architectures. While at the turn of the century most Linux distributions were available for several architectures, just a decade later most Linux distros were back to supporting only x86 or only x86 as a primary architecture. Many alternative architectures disappeared completely. While most open source software was pretty well portable earlier, with the focus on x86 much of this easy portability disappeared.

The reason is quite simple: people are passionate about their workstations. Be it at home, like the Amiga, or at their workplaces, like the SGI for me, it is almost the same. However, it must be something they have direct access to, not something in a remote server room. As an intern I helped in installing the fastest server of Hungary, an IBM POWER box larger than a fridge. But to me installing Linux on a spare IBM RS/6000 43P was a much more interesting experience.

Easily available remote resources for developers are of course useful, but in itself they do not have as much impact as a workstation on the developers desk: work vs. passion. For many years the majority of developers only could use x86 based workstations, and even if the situation is improving, we are still suffering from the results.

The comeback

The comeback of non-x86 computers was largely due to cheap Arm boards and systems available. My first Arm system was a SheevaPlug, then an Arm laptop from Genesi, before the Raspberry Pi arrived. Just as x86 dominance was largely due to price, this hegemony was blasted by cheap Arm hardware.

Standardization of Arm systems started a long time ago. However, standardized systems are unfortunately quite expensive. So, most developers use the cheaper non-standard boards. See my earlier blog: https://peter.czanik.hu/posts/arm-workstation-why-softirion-overdive-still-relevant/

POWER also has a comeback. In part it is due to the efforts of the OpenPOWER Foundation, providing developers with remote resources. However, POWER9 workstations by Raptor Computing also have an important role in this. While remote resources are truly useful, just think about my blog from last week about openSUSE Build Service, developers prefer workstations. I was often told in discussions at various conferences, that the passion of how developers resolve problems on their POWER9 workstations had more impact on advancement of open source software on POWER, than any of the remote resources available. Workstations by Raptor Computing are a lot cheaper than IBM servers, however still out of reach for many. Luckily there are multiple projects to resolve this problem and provide POWER hardware at more accessible prices: the Libre-SOC project and the Power Pi project by the OpenPower Foundation. Hopefully they succeed and within a reasonable time frame.

a silhouette of a person's head and shoulders, used as a default avatar

7 razones para usar Software Libre en los Centros Educativos

Encontré la infografía de las «7 razones para usar Software Libre en los Centros Educativos» en Twiter de la mano de Planeta Linux (@planetalinux) y me gustó ya que en ocasiones se nos olvida los motivos básicos y nos quedamos solo con que «es bueno» porque es gratis… y los que llevamos tiempo con esto que el Software Libre va más allá de lo técnico y hunde sus raíces en el conocimiento.

7 razones para usar Software Libre en los Centros Educativos

Contestando a la manida pregunta de «¿Por qué el software libre tiene perfecto sentido en las escuelas y universidades?» la gente de Planeta Linux publicaron esta infografía que nos llena de argumentos cuando tenemos que defender la implementación de una determinada aplicación o servicio en nuestro entorno de aprendizaje.

Y como me pareció fabulosa he decidido compartirla con todos vosotros, evidentemente con la misma licencia que ellos: Attribution-ShareAlike 2.0 Generic (CC BY-SA 2.0)

7 razones para usar Software Libre en los Centros Educativos
  1. Promueve la cooperación: libertad para compartir herramientas y desarrollos entre centros y docentes.
  2. Fomenta la autonomía: libertad para gestionar los equipos informáticos de centros, docentes y estudiantes.
  3. Ahorra costes: libertad para copiar y distribuir el software.
  4. Anima a aprender: libertad para leer y comprender el código fuente de los programas.
  5. Potencia la creatividad e imaginación: libertad para crear y distribuir de forma continua programas y desarrollos.
  6. Prepara para la sociedad digital: libertad para escoger y diseñar herramientas, software y equipos.
  7. Educa ciudadanos independientes y solidarios: libertad para compartir conocimientos tecnológicos.

Estas son las 7 elegidas pero seguro que se os ocurren algunas más. No dudéis en compartirlas en los comentarios.

La entrada 7 razones para usar Software Libre en los Centros Educativos se publicó primero en KDE Blog.

the avatar of openSUSE News

Leap Micro Beta Available for Testers

People browsing through openSUSE’s websites may spot something new on get.opensuse.org.

Leap Micro, which is currently showing the 5.2 beta version, is for containerized and virtualized workloads. It is immutable and ideal for host-containers and described as an ultra-reliable, lightweight operating system that experts can use for compute deployments. The community version of Leap Micro is based on SUSE Linux Enterprise Micro and leverages the enterprise hardened security of twins SUSE Linux Enterprise and openSUSE Leap, which merges this to a modern, immutable, developer-friendly OS platform.

Leap Micro has several use cases for edge, embedded/IoT deployments and more. Leap Micro is well suited for decentralized computing environments, microservices, distributed computing projects and more. The release will help developers and IT professionals to build and scale systems for uses in aerospace, telecommunications, automotive, defense, healthcare, robotics, blockchain and more. Leap Micro provides automated administration and patching.

Leap Micro has similarities of MicroOS, but Leap Micro does not offer a graphical user interface or desktop version. It is also based on SUSE Linux Enterprise and Leap rather than a variant of Tumbleweed, which MicroOS bases its release on.

Leap release manager Luboš Kocman announced the availability of the images on the factory mailing list.

Users wanting to test out Leap Micro should look at the openSUSE wiki page. Those using a preconfigured image with Raspberry Pi or Intel bases should view the combustion and ignition documentation. Users will need to label the volume name ignition on the usb-drive. This can be done via disk utility (format partition) or sudo e2label /dev/sdY ignition. If the config.ign file has the following: passwordHash : O9h4s2UUtAtok, the password will be password. Leap Micro has the current openSUSE default, which is PermitRootLogin = without-password. Therefore users need to supply a pubkey via combustion; this is a known issue and will be fixed.

Users should know that zypper is not used with Leap Micro, but transactional-update is used instead.

a silhouette of a person's head and shoulders, used as a default avatar

Parcheando el reproductor moc en openSUSE

Veamos cómo parchear el reproductor de música moc en openSUSE para solucionar un bug

Ya hace un tiempo escribí en el blog sobre el reproductor de música moc para la terminal:

Es mi reproductor preferido, porque es sencillo, ligero y hace lo que tiene que hacer. Permitir reproducir mi música local, así como música en streaming de servicios que utilizo como soma.fm.

Pero desde hace unas semana me dejó de funcionar. Al ejecutarlo me devolvía este error:

*** buffer overflow detected ***: terminated

Durante un tiempo de resigné, volviendo a utilizar Amarok como reproductor y esperando que alguna nueva actualización de Tumbleweed devolviera la funcionalidad a este reproductor.

Pero el tiempo pasaba y el error no se solucionaba, ¿qué podía hacer yo con mis pocos conocimientos técnicos? Finalmente conseguí parchear moc para openSUSE gracias a usuarios con más conocimientos técnicos que aportan al software libre, veamos cómo.

Lo primero es hacer una búsqueda del error en tu buscador de internet favorito que respete tu privacidad del erro. A mí me llevó a un bug reportado en Arch que hacía referencia a este mismo error en esta distribución de GNU/Linux.

En ese error un usuario llamado Joan Bruguera, con conocimientos técnicos suficientes para la tarea, había investigado sobre la causa del error, provocado por una actualización de glibc a la versión 2.35.

Este mismo usuario había creado un parche que solucionaba el problema. En el mismo reporte se indicaban los pasos para aplicar el parche en Arch, pero claro para openSUSE Tumbleweed la cosa sería distinta.

Para openSUSE, sería cuestión de descargar el código fuente, aplicar el parche en el archivo correspondiente y compilar de nuevo todo mediante ./configure && make install para conseguir que moc volviera a funcionar en mi equipo.

Descargué los archivos del código fuente, apliqué el parche en el archivo utf8.c y me dispuse a compilar el código de nuevo. Pero me faltaban algunas librerías necesarias para compilar… La primera libdb estaba en mis repositorios, pero otra llamada libpopt no aparecía. Había una llamada lipopt0 pero como tenía otro nombre aquello no iba a funcionar.

Durante este proceso de aprendizaje e investigación, envié lo que había encontrado al encargado del mantenimiento de moc y abrí un bug bugzilla de openSUSE.

El encargado de moc me respondió muy amablemente e intercambiamos algunos correos sobre el bug, el parche reportado por Joan, las dificultades de compilar el software en mi equipo, etc.

Como no podía compilar en mi equipo, decidí hacerlo en el servicio de compilación que usa openSUSE para crear los paquetes de software llamado Open Build Service y con una instancia montada que puedes encontrar en build.opensuse.org donde la comunidad crea todo el software que se empaqueta en openSUSE para distintas versiones y arquitecturas.

Lo primero fue buscar el software en cuestión. Encontrado el proyecto puedes «forkearlo» del original en una versión derivada en un repositorio personal.

Esto es algo similar a un repositorio git en un servicio de hospedaje onlines como GitLab, Codeberg o GitHub. Hay un repositorio principal, y lo puedes «forkear» a tu espacio propio.

En mi repositorio personal, subí el parche creado por Joan, y modifiqué el archivo «spec» que sirve como guía para indicar al servicio de compilación qué tiene que hacer y qué paquetes son necesarios para compilar. En ese archivo le indiqué que también tuviera en cuenta el nuevo parche creado.

Una vez terminado, el servicio compila todo el software y crea los binarios y paquetes listos para usarse en openSUSE para diferentes versiones y diferentes arquitecturas. También es posible crear paquetes para otras distribuciones como Debian, etc.

Terminó de compilar con éxito todo, así que lo siguiente es hacer una petición para que el paquete de tu repositorio personal sea admitido en el repositorio principal si el mantenedor del paquete de openSUSE lo ve conveniente.

Tras algunos comentarios para corregir ciertos problemas y modificar otros archivos de información, ha sido admitido, así que próximamente todas las personas que usen moc en openSUSE y que sufrieran este problema verán que se ha solucionado.

Este es a grandes trazos el procedimiento seguido y cómo un tipo como yo con pocos conocimientos técnicos puede aportar pequeñas mejoras en el software libre.

No quiere ser este texto un baño de mira qué cosas hago. La principal razón de este artículo es tratar de incentivar a que tú, lector o lectora de este blog, que disfruta del software libre te animes a reportar errores o malfuncionamientos que encuentres en tu distribución de GNU/Linux o en el software que utilices.

Que reportes por los medios que sean los adecuados en cada caso, correo o servicios de seguimiento de errores. Que lo hagas siempre siguiendo las elementales reglas de cortesía, siempre con buen ánimo y aportando toda la información técnica que puedas.

También comentar, que muchas cosas no se solucionan al instante, y que hay muchas personas que mantienen el software de manera no profesional y lo hacen quitándose tiempo personal.

Así que paciencia y buenas palabras e información técnica serían los tres ingredientes de los que me gustaría que te quedases de este artículo.

Si has llegado hasta este párrafo, te agradezco la lectura y espero que te haya resultado interesante. He obviado detalles técnicos, mis conocimientos son limitados, pero podría extenderme en algunos si tienes interés.

Agradecer a Joan el parche, agradecer al mantenedor de moc y a las personas con más conocimientos técnicos que ayudan de manera constructiva a solucionar errores que cometemos quienes andamos más escasos de conocimientos técnicos.

Enlaces de interés

a silhouette of a person's head and shoulders, used as a default avatar

Publicado el programa de charlas de Linux APP Summit 2022

Como sabrán los seguidores del blog, este mes de abrl se celebrará en Rovereto, Italia, Linux App Summit 2022, evento importante y ya consolidado para la evolución de los escritorios Libres. Hoy me congratula anunciar que ha sido publicado el programa de charlas de Linux App Summit 2022 en el que aparecen grandes nombres de desarrolladores tanto de KDE como de GNome.

Publicado el programa de charlas de Linux APP Summit 2022

El 29 y 30 de abril de 2022, en Rovereto se va a celebrar la Linux App Summit (LAS), un evento que fue sido acogido con grandes expectativas entre la Comunidad Linuxera y que año tras años va cumpliéndolas. Y es que la reunión, aunque solo sea por dos días, de desarrolladores de KDE y de Gnome bajo un mismo evento crea unas sinergías importantes para el crecimientos de estos entornos de trabajo … y de cualquier otro que para eso los códigos se comparten.

Hay que recordar,que el objetivo de LAS es acelerar el crecimiento del ecosistema de aplicaciones Linux reuniendo a todos los involucrados en la creación de una gran experiencia de usuario de aplicaciones Linux. En otras palabras, que los desarrolladores de los dos grandes escritorios libres intercambien ideas con el fin de mejorar ambos proyectos.

El Call For Papers (CFP), o la presentación de charlas, finalizó hace un tiempo y el hace ben poco fue anunciado el programa de charlas que podéis consultar en la página web del evento. Hay que destacar este año se empieza con una modalidad híbrida, que combinará sesiones presenciales y a distancia, incluyendo charlas, paneles y preguntas. Además, los vídeos de LAS se transmitirán en directo en su canal de YouTube.

Publicado el programa de charlas de Linux APP Summit 2022

Es muy difícil elegir charlas, no obstante me arriesgo a elegir unas cuantas de cada día a las que asistiría gustosamente, sin desmerecer a las demás:

  • Flathub: now and next por Jorge Castro et al
  • Getting Good: Gaming on Linux por Heather Ellsworth
  • Your app on the Steamdeck
  • Screen sharing in online meetings on Wayland
  • How we develop apps in KDE por Aleix Pol
  • Energy Conservation and Energy Efficiency with Free Software por Joseph De Veaugh-Geiss
  • The New Architecture for Printing and Scanning – What Application and GUI Developers Need to Know por Till Kamppeter

La entrada Publicado el programa de charlas de Linux APP Summit 2022 se publicó primero en KDE Blog.

the avatar of Open Build Service

OBS Workflows, At Your Service!

After receiving feedback from users of OBS workflows in the SCM/CI integration, we are now introducing a step to trigger services of a package. Do not forget to join the beta program before trying this out. We started off the continuous integration between OBS and GitHub/GitLab in May 2021, then made some improvements in June 2021. We introduced advanced features like reporting filters and support for self-hosted SCM together with a list of common pitfalls...

a silhouette of a person's head and shoulders, used as a default avatar

FLISOL 2022 de Oviedo, 23 de abril

Para que no se diga que hay favoritismos. Si ayer hablaba de FLISOL Tenerife 2022 que se celebrará el 23 de abril, hoy toca hablar de FLISOL 2022 de Oviedo que también lo celebrar el 23 de este mes. Una nueva oportunidad de iniciarse en el mundo del Software Libre y conocer esa maravillosa Comunidad.

FLISOL 2022 de Oviedo, 23 de abril

FLISOL 2022 de Oviedo, 23 de abril

Igual que ayer, antes de empezar con el meollo del artículo es interesante hacer una breve introducción. Y es que cada año, desde 2008, el cuarto sábado de abril se organizan unas jornadas de difusión de Software Libre de forma simultánea en multitud de lugares del planeta. Este evento recibe el nombre de FLISOL y como principal objetivo es promover el uso del software libre mediante charlas y eventos.

Hace ya 12 años se organizó por primera vez en Oviedo (el primero de Europa), por lo que en 2022 será la 13ª vez que se realice. Y es que lo gratificante de la experiencia y la importancia de apoyar y difundir el Software Libre en nuestro entorno, nos motiva a continuar año tras año.

Esta edición de FLISOL 2022 de Oviedo está organizado por Pica Pica Hacklab y todavía no está concretado el programa, así que estad atentos a su página web oficial.

Más información: FLISOL 2023 de Oviedo

¿Qué es Flisol?

Para los que todavía no conozcan Flisol, se trata de un evento «… de difusión de Software Libre más grande en Latinoamérica y está dirigido a todo tipo de público: estudiantes, académicos, empresarios, trabajadores, funcionarios públicos, entusiastas y aun personas que no poseen mucho conocimiento informático…»

La asistencia es gratuita y su principal objetivo es promover el uso del software libre, dando a conocer al público en general su filosofía, alcances, avances y desarrollo.

Tenemos un canal de telegram donde los asistentes al evento recibirán información actualizada GRUPO DE TELEGRAM PARA ASISTENTES.

FLISOL 2022 en Oviedo, 23 de abril

La entrada FLISOL 2022 de Oviedo, 23 de abril se publicó primero en KDE Blog.

a silhouette of a person's head and shoulders, used as a default avatar

FLISOL Tenerife 2022 se celebrará este abril

Me complace compartir con todos vosotros que FLISOL Tenerife 2022 se celebrará este abril, concretamente el 23 de este mes. Una nueva oportunidad de iniciarse en el mundo del Software Libre y conocer esa maravillosa Comunidad.

FLISOL Tenerife 2022 se celebrará este abril

Antes de empezar con el meollo del artículo es interesante hacer una breve introducción. Y es que cada año, desde 2008, el cuarto sábado de abril se organizan unas jornadas de difusión de Software Libre de forma simultánea en multitud de lugares del planeta. Este evento recibe el nombre de FLISOL y como principal objetivo es promover el uso del software libre mediante charlas y eventos.

AC, antes del Covid, este evento tenía unas 3 o 4 sedes en España, siendo Tenerife una de las clásicas (el año pasado ya hablé de su evento). Es por ello que me complace anunciar que el próximo sábado 23 de abril de 2022, de 09:00 a 14:00h, desde la Oficina de Software Libre de la Universidad de La Laguna se organizan unas jornadas de instalación de software libre en el Aula Polivalente del Edificio Central, consultar el mapa en Web: https://flisol.info/FLISOL2022/Espana/Tenerife Edificio de Servicios al Alumnado de Anchieta.

FLISOL Tenerife 2022 se celebrará este abril

Además, para completar la jornada se realizarán otras actividades que todavía están por determinar, así que estad atento a su página de Gitlab donde los organizadores están colocando toda la información de evento.

Métodos de contacto:

Más información: FLISOL 2022 de Tenerife

¿Qué es Flisol?

Para los que todavía no conozcan Flisol, se trata de un evento «… de difusión de Software Libre más grande en Latinoamérica y está dirigido a todo tipo de público: estudiantes, académicos, empresarios, trabajadores, funcionarios públicos, entusiastas y aun personas que no poseen mucho conocimiento informático…»

Las sedes de #Flisol 2021 en España

La entrada FLISOL Tenerife 2022 se celebrará este abril se publicó primero en KDE Blog.