<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux Sin Humo (Publicaciones sobre package-management)</title><link>https://sergiobelkin.com/</link><description></description><atom:link href="https://sergiobelkin.com/categories/package-management.xml" rel="self" type="application/rss+xml"></atom:link><language>es</language><copyright>Contents © 2026 &lt;a href="mailto:sebelk@gmail.com"&gt;sebelk&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;
</copyright><lastBuildDate>Mon, 20 Apr 2026 23:54:29 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>¿Qué es flatpak?</title><link>https://sergiobelkin.com/posts/que-es-flatpak/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;Es conveniente y merecido que &lt;strong&gt;Flatpak&lt;/strong&gt; tenga un post especialmente dedicado a él, más allá de su interacción con polkit que dejamos planteado en el &lt;a href="https://sergiobelkin.com/posts/entendiendo-polkit/"&gt;post anterior&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/posts/que-es-flatpak/images/flatpak-spirit.webp"&gt;&lt;img src="https://sergiobelkin.com/images/flatpak-spirit.thumbnail.webp" alt="Flatpak"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="brevisimo-repaso-historico"&gt;Brevísimo repaso histórico&lt;/h2&gt;
&lt;p&gt;En agosto de &lt;strong&gt;2007&lt;/strong&gt; el desarrollador sueco &lt;strong&gt;Alexander Larsson&lt;/strong&gt; lanza su primer intento de empaquetar aplicaciones con todas sus dependencias. A fines de &lt;strong&gt;2014&lt;/strong&gt; comienza a trabajar en el proyecto &lt;strong&gt;xdg-app&lt;/strong&gt;, el cual cambia de nombre a &lt;strong&gt;Flatpak&lt;/strong&gt; en 2016.&lt;/p&gt;
&lt;h3 id="que-es-flatpak"&gt;¿Qué es Flatpak?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Flatpak&lt;/strong&gt; es un sistema para compilar, distribuir y ejecutar aplicaciones. Las aplicaciones se pueden compilar y distribuir independientemente del sistema en que se usan, y al ejecutarse están aisladas del mismo hasta cierto punto.&lt;/p&gt;
&lt;p&gt;Cada aplicación está en un sandbox, de manera predeterminada solamente puede acceder al contenido del mismo. Cada programa en flatpak tiene acceso a &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.var/app/$FLATPAK_ID&lt;/code&gt;, y &lt;code&gt;$XDG_RUNTIME_DIR/app/$FLATPAK_ID&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;De manera limitada a llamadas del sistema.&lt;/li&gt;
&lt;li&gt;De manera limitada a la instancia de &lt;strong&gt;D-BUS&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aun así, para ser realistas, las aplicaciones en general necesitan más permisos, en este caso se insta a los empaquetadores a que adviertan qué accesos necesitará la aplicación para que el usuario esté conciente de ello, tal como cuando se instala una app desde el Play Store de Android.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/flatseal.png"&gt;&lt;img src="https://sergiobelkin.com/images/flatseal.thumbnail.png" alt="Flatseal mostrando los permisos que usa cada una de las aplicaciones instaladas" title="Hacer clic para agrandar"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Flatpak ofrece un repositorio llamado &lt;a href="https://flathub.org/"&gt;Flathub&lt;/a&gt;. Nada impide que cualquier persona o proyecto (como es el caso de Fedora) tenga el suyo propio.&lt;/p&gt;
&lt;p&gt;Flatpak usa &lt;strong&gt;OSTree&lt;/strong&gt; (&lt;em&gt;Fedora usa OCI&lt;/em&gt;) para distribuir y desplegar datos. OSTree es similar a &lt;em&gt;Git&lt;/em&gt; pero está diseñado para hacer control de versiones de binarios y archivos grandes de datos. El uso de OSTree permite además que un mismo archivo sea usado por más de una misma aplicación, ahorrando de esta manera espacio en disco. Cada aplicación que se instala es almacenada en un repositorio local de control de versiones, y luego se mapea en el sistema de archivos local.&lt;/p&gt;
&lt;p&gt;Los cambios entre las diferentes versiones de una aplicación se aplican en el filesystem mediante enlaces duros.&lt;/p&gt;
&lt;p&gt;Por ejemplo, con el comando siguiente podemos ver log del último commit de una aplicación flatpak (Logseq):
.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;❯&lt;span class="w"&gt; &lt;/span&gt;ostree&lt;span class="w"&gt; &lt;/span&gt;log&lt;span class="w"&gt; &lt;/span&gt;--repo&lt;span class="o"&gt;=&lt;/span&gt;/var/lib/flatpak/repo&lt;span class="w"&gt;  &lt;/span&gt;deploy/app/com.logseq.Logseq/x86_64/stable
commit&lt;span class="w"&gt; &lt;/span&gt;a54ee70b0ec9047c2083f77b9f9175e8e8edcac998e3be8d395009255a6a03f6
Parent:&lt;span class="w"&gt;  &lt;/span&gt;8c36feebe7ea23654917f542eb5419b71426359a42165f53496c9d82049a6806
ContentChecksum:&lt;span class="w"&gt;  &lt;/span&gt;4d06f4e875d0335f2ff1c7a30ffa5b200c9a3eb3aeb0b608588eadb045994b22
Date:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;2024&lt;/span&gt;-06-09&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;07&lt;/span&gt;:22:27&lt;span class="w"&gt; &lt;/span&gt;+0000

&lt;span class="w"&gt;    &lt;/span&gt;Remove&lt;span class="w"&gt; &lt;/span&gt;screenshot&lt;span class="w"&gt; &lt;/span&gt;locale&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;8a160109&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;Name:&lt;span class="w"&gt; &lt;/span&gt;com.logseq.Logseq
&lt;span class="w"&gt;    &lt;/span&gt;Arch:&lt;span class="w"&gt; &lt;/span&gt;x86_64
&lt;span class="w"&gt;    &lt;/span&gt;Branch:&lt;span class="w"&gt; &lt;/span&gt;stable
&lt;span class="w"&gt;    &lt;/span&gt;Built&lt;span class="w"&gt; &lt;/span&gt;with:&lt;span class="w"&gt; &lt;/span&gt;Flatpak&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.14.8

&amp;lt;&amp;lt;&lt;span class="w"&gt; &lt;/span&gt;History&lt;span class="w"&gt; &lt;/span&gt;beyond&lt;span class="w"&gt; &lt;/span&gt;this&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;not&lt;span class="w"&gt; &lt;/span&gt;fetched&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;En realidad el comando mostrado es de bajo nivel solamente a los efectos de mostrar ostree como software subyacente, para obtener información a más alto nivel, es conveniente usar directamente el comando &lt;strong&gt;flatpak&lt;/strong&gt; para obtener información de la aplicación:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;flatpak&lt;span class="w"&gt; &lt;/span&gt;info&lt;span class="w"&gt; &lt;/span&gt;com.logseq.Logseq&lt;span class="w"&gt; &lt;/span&gt;

Logseq&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="w"&gt; &lt;/span&gt;Connect&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;notes&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;knowledge

&lt;span class="w"&gt;                 &lt;/span&gt;ID:&lt;span class="w"&gt; &lt;/span&gt;com.logseq.Logseq
&lt;span class="w"&gt;         &lt;/span&gt;Referencia:&lt;span class="w"&gt; &lt;/span&gt;app/com.logseq.Logseq/x86_64/stable
&lt;span class="w"&gt;       &lt;/span&gt;Arquitectura:&lt;span class="w"&gt; &lt;/span&gt;x86_64
&lt;span class="w"&gt;               &lt;/span&gt;Rama:&lt;span class="w"&gt; &lt;/span&gt;stable
&lt;span class="w"&gt;            &lt;/span&gt;Versión:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.10.9
&lt;span class="w"&gt;           &lt;/span&gt;Licencia:&lt;span class="w"&gt; &lt;/span&gt;AGPL-3.0-or-later
&lt;span class="w"&gt;             &lt;/span&gt;Origen:&lt;span class="w"&gt; &lt;/span&gt;flathub
&lt;span class="w"&gt;          &lt;/span&gt;Colección:&lt;span class="w"&gt; &lt;/span&gt;org.flathub.Stable
&lt;span class="w"&gt;        &lt;/span&gt;Instalación:&lt;span class="w"&gt; &lt;/span&gt;system
&lt;span class="w"&gt;          &lt;/span&gt;Instalada:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;437&lt;/span&gt;,7&lt;span class="w"&gt; &lt;/span&gt;MB
Tiempo&lt;span class="w"&gt; &lt;/span&gt;de&lt;span class="w"&gt; &lt;/span&gt;ejecución:&lt;span class="w"&gt; &lt;/span&gt;org.freedesktop.Platform/x86_64/23.08
&lt;span class="w"&gt;                &lt;/span&gt;Sdk:&lt;span class="w"&gt; &lt;/span&gt;org.freedesktop.Sdk/x86_64/23.08

&lt;span class="w"&gt;             &lt;/span&gt;Commit:&lt;span class="w"&gt; &lt;/span&gt;a54ee70b0ec9047c2083f77b9f9175e8e8edcac998e3be8d395009255a6a03f6
&lt;span class="w"&gt;              &lt;/span&gt;Padre:&lt;span class="w"&gt; &lt;/span&gt;8c36feebe7ea23654917f542eb5419b71426359a42165f53496c9d82049a6806
&lt;span class="w"&gt;             &lt;/span&gt;Asunto:&lt;span class="w"&gt; &lt;/span&gt;Remove&lt;span class="w"&gt; &lt;/span&gt;screenshot&lt;span class="w"&gt; &lt;/span&gt;locale&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;8a160109&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;Fecha:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2024&lt;/span&gt;-06-09&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;07&lt;/span&gt;:22:27&lt;span class="w"&gt; &lt;/span&gt;+0000
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="comparacion-entre-dnf-apt-y-flatpak"&gt;Comparación entre dnf, apt y flatpak&lt;/h3&gt;
&lt;p&gt;Flatpak está pensado para todo tipo de aplicaciones de escritorio y se esfuerza por ser tan neutral como sea posible en cuanto a los métodos que usa para compilar aplicaciones.&lt;/p&gt;
&lt;p&gt;Además, flatpak proporciona actualizaciones atómicas, rollback y consistencia post-instalación.&lt;/p&gt;
&lt;p&gt;El siguiente cuadro nos ayuda a ver las diferencias con los dos gestores populares de paquetes: &lt;em&gt;dnf&lt;/em&gt; y &lt;em&gt;apt&lt;/em&gt;.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Característica&lt;/th&gt;
&lt;th&gt;DNF&lt;/th&gt;
&lt;th&gt;APT&lt;/th&gt;
&lt;th&gt;Flatpak&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Distribución Principal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fedora, RHEL, CentOS&lt;/td&gt;
&lt;td&gt;Debian, Ubuntu&lt;/td&gt;
&lt;td&gt;Varias distribuciones de Linux&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Formato de Paquete&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;RPM&lt;/td&gt;
&lt;td&gt;DEB&lt;/td&gt;
&lt;td&gt;OSTree, Flatpak Bundle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gestión de Dependencias&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manejo automático de dependencias&lt;/td&gt;
&lt;td&gt;Manejo automático de dependencias&lt;/td&gt;
&lt;td&gt;Manejo dentro del sandbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Aislamiento&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Sí, aplicaciones ejecutadas en sandbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Instalación de Aplicaciones&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Desde repositorios específicos del sistema&lt;/td&gt;
&lt;td&gt;Desde repositorios específicos del sistema&lt;/td&gt;
&lt;td&gt;Desde repositorios centralizados (Flathub) y repositorios personalizados&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Actualizaciones&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dnf update&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;flatpak update&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permisos de Instalación&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Requiere permisos de root&lt;/td&gt;
&lt;td&gt;Requiere permisos de root&lt;/td&gt;
&lt;td&gt;Puede instalarse sin permisos de root&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compatibilidad entre Distros&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limitada a sistemas basados en RPM&lt;/td&gt;
&lt;td&gt;Limitada a sistemas basados en DEB&lt;/td&gt;
&lt;td&gt;Compatible con múltiples distribuciones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Depende de la configuración del sistema&lt;/td&gt;
&lt;td&gt;Depende de la configuración del sistema&lt;/td&gt;
&lt;td&gt;Sandboxing y permisos controlados por portales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Facilidad de Uso&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interfaz de línea de comandos&lt;/td&gt;
&lt;td&gt;Interfaz de línea de comandos&lt;/td&gt;
&lt;td&gt;Interfaz de línea de comandos y GUI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Espacio de Disco&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Compartido entre aplicaciones&lt;/td&gt;
&lt;td&gt;Compartido entre aplicaciones&lt;/td&gt;
&lt;td&gt;Deduplicación y compartición de runtimes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Formato de Archivo Individual&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No aplica&lt;/td&gt;
&lt;td&gt;No aplica&lt;/td&gt;
&lt;td&gt;Flatpak Bundle (&lt;code&gt;.flatpak&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Desventajas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Depende de la política de la distro&lt;/td&gt;
&lt;td&gt;Dependencia de la política de la distro&lt;/td&gt;
&lt;td&gt;Las aplicaciones pueden tener un mayor tamaño inicial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compatibilidad con Aplicaciones Antiguas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sí, con soporte de versiones específicas&lt;/td&gt;
&lt;td&gt;Sí, con soporte de versiones específicas&lt;/td&gt;
&lt;td&gt;Generalmente más adecuado para nuevas aplicaciones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Desarrollo y Mantenimiento&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Desarrollado por el proyecto Fedora&lt;/td&gt;
&lt;td&gt;Desarrollado por el proyecto Debian&lt;/td&gt;
&lt;td&gt;Desarrollado por el proyecto Flatpak, con apoyo de Red Hat y GNOME&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Adopción&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Usado por muchas distribuciones y entornos de escritorio&lt;/td&gt;
&lt;td&gt;Usado principalmente en Debian, Ubuntu y derivadas&lt;/td&gt;
&lt;td&gt;Usado en diversas distribuciones, especialmente para aplicaciones portátiles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ejemplo de Comando de Instalación&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dnf install gedit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;apt install gedit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;flatpak install flathub org.gnome.Gedit&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;br&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="inconvenientes-para-usuarios-y-desarrolladores-de-aplicaciones-linux"&gt;Inconvenientes para usuarios y desarrolladores de aplicaciones Linux&lt;/h3&gt;
&lt;p&gt;Si bien Linux mejoró significativamente en cuando a usabilidad y experiencia de usuario en los últimos años, hay obstáculos tanto para usuarios como para desarrolladores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Una aplicación para un entorno de escritorio en Linux se debe empaquetar para que esté disponible (como Debian, Fedora, Ubuntu, Arch Linux, etc.), y asegurarse de que cumpla con los requisitos específicos de cada sistema de paquetes (deb, rpm, etc.). Esto requiere un esfuerzo considerable para mantener múltiples versiones y asegurarse de que cada paquete funcione correctamente en su respectiva distribución. Todo esto &lt;strong&gt;demanda o más tiempo o bien más gente idónea dedicada en la tarea de crear y mantener paquetes&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si un usuario quiere usar aplicación que no está empaquetada en la distribución, tendrá que realizar &lt;strong&gt;algún paso extra&lt;/strong&gt;, que van desde operaciones relativamente sencillas como bajar un ejecutable (darle permisos, ubicarlo en un directorio del PATH, etc.), hasta &lt;strong&gt;procedimientos bastante más complejos y fuera del interés y conocimiento de un usuario final como puede ser compilar el programa&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Una distribución de soporte a largo plazo como &lt;em&gt;Debian Stable&lt;/em&gt; no posee versiones actualizadas de la mayoría de las aplicaciones. Por lo tanto un usuario tiene que &lt;strong&gt;elegir estabilidad a cambio de software un tanto anticuado&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Flatpak tiene como propósito justamente eliminar esas barreras&lt;/strong&gt;. Gracias a Flatpak un usuario podrá instalar una aplicación como &lt;a href="https://logseq.com/"&gt;Logseq&lt;/a&gt; aun cuando no esté incluida en los repositorios de su distribución, o instalar una versión reciente de &lt;em&gt;&lt;a href="https://kdenlive.org/en/"&gt;Kdenlive&lt;/a&gt;&lt;/em&gt; en Debian Stable.&lt;/p&gt;
&lt;p&gt;En la actualidad existen distribuciones con la mirada puesta en la innovación que se benefician de Flatpak, por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vanillaos.org/"&gt;Vanilla OS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fedoraproject.org/atomic-desktops/"&gt;Fedora Atomic desktops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.endlessos.org/os"&gt;Endless OS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="caracteristicas-de-flatpak"&gt;Características de flatpak&lt;/h3&gt;
&lt;p&gt;Analicemos &lt;strong&gt;la app ONLYOFFICE&lt;/strong&gt; en flatpak:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;flatpak&lt;span class="w"&gt; &lt;/span&gt;info&lt;span class="w"&gt; &lt;/span&gt;org.onlyoffice.desktopeditors

ONLYOFFICE&lt;span class="w"&gt; &lt;/span&gt;Desktop&lt;span class="w"&gt; &lt;/span&gt;Editors&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="w"&gt; &lt;/span&gt;Office&lt;span class="w"&gt; &lt;/span&gt;productivity&lt;span class="w"&gt; &lt;/span&gt;suite

&lt;span class="w"&gt;                 &lt;/span&gt;ID:&lt;span class="w"&gt; &lt;/span&gt;org.onlyoffice.desktopeditors
&lt;span class="w"&gt;         &lt;/span&gt;Referencia:&lt;span class="w"&gt; &lt;/span&gt;app/org.onlyoffice.desktopeditors/x86_64/stable
&lt;span class="w"&gt;       &lt;/span&gt;Arquitectura:&lt;span class="w"&gt; &lt;/span&gt;x86_64
&lt;span class="w"&gt;               &lt;/span&gt;Rama:&lt;span class="w"&gt; &lt;/span&gt;stable
&lt;span class="w"&gt;            &lt;/span&gt;Versión:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;.0.1
&lt;span class="w"&gt;           &lt;/span&gt;Licencia:&lt;span class="w"&gt; &lt;/span&gt;AGPL-3.0-only
&lt;span class="w"&gt;             &lt;/span&gt;Origen:&lt;span class="w"&gt; &lt;/span&gt;flathub
&lt;span class="w"&gt;          &lt;/span&gt;Colección:&lt;span class="w"&gt; &lt;/span&gt;org.flathub.Stable
&lt;span class="w"&gt;        &lt;/span&gt;Instalación:&lt;span class="w"&gt; &lt;/span&gt;system
&lt;span class="w"&gt;          &lt;/span&gt;Instalada:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;863&lt;/span&gt;,8&lt;span class="w"&gt; &lt;/span&gt;MB
Tiempo&lt;span class="w"&gt; &lt;/span&gt;de&lt;span class="w"&gt; &lt;/span&gt;ejecución:&lt;span class="w"&gt; &lt;/span&gt;org.freedesktop.Platform/x86_64/23.08
&lt;span class="w"&gt;                &lt;/span&gt;Sdk:&lt;span class="w"&gt; &lt;/span&gt;org.freedesktop.Sdk/x86_64/23.08

&lt;span class="w"&gt;             &lt;/span&gt;Commit:&lt;span class="w"&gt; &lt;/span&gt;c9f73db43c9639df65e597108eb4c685025fe484fde05f73f650d05f9ea28512
&lt;span class="w"&gt;              &lt;/span&gt;Padre:&lt;span class="w"&gt; &lt;/span&gt;a38db7bbfaa18eda6d26e9d113ce850c077bf533d9ebf5aa7e34988a58b91b28
&lt;span class="w"&gt;             &lt;/span&gt;Asunto:&lt;span class="w"&gt; &lt;/span&gt;Update&lt;span class="w"&gt; &lt;/span&gt;version&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;.0.1&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="c1"&gt;#117) (a88ad400)&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;Fecha:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2024&lt;/span&gt;-03-04&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;:34:56&lt;span class="w"&gt; &lt;/span&gt;+0000
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;La aplicación &lt;strong&gt;ONLYOFFICE&lt;/strong&gt; usa como &lt;strong&gt;runtime&lt;/strong&gt;  org.freedesktop.Platform/x86_64/23.08. El runtime org.freedesktop.Platform/x86_64/23.08 es un entorno estandarizado y versionado que provee FreeDesktop.org para ejecutar aplicaciones de escritorio en Linux. Incluye una colección de librerías y servicios comunes, que aseguran la compatibilidad y la estabilidad entre las diferentes distribuciones de Linux. Este runtime está compilado específicamente para arquitecturas de 64-bit y fue actualizado o liberado en agosto de 2023. &lt;/p&gt;
&lt;p&gt;Los runtimes no dependen ni de una distribución ni de una versión en particular de una distribución. Y una aplicación instalada en flatpak será exactamente igual no importa si se instala en Debian o en Fedora. Una aplicación como GIMP, empaquetada como Flatpak, debería proporcionar la misma funcionalidad principal y experiencia de usuario tanto en Debian como en Fedora, dado que todas las dependencias y configuraciones críticas se gestionan dentro del contenedor Flatpak. Desde luego, hay diferencias potenciales: Si una aplicación Flatpak utiliza características específicas del sistema, como integraciones con servicios de notificación de escritorio, la forma en que estas integraciones funcionan puede variar ligeramente entre GNOME en Fedora y KDE en Debian.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/flatpak-runtimes.png"&gt;&lt;img src="https://sergiobelkin.com/images/flatpak-runtimes.thumbnail.png" alt="Existen diferentes runtimes para Flatpak, tales como freedesktop, GNOME, KDE y Elementary" title="Hacer clic para agrandar"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3 id="objeciones-en-cuanto-a-la-seguridad"&gt;Objeciones en cuanto a la seguridad&lt;/h3&gt;
&lt;p&gt;Han existido críticas severas a la seguridad de flatpak, en especial por el sitio anónimo &lt;a href="https://flatkill.org/2020"&gt;Flatkill&lt;/a&gt;. El siguiente cuaddro es un resumen de los argumentos en contra y favor de Flatpak en cuanto a este tema:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Objeción de Seguridad&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Descripción&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Respuesta / Acción Tomada&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sandboxing Ineficaz&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Muchas aplicaciones en Flathub tienen permisos amplios como &lt;code&gt;filesystem=host&lt;/code&gt; o &lt;code&gt;filesystem=home&lt;/code&gt;, lo que permite acceso completo al sistema de archivos del usuario.&lt;/td&gt;
&lt;td&gt;Flatpak ha mejorado la transparencia sobre los permisos de las aplicaciones y trabaja en fortalecer el modelo de sandboxing. Se han introducido portales para permitir el acceso controlado a los recursos del sistema. &lt;a href="https://docs.flatpak.org/en/latest/using-flatpak.html#sandboxes-and-permissions"&gt;Flatpak Documentation&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Actualizaciones de Seguridad Retrasadas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Algunas aplicaciones y runtimes en Flatpak no reciben actualizaciones de seguridad oportunas, lo que deja a los usuarios expuestos a vulnerabilidades conocidas.&lt;/td&gt;
&lt;td&gt;La herramienta flatpak-external-data-checker automatiza la verificación de fuentes externas y la generación de solicitudes de fusión cuando se encuentran actualizaciones. Al implementar f-e-d-c, los desarrolladores pueden asegurar que las aplicaciones en Flathub se mantengan actualizadas más fácilmente y de manera más eficiente, lo que reduce el tiempo de espera para las actualizaciones de los usuarios finales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integración Limitada del Escritorio&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Problemas con la integración de aplicaciones Flatpak en escritorios Linux, como la falta de soporte para configuraciones de fuentes y temas de escritorio.&lt;/td&gt;
&lt;td&gt;Se han mejorado los mecanismos de integración de escritorio, incluyendo mejor soporte para fuentes y temas en KDE y GNOME. Flatpak sigue trabajando en mejorar la compatibilidad con configuraciones del sistema host.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Explotación Local de Root&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Riesgo de explotación de root local debido a aplicaciones Flatpak instaladas con permisos &lt;strong&gt;suid&lt;/strong&gt;.&lt;/td&gt;
&lt;td&gt;Flatpak utiliza nuevas APIs de libostree para rechazar cualquier archivo con permisos suid o de escritura mundial al instalar aplicaciones.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gestión de Permisos Confusa para el Usuario&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Los usuarios pueden ser engañados por íconos y descripciones que indican un falso sentido de seguridad sobre las aplicaciones sandboxed.&lt;/td&gt;
&lt;td&gt;Flatpak ha mejorado la interfaz de usuario para mostrar de manera más clara los permisos que solicita cada aplicación, ayudando a los usuarios a tomar decisiones informadas sobre las aplicaciones que instalan.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br&gt;
&lt;a class="image-reference" href="https://sergiobelkin.com/images/flathub.png"&gt;&lt;img src="https://sergiobelkin.com/images/flathub.thumbnail.png" alt="Sitio de Flathub mostrando las advertencias pertinentes a una determinada aplicación" title="Haga clic para agrandar"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3 id="como-hace-flatpak-para-no-pedirle-a-un-usuario-de-un-grupo-administrativo-que-se-autentique-nuevamente"&gt;¿Cómo hace flatpak para no pedirle a un usuario de un grupo administrativo que se autentique nuevamente?&lt;/h3&gt;
&lt;p&gt;En el &lt;a href="https://sergiobelkin.com/posts/entendiendo-polkit/"&gt;post anterior&lt;/a&gt; vimos como funciona polkit. Flatpak se vale de polkit para facilitar la instalación de paquetes por parte de usuarios con permisos administrativos. Basta con mirar el archivo &lt;code&gt;/usr/share/polkit-1/rules.d/org.freedesktop.Flatpak.rules&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nx"&gt;polkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addRule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"org.freedesktop.Flatpak.app-install"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"org.freedesktop.Flatpak.runtime-install"&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"org.freedesktop.Flatpak.app-uninstall"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"org.freedesktop.Flatpak.runtime-uninstall"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"org.freedesktop.Flatpak.modify-repo"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;active&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;local&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isInGroup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"wheel"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;polkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;YES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;polkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NOT_HANDLED&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;polkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addRule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"org.freedesktop.Flatpak.override-parental-controls"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;polkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AUTH_ADMIN&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;polkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NOT_HANDLED&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Este archivo tiene dos reglas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Permite a los usuarios del grupo "wheel", que están loogoueados localmente y tienen una sesión activa instalar, desinstalar, y modificar aplicaciones y repositorios sin autenticación adicional.&lt;/li&gt;
&lt;li&gt;No se pueden pasar por arriba de los controles parentales sin autenticarse con una cuenta de usuario administrativa.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para ambos casos, si las condiciones no se cumplen, el resultado dependerá de otras reglas o de la regla predeterminada.&lt;/p&gt;
&lt;h3 id="para-terminar"&gt;Para terminar...&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Flatpak&lt;/strong&gt; elimina barreras y obstáculos tanto para desarrolladores como para usuarios finales. Para los primeros, significa les ofrece la posibilidad de poner aplicaciones disposición de cualquier distribución de Linux. Para los segundos representa una mayor facilidad para obtener los programas que están necesitando.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/Discover-Flatpak.png"&gt;&lt;img src="https://sergiobelkin.com/images/Discover-Flatpak.thumbnail.png" alt="Discover mostrando aplicaciones disonibles en Flathub" title="Haga clic para agrandar"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4 id="fuentes-y-mas-recursos"&gt;Fuentes y Más Recursos&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://docs.flatpak.org/en/latest/using-flatpak.html"&gt;Flatpak Documentation - Using Flatpak&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flathub.org"&gt;Flathub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flatkill.org/2020/"&gt;Flatkill - Flatpak, a security nightmare&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tesk.page/2021/02/11/response-to-flatkill-org/"&gt;Respuestas a objecioones planteadas en Flatkill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.fedoraproject.org/en-US/flatpak/"&gt;Flatpak en Fedora&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>package-management</category><category>seguridad</category><guid>https://sergiobelkin.com/posts/que-es-flatpak/</guid><pubDate>Sat, 22 Jun 2024 20:11:07 GMT</pubDate></item><item><title>Upstream, Appstream y DownStream</title><link>https://sergiobelkin.com/posts/upstream-appstream-downstream/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;La manera tradicional que tenemos para &lt;strong&gt;instalar software&lt;/strong&gt; en los entornos de escritorio de Linux es usando las herramientas de línea de comando o tal vez herramientas gráficas tales como Synaptic y dnfdragora.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/dnfdragora.png"&gt;&lt;img src="https://sergiobelkin.com/images/dnfdragora.thumbnail.png" alt="dnfragora"&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Este tipo de instalación a la que los usuarios de Linux de unos cuantos años estamos acostumbrados no es ni más fácil ni más difícil que buscar aplicaciones, bajarlas y correr un instalador y presionando los botones "Next", "Next"...&lt;/p&gt;
&lt;p&gt;Sin embargo, la mayoría de los usuarios finales en la actualidad suelen instalar aplicaciones desde &lt;strong&gt;centros de software&lt;/strong&gt; desde teléfonos celulares, los famosos &lt;em&gt;App Stores&lt;/em&gt;, tales como Google Play y Apple App Store.&lt;/p&gt;
&lt;p&gt;Como respuesta los dos entornos de escritorio principales de Linux cuentan con herramientas similares: &lt;strong&gt;Software&lt;/strong&gt; (GNOME) y &lt;strong&gt;Discover&lt;/strong&gt; (Plasma) para crear una experiencia de usuario similar:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/CentrosDeSofrware.png"&gt;&lt;img src="https://sergiobelkin.com/images/CentrosDeSofrware.thumbnail.png" alt="Centro de Software en Linux"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Este clase de programas usan no solamente el sistema de paquetes de la distribució (sea tanto repositorios oficiales como así también de teceros), sino además, pueden usar sistemas como flatpak y snapcraft.&lt;/p&gt;
&lt;p&gt;Debajo de estas herramientas tenemos a &lt;strong&gt;AppStream&lt;/strong&gt; la cual proporciona metadatos universales de aplicaciones. Se trata de una especificación de &lt;em&gt;freedesktop.org&lt;/em&gt; que resulta beneficiosa tanto para desarrolladores como para usuarios finales.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/good-free-photos-9HpBuYI3Ko4-unsplash.jpg"&gt;&lt;img src="https://sergiobelkin.com/images/good-free-photos-9HpBuYI3Ko4-unsplash.jpg" alt="streams"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;span&gt;Photo by &lt;a href="https://unsplash.com/@goodfreephoto_com?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Good Free Photos&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/stream?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Puede tratar de manera específica a cada componente de acuerdo a su tipo: aplicación de escritorio, complemento, codec, fuente, etc.&lt;/p&gt;
&lt;p&gt;Estos metadatos se guardan en archivos XML. En Fedora, por ejemplo podemos encontrar estos archivos en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/usr/share/app-info/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/share/metainfo/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De acuerdo a las directrices para empaquetar software de Fedora, toda aplicación con interfaz gráfica tiene que tener un archivo &lt;code&gt;*.appdata.xml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Debian usa un único archivo YAML en lugar de XML, en Debian Buster para plataforma AMD64 se encuentra en &lt;code&gt;/var/lib/apt/lists/deb.debian.org_debian_dists_buster_main_dep11_Components-amd64.yml.gz&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Estos archivos suelen contener un identificador, nombre, resumen, icono que representa al componente, descripción, categoría, información de versiones. También puede indicar si el componente es esencial para el funcionamiento de un entorno de escritorio y &lt;strong&gt;capturas de pantalla&lt;/strong&gt;.
Incluso ofrece el soporte para que el usuario califique la aplicación.&lt;/p&gt;
&lt;p&gt;Es muy importante contar con la metadata de las aplicaciones de modo que appstream y programas como &lt;strong&gt;Discover&lt;/strong&gt; y &lt;strong&gt;Software&lt;/strong&gt; funcionen correctamente. Por ejemplo, en el caso del repositorio &lt;em&gt;rpmfusion&lt;/em&gt; es necesario instalar un paquete aparte:
&lt;code&gt;dnf install rpmfusion-free-appstream-data.noarch&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En la actulidad un usuario puede buscar una determinada aplicación del proyecto KDE e instalarla desde &lt;a href="https://apps.kde.org/"&gt;KDE's Applications&lt;/a&gt;. Supongamos que encuentra a &lt;em&gt;Calligra Stage&lt;/em&gt; y decide instalarla:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/Peek%2026-12-2020%2000-44.gif"&gt;&lt;img src="https://sergiobelkin.com/images/Peek%2026-12-2020%2000-44.thumbnail.gif" alt="Link de Appstream"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Es decir, se puede ver que tiene el siguiente URI: &lt;code&gt;appstream://org.kde.calligrastage.desktop&lt;/code&gt; al ser una herramienta totalmente agnóstica puede usar tanto un repositorio tradicional, como los de flatpak y snapcraft. Es decir, es importante entender que appstream no es un método nuevo de empaquetar software o un nuevo tipo de repositorio. Si la aplicación no está en los repositorios mencionados, obviamente la instalación fallará.&lt;/p&gt;
&lt;p&gt;Es decir, luego en Discover:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/discover-calligra.stage.png"&gt;&lt;img src="https://sergiobelkin.com/images/discover-calligra.stage.thumbnail.png" alt="Discover mostrando Calligra Stage"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;También, podríamos instalarla directamente usando appstream:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;appstreamcli install org.kde.calligrastage.desktop&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Para ver el estado:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/ksnip_20201226-135409.png"&gt;&lt;img src="https://sergiobelkin.com/images/ksnip_20201226-135409.thumbnail.png" alt=""&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Podemos ver entonces que &lt;strong&gt;appstream&lt;/strong&gt; funciona como un puente bidireccional, los proyectos &lt;em&gt;upstream&lt;/em&gt; pueden facilitar el empaquetamiento y disponibilidad de aplicaciones, y cada distribución (downstream) puede dar a conocer de una manera mucho más amigable el software para los usuarios finales creando un círculo virtuoso.&lt;/p&gt;
&lt;h4 id="fuentes-y-mas-recursos"&gt;Fuentes y Más Recursos&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freedesktop.org/software/appstream/docs/"&gt;AppStream | AppStream 0.12&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.fedoraproject.org/en-US/packaging-guidelines/AppData/"&gt;Packaging Guidelines for AppData Files :: Fedora Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.debian.org/AppStream"&gt;AppStream - Debian Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html"&gt;Si estás desarrollando una aplicación deberias leer: Metadata Quickstart | AppStream | AppStream 0.12&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#desktop-file-id"&gt;Desktop Entry Specification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>package-management</category><guid>https://sergiobelkin.com/posts/upstream-appstream-downstream/</guid><pubDate>Fri, 25 Dec 2020 22:43:16 GMT</pubDate></item><item><title>Sistemas de construcción de paquetes (Parte 4)</title><link>https://sergiobelkin.com/posts/2011/03/12/sistemas-de-construccion-de-paquetes/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;De acuerdo a los resultados, podría verse que autotools sigue siendo el “Build System” predominante. Otros paquetes todavía usan un makefile plano, tal vez merezcan un análisis aparte.&lt;/p&gt;
&lt;p&gt;Limitaciones de estas estadísticas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Se confía en que siempre que se usa CMakeList.txt se usa cmake.&lt;/li&gt;
&lt;li&gt;Se confía en que siempre que existan los archivos  configure.ac o configure.in y Makefile.am o Makefile.in y se encuentra en el archivo spec el procedimiento ./configure &amp;amp;&amp;amp; make se usan las autotools&lt;/li&gt;
&lt;li&gt;Hubo 1 (un) archivos que no pudieron ser inspeccionados por dtrx porque tenía la extensión incorrecta&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Actualización 2019&lt;/h2&gt;
Las dos cosas más notables son la reducción del uso de autotools y por otro lado la aparición de sistemas alternativos de construcción (casi un 70%).
&lt;p&gt;&lt;a title="Parte 3" href="http://www.sergiobelkin.com/2011/03/12/sistemas-de-construccion-de-paquetes-parte-3/"&gt;Sistema de construcción de paquetes (Parte 3)&lt;/a&gt;&lt;/p&gt;</description><category>package-management</category><guid>https://sergiobelkin.com/posts/2011/03/12/sistemas-de-construccion-de-paquetes/</guid><pubDate>Sun, 06 Oct 2019 16:31:54 GMT</pubDate></item><item><title>Sistemas de contrucción de paquetes (Parte 2)</title><link>https://sergiobelkin.com/posts/2011/03/12/sistemas-de-contruccion-de-paquetes-parte-2/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;El siguiente paso fue descomprimir de manera recursiva los paquetes, para luego poder inspeccionar en ellos. Lo hice con una herramienta poco conocida &lt;a title="dtrx" href="http://brettcsmith.org/2007/dtrx/"&gt;dtrx&lt;/a&gt;. Lo interesante de este script de python es que puede realizar extracciones recursivas y de acuerdo a la extensión del archivo utiliza el software de extracción necesario. Esperemos que pronto esté en los repositorios de Fedora (ver la solicitud en &lt;a title="Review Request" href="https://bugzilla.redhat.com/show_bug.cgi?id=683684" target="_blank"&gt;Red Hat Bugzilla&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Una vez descompridos todos los paquetes, se corrió el siguiente script&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
#! /bin/bash
#Very simple script to get Build System Statistc
dir=1&lt;br&gt;
rm -f /tmp/ant /tmp/cmake /tmp/autotools /tmp/makefile /tmp/autoconf /tmp/autotools_procedure&lt;br&gt;
for i in (find dir -maxdepth 1 -mindepth 1 -type d)&lt;br&gt;
do&lt;br&gt;
 ls -R1 i | grep -q -P -m1 "^configure.(ac|in)"&lt;br&gt;
 if [[ ? -eq 0 ]];then&lt;br&gt;
 ls -R1 i | grep -P -q -m1 "^Makefile\.(am|in)"&lt;br&gt;
 if [[ ? -eq 0 ]];then&lt;br&gt;
 echo "{i##&lt;em&gt;/}" &amp;gt;&amp;gt; /tmp/autotools 2&amp;gt;/dev/null&lt;br&gt;
 cant_autotools=(($cant_autotools+1))&lt;br&gt;
 else&lt;br&gt;
 echo "{i##&lt;/em&gt;/}" &amp;gt;&amp;gt; /tmp/autoconf 2&amp;gt;/dev/null&lt;br&gt;
 cant_autoconf=(($cant_autoconf+1))&lt;br&gt;
 fi&lt;br&gt;
 fi&lt;br&gt;
 #cmake&lt;br&gt;
 ls -R1 i | grep -q -m1 CMakeLists.txt&lt;br&gt;
 if [[ ? -eq 0 ]];then&lt;br&gt;
 cant_cmake=((cant_cmake+1))&lt;br&gt;
 echo "{i##&lt;em&gt;/}" &amp;gt;&amp;gt; /tmp/cmake 2&amp;gt;/dev/null&lt;br&gt;
 fi&lt;br&gt;
 #Plain makefile&lt;br&gt;
 ls -R1 i | grep -q -P -m1 "^configure\.(ac|in)"&lt;br&gt;
 if [[ ? -ne 0 ]];then&lt;br&gt;
 ls -R1 i | grep -q -P -m1 "^(Makefile.(am|in)|CMakeLists.txt)"&lt;br&gt;
 if [[ ? -ne 0 ]];then&lt;br&gt;
 ls -R1 i | grep -q -P -m1 "^Makefile"&lt;br&gt;
 if [[ ? -eq 0 ]];then&lt;br&gt;
 cant_makefile=((cant_makefile+1))&lt;br&gt;
 echo "${i##&lt;/em&gt;/}" &amp;gt;&amp;gt; /tmp/makefile 2&amp;gt; /dev/null&lt;br&gt;
 fi&lt;br&gt;
 fi&lt;br&gt;
 fi&lt;br&gt;
 find i -name "*.spec" | xargs pcregrep -q -M "%build(.*\n)*(./|%)configure.*\n(.*\n)*make(.*\n)*%install"&lt;br&gt;
 if [[ ? -eq 0 ]];then&lt;br&gt;
 cant_autotools_build_section=(($cant_autotools_build_section+1))&lt;br&gt;
 echo "{i##*/}" &amp;gt;&amp;gt; /tmp/autotools_procedure&lt;br&gt;
 fi&lt;br&gt;
done&lt;br&gt;
echo "###Resultados###"&lt;br&gt;
[ -f /tmp/autotools ] &amp;amp;&amp;amp; echo -e "There are cant_autotools with autotools:\n\n(sort /tmp/autotools)\n\n"&lt;br&gt;
[ -f /tmp/cmake ] &amp;amp;&amp;amp; echo -e "cant_cmake with cmake:\n\n(sort /tmp/cmake)\n\n"&lt;br&gt;
[ -f /tmp/makefile ] &amp;amp;&amp;amp; echo -e "cant_makefile with makefile:\n\n(sort /tmp/makefile)\n\n"&lt;br&gt;
[ -f /tmp/autoconf ] &amp;amp;&amp;amp; echo -e "cant_autoconf with only autoconf:\n\n(sort /tmp/autoconf)\n\n"&lt;br&gt;
[ -f /tmp/autotools_procedure ] &amp;amp;&amp;amp; echo -e "cant_autotools_build_section with only autotools_build_section\n\n(sort /tmp/autotools_procedure)"&lt;/code&gt;&lt;/p&gt;&lt;br&gt;


&lt;p&gt;En la &lt;a href="https://sergiobelkin.com/posts/2011/03/12/sistemas-de-construccion-de-paquetes-parte-3/"&gt;siguiente&lt;/a&gt; parte veremos los resultados….&lt;/p&gt;</description><category>herramientas</category><category>package-management</category><guid>https://sergiobelkin.com/posts/2011/03/12/sistemas-de-contruccion-de-paquetes-parte-2/</guid><pubDate>Sun, 06 Oct 2019 15:36:08 GMT</pubDate></item><item><title>10 Trucos poderosos con RPM</title><link>https://sergiobelkin.com/posts/10-trucos-poderosos-con-rpm/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;&lt;strong&gt;Nota: Los nombres de los paquetes están puestos como ejemplos&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="1-mostrar-los-tipos-de-archivos-que-contiene-un-paquete"&gt;1. Mostrar los tipos de archivos que contiene un paquete&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm -q  --fileclass zram&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="2-mostrar-el-orden-y-fecha-en-que-fueron-instalados-los-paquetes"&gt;2. Mostrar el orden y fecha en que fueron instalados los paquetes&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm -qa --last --qf '%{name}\n'|tac&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="3-mostrar-los-nombres-y-solamente-los-nombres-de-todos-los-paquetes-instalados"&gt;3. Mostrar los nombres (y solamente los nombres!) de todos los paquetes instalados&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm -qa --qf '%{name}'|sort&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="4-ver-los-cambios-que-tiene-un-paquete-en-su-version"&gt;4. Ver los cambios que tiene un paquete en su versión&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm -q --changes  neovim|less&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="5-ver-lo-que-hace-un-paquete-al-instalarsedesinstalarse"&gt;5. Ver lo que hace un paquete al instalarse/desinstalarse&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm -q --scripts mariadb-server&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="6-restaurar-los-permisos-predeterminados"&gt;6. Restaurar los permisos predeterminados&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm --restore mariadb&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Este comando restaura los permisos, propietarios y &lt;a href="https://jlk.fjfi.cvut.cz/arch/manpages/man/capabilities.7"&gt;capacidades&lt;/a&gt; de los archivos. No reestablece marcas de tiempo.&lt;/p&gt;
&lt;h3 id="7-extraer-los-archivos-de-un-paquete"&gt;7. Extraer los archivos de un paquete&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;
&lt;span class="n"&gt;dnf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;download&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mariadb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# Aquí puede usarse también yumdownloader&lt;/span&gt;
&lt;span class="n"&gt;mkdir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mariadb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;
&lt;span class="n"&gt;mv&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mariadb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;rpm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mariadb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;
&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mariadb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;
&lt;span class="n"&gt;rpm2cpio&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mariadb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cpio&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;imdv&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="8-listar-los-paquetes-duplicados"&gt;8. Listar los paquetes duplicados&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm -qa --dupes&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="9-encontrar-el-archivo-de-licencia-del-paquete"&gt;9. Encontrar el archivo de licencia del paquete&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rpm -qL firefox&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="10-operar-por-red"&gt;10. Operar por red&lt;/h3&gt;
&lt;p&gt;Las operaciones con rpm se pueden realizar también con direcciones remotas, como se muestra en la imagen inferior:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/20190901195146901_1707934984.png"&gt;&lt;img src="https://sergiobelkin.com/images/20190901195146901_1707934984.thumbnail.png" alt="RPM por red"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3 id="mas-informacion"&gt;Más información&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://rpm.org/"&gt;rpm.org - Home&lt;/a&gt;&lt;/p&gt;</description><category>package-management</category><guid>https://sergiobelkin.com/posts/10-trucos-poderosos-con-rpm/</guid><pubDate>Mon, 02 Sep 2019 12:20:07 GMT</pubDate></item><item><title>Sistemas de construcción de paquetes (Parte 3)</title><link>https://sergiobelkin.com/posts/2011/03/12/sistemas-de-construccion-de-paquetes-parte-3/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;Los resultados son:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;37 paquetes con autotools: Son paquetes en los cuales se encontaron los archivos configure.ac o configure.in y Makefile.am o Makefile.in&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;5 paquetes con cmake: Son paquetes que tienen el archivo CMakeLists.txt&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;21 paquetes con “sólo” [Mm]akefile, que no tienen los archivos arriba mencionados&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;36 paquetes con “autotools procedure”: Paquetes que siguen la secuencia “./configure &amp;amp;&amp;amp; make”&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Resultado actualizado a octubre 2019 (con otra muestra de paquetes)&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;11 paquetes con autotools: Son paquetes en los cuales se encontaron los archivos configure.ac o configure.in y Makefile.am o Makefile.in&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;6 paquetes con cmake: Son paquetes que tienen el archivo CMakeLists.txt&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;11 paquetes con “sólo” [Mm]akefile, que no tienen los archivos arriba mencionados&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;14 paquetes con “autotools procedure”: Paquetes que siguen la secuencia “./configure &amp;amp;&amp;amp; make”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;En la &lt;a href="https://sergiobelkin.com/posts/2011/03/12/sistemas-de-construccion-de-paquetes/"&gt;próxima&lt;/a&gt; las conclusiones&lt;/p&gt;</description><category>package-management</category><guid>https://sergiobelkin.com/posts/2011/03/12/sistemas-de-construccion-de-paquetes-parte-3/</guid><pubDate>Wed, 06 Mar 2019 16:00:55 GMT</pubDate></item><item><title>Sistemas de Construcción de Paquetes (Parte 1)</title><link>https://sergiobelkin.com/posts/2011/03/12/autotools-1/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;Dentro de los sistemas de construcción de paquetes en los sistemas estilo Linux, el más conocido de ellos el GNU Build System, aka autotools.&lt;/p&gt;
&lt;p&gt;Las autotools tienen la reputación de ser difíciles y abrumadoramente barrocas. Es por eso que han surgido sistemas alternativos siendo tal vez la más más popular cmake.&lt;/p&gt;
&lt;p&gt;Es por ello que me propuse hacer una estadística, tal vez bastante rudimentaria acerca de los sistemas de construcción de paquetes.&lt;/p&gt;
&lt;p&gt;Lo primero que hice fue ejecutar algo como esto:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
repoquery -a --disablerepo=livna,rpmfusion-free,rpmfusion-free-updates --source | uniq | shuf -n 101 | sed ‘s/.src.rpm//g’ | xargs yumdownloader --source&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Con esto se consigue una muestra de 101 paquetes de los repositorios oficiales de Fedora 14.&lt;/p&gt;
&lt;p&gt;Los paquetes son:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ailurus-10.10.3-1.fc14.src.rpm&lt;br&gt;
alsa-oss-1.0.17-4.fc12.src.rpm&lt;br&gt;
aplus-fsf-4.22.4-19.fc12.src.rpm&lt;br&gt;
ar9170-firmware-2009.05.28-2.fc13.src.rpm&lt;br&gt;
azureus-4.5.1.0-1.fc14.src.rpm&lt;br&gt;
bitfrost-1.0.10-1.fc14.src.rpm&lt;br&gt;
bwidget-1.9.0-1.fc13.src.rpm&lt;br&gt;
cfitsio-3.250-5.fc14.src.rpm&lt;br&gt;
congruity-14-1.fc13.src.rpm&lt;br&gt;
dogtag-pki-ra-ui-1.3.2-1.fc14.src.rpm&lt;br&gt;
drascula-international-1.0-3.fc12.src.rpm&lt;br&gt;
dump-0.4-0.8.b43.fc14.src.rpm&lt;br&gt;
dumpet-2.1-1.fc14.src.rpm&lt;br&gt;
dx-4.4.4-16.fc14.2.src.rpm&lt;br&gt;
easystroke-0.5.3-2.fc14.src.rpm&lt;br&gt;
eblook-1.6.1-10.fc14.src.rpm&lt;br&gt;
eclipse-jgit-0.10.1-1.fc14.src.rpm&lt;br&gt;
emacs-common-tuareg-1.45.6-9.fc12.src.rpm&lt;br&gt;
emacs-common-w3m-1.4.398-0.4.20100714cvs.fc14.src.rpm&lt;br&gt;
emacspeak-29.0-3.fc12.src.rpm&lt;br&gt;
fedora-packager-0.5.5.0-2.fc14.src.rpm&lt;br&gt;
FlightGear-2.0.0-4.fc14.src.rpm&lt;br&gt;
fmtools-2.0.1-2.fc13.src.rpm&lt;br&gt;
func-0.25-3.fc14.src.rpm&lt;br&gt;
gambas2-2.22.0-1.fc14.src.rpm&lt;br&gt;
gbirthday-0.6.5-2.fc14.src.rpm&lt;br&gt;
gedit-plugins-2.31.6-1.fc14.src.rpm&lt;br&gt;
gfs-pyrsos-fonts-20090618-3.fc13.src.rpm&lt;br&gt;
globus-gatekeeper-5.5-2.fc14.src.rpm&lt;br&gt;
globus-gram-job-manager-10.59-2.fc14.src.rpm&lt;br&gt;
globus-gram-job-manager-setup-sge-2.5-1.fc14.src.rpm&lt;br&gt;
gmm-4.0.0-1.fc14.src.rpm&lt;br&gt;
gnomeradio-1.8-6.fc14.src.rpm&lt;br&gt;
html2text-1.3.2a-6.fc13.src.rpm&lt;br&gt;
i3lock-1.0-4.20100320git.fc14.src.rpm&lt;br&gt;
isync-1.0.4-6.fc12.src.rpm&lt;br&gt;
javasqlite-20100727-1.fc14.src.rpm&lt;br&gt;
kdetv-0.8.9-13.fc12.src.rpm&lt;br&gt;
kmid2-2.3.0-2.fc14.src.rpm&lt;br&gt;
lcms2-2.1-1.fc14.src.rpm&lt;br&gt;
libfreebob-1.0.11-6.fc12.src.rpm&lt;br&gt;
libgalago-0.5.2-9.fc12.src.rpm&lt;br&gt;
libmusicbrainz3-3.0.3-2.fc14.src.rpm&lt;br&gt;
libotr-3.2.0-5.fc14.src.rpm&lt;br&gt;
lilypond-2.13.39-3.fc14.src.rpm&lt;br&gt;
makebootfat-1.4-11.fc14.src.rpm&lt;br&gt;
man-pages-cs-0.18.20090209-9.fc14.src.rpm&lt;br&gt;
metromap-0.1.2-5.fc14.src.rpm&lt;br&gt;
mono-basic-2.6.2-1.fc14.src.rpm&lt;br&gt;
mysql-5.1.55-1.fc14.src.rpm&lt;br&gt;
mysql-connector-c++-1.1.0-0.4.bzr895.fc14.src.rpm&lt;br&gt;
nedit-5.5-23.fc14.src.rpm&lt;br&gt;
nemiver-0.7.3-3.fc14.src.rpm&lt;br&gt;
nntpgrab-0.6.91-2.fc14.src.rpm&lt;br&gt;
nogravity-2.00-11.fc13.src.rpm&lt;br&gt;
ocaml-lacaml-5.4.7-2.fc13.src.rpm&lt;br&gt;
ogre-1.6.4-5.fc13.src.rpm&lt;br&gt;
openjpeg-1.3-10.fc14.src.rpm&lt;br&gt;
orage-4.6.1-2.fc13.src.rpm&lt;br&gt;
pam_abl-0.2.3-8.fc12.src.rpm&lt;br&gt;
perl-Catalyst-View-PDF-Reuse-0.03-4.fc14.src.rpm&lt;br&gt;
perl-CGI-Session-4.35-5.fc14.src.rpm&lt;br&gt;
perl-Color-Calc-1.061-2.fc14.src.rpm&lt;br&gt;
perl-Inline-0.46-1.fc14.src.rpm&lt;br&gt;
perl-Mixin-Linewise-0.003-2.fc14.src.rpm&lt;br&gt;
perl-MooseX-MethodAttributes-0.24-1.fc14.src.rpm&lt;br&gt;
perl-Net-FTPServer-1.122-9.fc14.src.rpm&lt;br&gt;
perl-Net-Patricia-1.19-1.fc14.src.rpm&lt;br&gt;
perl-Package-Stash-XS-0.19-1.fc14.src.rpm&lt;br&gt;
perl-Regexp-Assemble-0.34-5.fc14.src.rpm&lt;br&gt;
perl-String-Escape-2010.002-4.fc14.src.rpm&lt;br&gt;
perl-Text-Kakasi-2.04-13.fc14.src.rpm&lt;br&gt;
perl-UNIVERSAL-exports-0.05-8.fc14.src.rpm&lt;br&gt;
php-gettext-1.0.9-2.fc13.src.rpm&lt;br&gt;
php-pear-CodeGen-1.0.7-3.fc14.src.rpm&lt;br&gt;
postal-0.70-6.fc14.src.rpm&lt;br&gt;
pyclutter-gtk-0.10.0-2.fc14.src.rpm&lt;br&gt;
pyflakes-0.4.0-4.fc14.src.rpm&lt;br&gt;
python-billiard-0.3.1-2.fc14.src.rpm&lt;br&gt;
python-rabbyt-0.8.3-2.fc14.src.rpm&lt;br&gt;
python-zope-sqlalchemy-0.6-1.fc14.src.rpm&lt;br&gt;
redir-2.2.1-4.fc12.src.rpm&lt;br&gt;
rhncfg-5.9.22-2.fc14.src.rpm&lt;br&gt;
R-nws-1.7.0.1-1.fc14.src.rpm&lt;br&gt;
rubygem-shotgun-0.4-1.fc14.src.rpm&lt;br&gt;
R-zoo-1.6-3.fc14.src.rpm&lt;br&gt;
sarai-fonts-1.0-9.fc14.src.rpm&lt;br&gt;
sblim-cmpi-params-1.2.6-1.fc13.src.rpm&lt;br&gt;
scim-1.4.9-6.fc13.src.rpm&lt;br&gt;
shed-1.15-5.fc12.src.rpm&lt;br&gt;
sugar-tamtam-0-0.6.20100201git.fc14.src.rpm&lt;br&gt;
Thunar-1.0.2-3.fc14.src.rpm&lt;br&gt;
veusz-1.9-2.fc14.src.rpm&lt;br&gt;
vhd2vl-2.3-1.fc14.src.rpm&lt;br&gt;
virt-what-1.3-3.fc14.src.rpm&lt;br&gt;
w3m-0.5.2-18.fc14.src.rpm&lt;br&gt;
wannier90-1.2-2.fc13.src.rpm&lt;br&gt;
writer2latex-1.0.2-3.fc14.src.rpm&lt;br&gt;
ws-jaxme-0.5.1-4.4.fc12.src.rpm&lt;br&gt;
xmlfy-1.5.3-1.fc14.src.rpm&lt;br&gt;
xpaint-2.9.8.1-1.fc14.src.rpm&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Esta historia continúa&lt;/p&gt;</description><category>Fedora</category><category>package-management</category><guid>https://sergiobelkin.com/posts/2011/03/12/autotools-1/</guid><pubDate>Sat, 12 Mar 2011 16:17:45 GMT</pubDate></item><item><title>Autotools: Detrás de los famosos 3 pasos</title><link>https://sergiobelkin.com/posts/2011/03/05/autotools-detras-de-los-famosos-3-pasos/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		H2 { margin-bottom: 0.21cm } 		H2.western { font-family: "Liberation Sans", "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-family: "WenQuanYi Zen Hei"; font-size: 14pt; font-style: italic } 		H2.ctl { font-family: "Lohit Devanagari"; font-size: 14pt; font-style: italic } 		H3 { margin-bottom: 0.21cm } 		H3.western { font-family: "Liberation Sans", "Arial", sans-serif } 		H3.cjk { font-family: "WenQuanYi Zen Hei" } 		H3.ctl { font-family: "Lohit Devanagari" } 		P.sdfootnote { margin-left: 0.5cm; text-indent: -0.5cm; margin-bottom: 0cm; font-size: 10pt } 		A.sdfootnoteanc { font-size: 57% } --&gt;&lt;em&gt;&lt;span style="color: #000000;"&gt;La mayoría de los usuarios con conocimiento intermedios (o más) en Linux y sistemas similares habrá alguna vez compilado alguna vez un &lt;a title="Paquete" href="http://es.wikipedia.org/wiki/Paquete_de_software" target="_blank"&gt;paquete&lt;/a&gt; con la siguiente secuencia de comandos:&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./configure&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;make&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;make install&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Lo que tal vez no muchos conocen es qué herramientas permiten realizar eso y menos aun como se hace para construir los famosos archivos con extensión .tar.gz o .tar.bz2.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Autotools&lt;/h2&gt;
&lt;p&gt;Se conoce popularmente como autotools al GNU Build System, es decir al conjunto de herramientas para construir paquetes instalables  de software.&lt;/p&gt;
&lt;p&gt;Si bien un aplicación o una librería puede ser instalada – al menos en principio – a partir de un relativamente sencillo Makefile, tiene en principio dos grandes limitaciones, puede resultar poco flexible para el usuario instalador y puede resultar poco portable.&lt;/p&gt;
&lt;p&gt;Las autotools se usan para estandarizar el proceso de instalación. Si bien la curva de aprendizaje de estas herramientas es algo empinada, proporciona una sistematización en la instalación de software a partir de código fuente.&lt;/p&gt;
&lt;p&gt;Si bien se han creado con el tiempo algunos sistemas de construcción de paquetes alternativos en los sistemas operativos Linux y similares, es la suite preferida de una gran cantidad de proyectos open source.&lt;/p&gt;
&lt;p&gt;De ahí que la secuencia de instalación ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install sea ampliamente conocido por los usuarios de sistemas operativos estilo Linux.&lt;/p&gt;
&lt;h2&gt;Componentes principales de autotools&lt;/h2&gt;
&lt;h3&gt;autoconf&lt;/h3&gt;
&lt;p&gt;Crea el célebre script de alta portabilidad configure a partir de un archivo de macros M4. El script configure permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Personalizar la compilación (por ej: deshabilitar soporte 	para mysql)&lt;/li&gt;
&lt;li&gt;Verificar que los archivos necesarios para compilar están 	presentes en el sistema&lt;/li&gt;
&lt;li&gt;Imprimir mensajes descriptivos en cada caso&lt;/li&gt;
&lt;li&gt;Crear un archivo Makefile&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;automake&lt;/h3&gt;
&lt;p&gt;Es un script de perl que a partir de un archivo “template” crea un archivo Makefile.in que genera archivos que permite crear archivos Makefile compatibles con GNU Coding Standards.&lt;sup&gt;&lt;a name="sdfootnote1anc" href="https://sergiobelkin.com/posts/2011/03/05/autotools-detras-de-los-famosos-3-pasos/#sdfootnote1sym"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3&gt;libtool&lt;/h3&gt;
&lt;p&gt;Simplifica la creación de librerías (en particular de las dinámicas). Esta herramienta permite crear un nivel de abstracción del tipo de host que se está utilizando y permite al usuario compilar librerías con el mismo método de los tres pasos nombrados con anterioridad.&lt;/p&gt;
&lt;h2&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Muy sintética y simplificadamente, la tarea del “maintainer” del paquete es crear de manera consistente archivos configura.ac (para autoconf), Makefile.am (para automake), además de echar mano de ser necesario de marcos M4 para resolver la realización de una tarea (por ejemplo verificar la existencia un determinado header).&lt;/p&gt;
&lt;p&gt;Es un sistema que apunta a ser lo más portable posible y hacer previsible y flexible la tarea de instalar paquetes fuente al usuario.&lt;/p&gt;
&lt;p&gt;El objetivo principal es hacerle la vida más fácil al usuario antes que al maintainer.&lt;/p&gt;
&lt;p&gt;Desde luego, el &lt;a title="Usuario Final" href="http://www.sergiobelkin.com/2011/03/05/usuario-final-%C2%BFa-que-nos-referimos/"&gt;usuario final&lt;/a&gt; rara vez compilará un programa. Sin embargo, crear un paquete instalable a partir del código fuente es el paso previo para crear paquetes ya compilados generalmente en formato RPM o Debian, dependiendo de la distribución. Y las autotools juegan un rol importante en esa etapa intermedia.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2011/03/autotools.avi"&gt;Los famosos 3 pasos&lt;/a&gt;&lt;/p&gt;
&lt;div id="sdfootnote1"&gt;
&lt;p&gt;&lt;a name="sdfootnote1sym" href="https://sergiobelkin.com/posts/2011/03/05/autotools-detras-de-los-famosos-3-pasos/#sdfootnote1anc"&gt;1&lt;/a&gt;http://www.gnu.org/prep/standards/standards.html&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/ar/"&gt;&lt;img style="border-width: 0;" src="http://i.creativecommons.org/l/by-sa/2.5/ar/88x31.png" alt="Licencia de Creative Commons"&gt;&lt;/a&gt;&lt;br&gt;
&lt;span&gt;Usuario final: ¿A qué nos referimos?&lt;/span&gt; is licensed under a &lt;a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/ar/"&gt;Creative Commons Atribución-CompartirDerivadasIgual 2.5 Argentina License&lt;/a&gt;. La manera de reconocer los créditos es citando la URL de este sitio.&lt;/p&gt;</description><category>free-and-open-source-software</category><category>package-management</category><guid>https://sergiobelkin.com/posts/2011/03/05/autotools-detras-de-los-famosos-3-pasos/</guid><pubDate>Sat, 05 Mar 2011 16:07:16 GMT</pubDate></item><item><title>Sistemas de construcción de paquetes</title><link>https://sergiobelkin.com/posts/263/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;De 100 paquetes de fedora, 39 usan autotools.&lt;/p&gt;
&lt;p&gt;26 Development/Libraries&lt;br&gt;
13 System Environment/Libraries&lt;br&gt;
9 Development/Languages&lt;br&gt;
9 Applications/Internet&lt;br&gt;
7 Applications/System&lt;br&gt;
4 User Interface/Desktops&lt;br&gt;
3 User Interface/X&lt;br&gt;
3 System Environment/Daemons&lt;br&gt;
3 System Environment/Base&lt;br&gt;
3 Development/Tools&lt;br&gt;
3 Applications/Multimedia&lt;br&gt;
3 Amusements/Games&lt;br&gt;
2 Applications/Text&lt;br&gt;
2 Applications/Productivity&lt;br&gt;
2 Applications/File&lt;br&gt;
1 User Interface/X Hardware Support&lt;br&gt;
1 Development/Libraries/Java&lt;br&gt;
1 Applications/Publishing&lt;br&gt;
1 Applications/Engineering&lt;br&gt;
1 Applications/Emulators&lt;br&gt;
1 Applications/Editors&lt;br&gt;
1 Applications/Databases&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description><category>package-management</category><guid>https://sergiobelkin.com/posts/263/</guid><pubDate>Thu, 03 Mar 2011 07:05:43 GMT</pubDate></item><item><title>Compilar en diferentes directorios</title><link>https://sergiobelkin.com/posts/234/</link><dc:creator>sebelk</dc:creator><description>&lt;h2&gt;Compilar en diferentes directorios&lt;/h2&gt;
				&lt;code&gt;mkdir custombuild&lt;br&gt;
cd custombuild&lt;br&gt;
./configure $CUSTOMFLAGS&lt;/code&gt;
&lt;h2&gt;Cambiarle el nombre a un programa&lt;/h2&gt;
&lt;code&gt;./configure --program-transform-name=PROGRAM&lt;/code&gt;</description><category>package-management</category><guid>https://sergiobelkin.com/posts/234/</guid><pubDate>Fri, 01 Oct 2010 09:11:57 GMT</pubDate></item></channel></rss>