Tutorial de empaquetado

Creando un Flatpak de una aplicación que esté ya empaquetada en Fedora involucra dos pasos. Primero necesita reconstruir los RPM de la aplicación junto con cualquiera de las dependencias las cuales no están incluidas dentro del tiempo de ejecución. Entonces necesita crear un contenedor fuera de la aplicación. En el contexto Fedora, los flatpak son tan solo otra forma de contenedor, y son manipulados muy similares a los contenedores Docker utilizándolos para aplicaciones servidor.

Tan solo como un paquete, las instrucciones para construir el flatpak de RPM y contenedores están almacenados a git en https://src.fedoraproject.org y las construcciones están coordinadas por https://koji.fedoraproject.org. El flatpak para una aplicación puede encontrase en https://src.fedoraproject.org dentro del repositorio flatpaks/<application>; este repositorio git contiene un archivo container.yam, el cual define como el paquete es configurado en un contenedor Flatpak.

Ajustes

Instalar las herramientas necesarias:

$ sudo dnf install flatpak-module-tools

Asegure que su usuario está dentro del grupo mock (ambos compilaciones de RPM local y contenedor local utilizan mock).

$ sudo usermod -a -G mock $USER

(Puede que necesite salir y volver a entrar.)

Añadir a la prueba flatpak Fedora remota:

$ flatpak remote-add fedora-testing oci+https://registry.fedoraproject.org#testing

En Fedora, la prueba remota ya estaría instalada, pero en estado deshabilitado. Para habilitarlo ejecute:

$ flatpak remote-modify --enable fedora-testing

E instale el Fedora Flatpak Runtime si no lo ha instalado ya:

$ flatpak install fedora-testing org.fedoraproject.Platform/x86_64/f42

Se crea container.yaml

$ mkdir lagrange && cd lagrange
$ flatpak-module init --flathub=lagrange lagrange

Esto genera una versión inicial de container.yaml. La opción --flathub=lagrange busca Flathub para una aplicación cuyo nombre o ID de aplicación coincide con lagrange, y utiliza el manifiesto Flathubn para inicializar container.yaml. Si son encontradas múltiples coincidencias, son exhibidas, y necesitará re-ejecutar flatpak-module init con una cadena de búsqueda más específica.

Miremos en el archivo container.yaml.

container.yaml
flatpak:
    id: fi.skyjake.Lagrange
    branch: stable
    runtime-name: flatpak-runtime
    runtime-version: f42
    packages:
    - lagrange
    command: lagrange
    finish-args: |-
        --socket=wayland
        --socket=fallback-x11
        --socket=pulseaudio
        --share=ipc
        --share=network
        --device=dri
        --filesystem=xdg-download
        --filesystem=home:ro

Este archivo container.yaml puede ser utilizado tal como es, pero a menudo son necesarias modificaciones.

Si no hay compilaciones existentes de la aplicación en Flathub, puede omitir la opción --flathub para flatpak-module init. En este caso necesitará tomar un ID de aplicación y editar container.yaml.

Realizando una compilación local

$ flatpak-module build-rpms-local --auto
$ flatpak-module build-container-local --install

Si es correcta la construcción de los RPM pero la construcción del contenedor falla, y necesita cambiar el container.yaml e intentar de nuevo, puede repetir tan solo el último paso.

Probando

Si la instalación es correcta, ahora puede hacer:

$ flatpak ejecuta fi.skyjake.Lagrange

Para probarlo fuera.

solicita src.fedoraproject.org

Solicite un repositorio Git nuevo como sigue:

$ fedpkg request-repo --namespace=flatpaks <aplicación>

Importando su contenido de flatpak

Una vez que el repositorio ha sido creado:

$ mv <application> <application>.old
$ fedpkg clone flatpaks/<application>
$ cd <application>
$ cp ../application.old/contenedor.yaml
$ git add <application>.yaml contenedor.yaml
$ git commit -m "Importación inicial"
$ git push origen estable

Compilando en Koji

Primera compila los paquetes:

$ flatpak-module build-rpms --auto

Si eso completa correctamente, entonces puede ir a:

$ flatpak-module build-container

Probando la construcción

Para instalar la última construcción lograda desde Koji, ejecute:

$ flatpak-module install --koji <application>-flatpak

Creando una actualización

Encuentra el NVR de su compilación Flatpak - si no lo tiene en su arrastre de terminal vaya a https://koji.fedoraproject.org/ y busque en "Packages" para el nombre de la `<aplicación>-flatpak.

Vaya a https://bodhi.fedoraproject.org/updates/new e introduzca el flatpak NVR bajo Candidate Builds (descarta “Packages”). Introduzca texto bajo “Actualizar notas” como “Flatpak inicial de <aplicación>”, y pulse <Enviar>.