Tutorial de empaquetado
Creando un Flatpak de una aplicación que esté ya empaquetada en Fedora involucra dos pasos. Primero necesita crear un módulo para la aplicación. Este módulo será utilizado para reconstruir la aplicación RPM y RPMs. Después necesita crear un contenedor fuera del módulo. En el contexto Fedora, flatpak son tan solo otra forma de contenedor, y son manipulados muy similar a los contenedores Docker utilizados para aplicaciones de servidor.
Tan solo como un paquete, las instrucciones para construir el módulo 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 dos archivos: <application>.yaml
, el cual define el contenido del módulo, y conteiner.yaml
, el cual define como el módulo está ajustado en un contenedor Flatpak.
Ajustes
Instalar las herramientas necesarias:
$ sudo dnf install flatpak-module-tools fedmod
Asegure que su usuario está dentro del grupo mock
(ambos compilaciones de módulo 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 pudo ser ya instalado, pero en estado deshabilitado. Para habilitar ejecute:
E instale el Fedora Flatpak Runtime si no lo ha instalado ya:
|
Creando <application>.yaml
y container.yaml
$ mkdir feedreader && cd feedreader
$ fedmod fetch-metadata
$ fedmod rpm2flatpak --flatpak-common --flathub=feedreader feedreader
Esto genera versiones iniciales de los dos archivos. La opción --flatpak-common
hace que el módulo generado dependa del módulo flatpak-common
. Esto no es lo predeterminado, ya que flatpak-common
aún es un bit experimental, pero a menudo es muy útil en hacer su módulo más pequeño y más fácil de construir. La opción --flathub=feedreader
busca Flathub para una aplicación cuyo nombre o ID de aplicación coincida con feedreader
, y utilice la declaración Flathub para inicializar container.yaml
. Si son encontradas múltiples coincidencias, son exhibidas, y necesitará re-ejecutar fedmod rpm2flatpak
con una cadena de búsqueda más específica.
Primero miraremos en el archivo de definición del módulo:
---
document: modulemd
version: 2
data:
summary: RSS desktop client (1)
description: >- (1)
FeedReader is a modern desktop application designed to complement existing web-based
RSS accounts. It combines all the advantages of web based services like synchronization
across all your devices with everything you expect from a modern desktop application.
license:
module:
- MIT
dependencies:
- buildrequires:
flatpak-common: [f37]
flatpak-runtime: [f37]
platform: [f37]
requires:
flatpak-common: [f37]
flatpak-runtime: [f37]
platform: [f37]
profiles: (2)
default:
rpms:
- feedreader
components:
rpms:
feedreader: (3)
buildorder: 10
rationale: Application package
ref: f37 (4)
gnome-online-accounts: (5)
rationale: Runtime dependency
ref: f37
gumbo-parser: (5)
rationale: Runtime dependency
ref: f37
libpeas: (5)
rationale: Runtime dependency
ref: f37
...
1 | Origen y descripción viene desde metadatos RPM |
2 | El perfil de listados por defecto de RPM está incluido junto con sus dependencias |
3 | El paquete principal para la aplicación |
4 | Esta es la rama del RPM en https://src.fedoraproject.org a utilizar para este componente. Puede utilizar cualquier rama, o incluso apuntar a un commit específico. |
5 | Más allá del rpms fuente que será recompilado para agrupar |
Este pudo ser utilizado tal cual. Para más casos complejos, puede ser necesario añadir teclas buildorder:
adicionales tales que las dependencias vinculadas de compilación estén en el orden correcto.
Entonces miraremos en el archivo container.yam
.
compose:
modules:
- feedreader:stable
flatpak:
id: org.gnome.FeedReader
branch: stable
command: feedreader
finish-args: |-
--socket=pulseaudio
--socket=x11 (1)
--share=ipc
--socket=wayland
--device=dri
--share=network
--filesystem=xdg-run/dconf
--filesystem=~/.config/dconf:ro
--talk-name=ca.desrt.dconf
--env=DCONF_USER_CONFIG_DIR=.config/dconf
--talk-name=org.gnome.OnlineAccounts
--own-name=org.gnome.FeedReader.ArticleView
--talk-name=org.freedesktop.Notifications
--talk-name=org.freedesktop.secrets
--env=DECSYNC_DIR=.local/share/decsync
--filesystem=~/.local/share/decsync
1 | Esto sería mejor en --socket=fallback-x11 para prevenir acceso a los zócalos Xwayland cuando ejecuten en Wayland. |
Además el archivo container.yaml
puede ser utilizado como es. Si no hay ninguna construcción existente de la aplicación en Flathub, puede omitir la opción --flathub
para fedmod rpm2flatpak`. En este caso necesita tomar un ID de aplicación y editar container.yaml
.
Realizando una compilación local
$ flatpak-module local-build --install
Esto es un enlace para tres pasos:
$ flatpak-module build-module
$ flatpak-module build-container --from-local
$ flatpak-module install <aplicación>-stable-<version>.oci.tar.gz
Si la compilación del módulo es correcta pero la construcción del contenedor falla, y necesita cambiar el container.yam e intentar de nuevo, puede hacer:
$ flatpak-module build-container --from-local --install
Probando
Si la instalación es correcta, ahora puede hacer:
$ flatpak run org.gnome.FeedReader
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 módulo
Una vez que el repo haya sido creado:
$ mv <aplicación> <aplicación>.old
$ fedpkg clone flatpaks/<aplicación>
$ cd <application>
$ cp ../application.old/{<aplicación>.yaml,container.yaml} .
$ git add <aplicación>.yaml container.yaml
$ git commit -m "Initial import"
$ git push origin stable
Compilando en Koji
Primera compilación del módulo
$ fedpkg module-build
Si eso completa correctamente, entonces puede ir a:
$ fedpkg flatpak-build
Probando la construcción
Para instalar la última construcción lograda desde Koji, ejecute:
$ flatpak-module install --koji <application>:stable
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. El ID de construcción para el _Flatpak será algo como: miaplicación-20b180601144429.2
.
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>.
Want to help? Learn how to contribute to Fedora Docs ›