Flatpak (Español)

From ArchWiki
Esta traducción de Flatpak fue revisada el 2019-03-14. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Del README del proyecto: "Flatpak es un sistema de compilación, distribución y ejecución de aplicaciones de escritorio aisladas en Linux."

De flatpak(1):

Flatpak es una herramienta para la gestión de aplicaciones y los tiempos de ejecución ('runtimes') que utilizan. En el modelo Flatpak, las aplicaciones pueden ser compiladas y distribuidas de manera independiente del sistema host en que se utilizan, y están aisladas del sistema host ('aislamiento de proceso') en cierto punto, en tiempo de ejecución.
Flatpak utiliza OSTree[enlace roto 2023-10-29] para distribuir y implementar datos. Los repositorios que utiliza son los repositorios OSTree y pueden ser manipulados con la utilidad de ostree. Los tiempos de ejecución y aplicaciones instaladas son comprobaciones de OSTree.

Instalación

Instale el paquete flatpak.

Nota: Si desea compilar flatpaks con flatpak-builder necesitará instalar las dependencias opcionales de elfutils y patch.

Administrando repositorios

Añadir un repositorio

Para añadir un repositorio remoto de flatpak haga:

$ flatpak remote-add nombre ubicación

Donde nombre es el nombre para el nuevo remoto y ubicación es la ruta o URL del repositorio.

Por ejemplo para añadir el repositorio Flathub oficial:

$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Eliminar un repositorio

Para eliminar un repositorio remoto de flatpak haga:

$ flatpak remote-delete nombre

Donde nombre es el nombre del repositorio remoto a eliminar.

Listar repositorios

Para listar todos los repositorios agregados haga:

$ flatpak remotes

Administrando tiempos de ejecución y aplicaciones

Búsqueda de un tiempo de ejecución o aplicación remota

Antes de poder buscar un tiempo de ejecución o aplicación en un repositorio recién agregado, necesitamos recuparar los datos del flujo de aplicaciones para ello:

$ flatpak update
Looking for updates...
Updating appstream data for remote name

Ahora podemos proceder a buscar un paquete con flatpak search nombre-del-paquete, e.j. para buscar el paquete libreoffice con el flathub remoto configurado:

$ flatpak search libreoffice
Application ID              Version Branch Remotes Description                       
org.libreoffice.LibreOffice         stable flathub The LibreOffice productivity suite

Listar todos los tiempos de ejecución y aplicaciones disponibles

Para listar todas los tiempos de ejecución y aplicaciones en un repositorio remoto llamado remoto haga:

$ flatpak remote-ls remoto

Instalar un tiempo de ejecución o aplicación

Para instalar un tiempo de ejecución o aplicación haga:

$ flatpak install remoto nombre

Donde remoto es el nombre del repositorio remoto, y nombre es el nombre de la aplicación o tiempo de ejecución a instalar.

Sugerencia: Puede usar indicadores parciales flatpak install nombre-parcial (por ejemplo flatpak install libreoffice).

Listar los tiempos de ejecución y aplicaciones instaladas

Para listar tiempos de ejecución y aplicaciones instaladas haga:

$ flatpak list

Ejecutar aplicaciones

Las aplicaciones flatpak también pueden ser ejecutadas desde la línea de órdenes:

$ flatpak run nombre

Actualizar un tiempo de ejecución o aplicación

Para actualizar un tiempo de ejecución o aplicación llamada nombre haga:

$ flatpak update nombre

Desinstalar un tiempo de ejecución o aplicación

Para desinstalar un tiempo de ejecución o aplicación llamada nombre haga:

$ flatpak uninstall nombre
Sugerencia: Puede desinstalar "referencias" flatpak no utilizadas (también conocidos como huérfanos sin aplicación/tiempo de ejecución) con flatpak uninstall --unused.

Añadiendo archivos .desktop de Flatpak a su menú

Flatpak espera que los manejadores de ventana respeten la variable de entorno XDG_DATA_DIRS para descubrir aplicaciones. Esto puede requerir reiniciar la sesión o el lanzador podría no admitirlo. En caso de que puede editar la lista de directorios escaneados, agréguelos a esta:

~/.local/share/flatpak/exports/share/applications
/var/lib/flatpak/exports/share/applications

Es sabido que ésto es necesario en Awesome.

Visualizando permisos de aislamiento de aplicación

Las aplicaciones Flatpak vienen con reglas de aislamiento predefinidas que definen los recursos y rutas del sistema de archivos que la aplicación tiene permitido acceder. Para ver los permisos específicos de aplicación haga:

$ flatpak info --show-permissions nombre

La referencia de los nombres de permisos de aislamiento puede encontrase en la documentación oficial flatpak.

Anulando permisos de aislamiento de aplicaciones

Si encuentra que los permisos predefinidos de la aplicación son demasiado laxos o demasiado restrictivos puede cambiar cualquier cosa que desee usando la órden flatpak override.

Por ejemplo:

flatpak override --nofilesystem=home nombre

Ésto evitará el acceso de la aplicación a su carpeta de inicio.

Cada tipo de permiso como dipositivo, sistema de archivo o socket tiene una opción de línea de órden que permite ése permiso en particular y una opción separada que lo niega. Por ejemplo, en caso de acceso a dipositivo --device=device_name permite el acceso, --nodevice=device_name niega el permiso para acceder al dispositivo.

Para todos los comandos de tipos de permisos consulte la página del manual: flatpak-override(1)

Las anulaciones de permisos se pueden restablecer a los valores predeterminados con la órden:

$ flatpak override --reset nombre

Creación de un tiempo de ejecución base personalizado

Advertencia: Si quiere liberar su software al público como un Flatpak, un tiempo de ejecución basado en Arch no es adecuado. En éste caso, deseará seguir la documentación oficial para integrar su software en el ecosistema apropiado Flatpak usando las tiempos de ejecución comunes.
Nota: Posiblemente desee utilizar una cuenta de usuario no confiable y sin privilegios para empaquetar software que no sea de confianza porque no es aislado durante la creación de la app y el tiempo de ejecución.
Nota: Al distribuir paquetes a otros, puede ser obligado legalmente a proporcionar el código fuente de parte del software empaquetado que sea solicitado. Posiblemente desee utilizar ABS para compilar paquetes desde la fuente.

Puede crear un tiempo de ejecución personalizado basada en Arch y SDK base para Flatpak usando pacman. Así puede utilizarlo para compilar y empaquetar aplicaciones. Esto es una alternativa para uso personal para los tiempos de ejecución por defecto org.freedesktop.BasePlatform y org.freedesktop.BaseSdk.

Además de flatpak, necesita tener instalado fakeroot y para el soporte de los enganches de pacman también fakechroot.

Primero, empiece creando un directorio para compilar el tiempo de ejecución y las posibles aplicaciones.

$ mkdir myflatpakbuilddir
$ cd myflatpakbuilddir

Enseguida puede preparar un directorio para compilar la plataforma base del tiempo de ejecución. Los subdirectorios del archivo contendrán lo que después será el directorio /usr en el aislamiento de proceso. Por lo tanto tendrá que crear enlaces simbólicos para que las rutas predeterminadas /usr/share etc. puedans ser accesadas desde Arch en la ruta habitual.

$ mkdir -p myruntime/files/var/lib/pacman
$ touch myruntime/files/.ref
$ ln -s /usr/usr/share myruntime/files/share
$ ln -s /usr/usr/include myruntime/files/include
$ ln -s /usr/usr/local myruntime/files/local

Haga que las fuentes de su OS estén disponibles para el tiempo de ejecución de Arch:

$ mkdir -p myruntime/files/usr/share/fonts
$ ln -s /run/host/fonts myruntime/files/usr/share/fonts/flatpakhostfonts

Necesita y posiblemente desee adaptar su pacman.conf antes de instalar los paquetes en el tiempo de ejecución. Copie /etc/pacman.conf en su directorio de compilación y después haga los cambios siguientes:

  • Elimine la opción CheckSpace de tal modo que pacman no se quejará de los errores al encontrar sistema de archivo raíz para verificar espacio de disco.
  • Elimine cualquier repositorio personalizado no deseado y las configuraciones IgnorePkg, IgnoreGroup, NoUpgrade y NoExtract que son necesarias solo en el sistema host.

Ahora instale los paquetes para el tiempo de ejecución:

$ fakechroot fakeroot pacman -Syu --root myruntime/files --dbpath myruntime/files/var/lib/pacman --config pacman.conf base
$ mv pacman.conf myruntime/files/etc/pacman.conf

Configure los locales para usarlas editando myruntime/files/etc/locale.gen. Luego regenere los locales de los tiempos de ejecución.

$ fakechroot chroot myruntime/files locale-gen

El SDK base se puede crear desde el tiempo de ejecución base con aplicaciones adicionales necesarias para crear paquetes y ejecución de pacman.

$ cp -r myruntime mysdk
$ fakechroot fakeroot pacman -S --root mysdk/files --dbpath mysdk/files/var/lib/pacman --config mysdk/files/etc/pacman.conf base-devel fakeroot fakechroot --needed

Inserte metadatos acerca del tiempo de ejecución y SDK.

myruntime/metadata
[Runtime]
name=org.mydomain.BasePlatform
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26
mysdk/metadata
[Runtime]
name=org.mydomain.BaseSdk
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26

Agregue el tiempo de ejecución base y el SDK al repositorio local en el directorio actual. Probablemete desee darles los mensajes de confirmación adecuados como “Mi tiempo de ejecución base de Arch” and “Mi SDK base de Arch”.

$ ostree init --mode archive-z2 --repo=.
$ EDITOR="nano -w" ostree commit -b runtime/org.mydomain.BasePlatform/x86_64/2016-06-26 --tree=dir=myruntime
$ EDITOR="nano -w" ostree commit -b runtime/org.mydomain.BaseSdk/x86_64/2016-06-26 --tree=dir=mysdk
$ ostree summary -u

Instale el tiempo de ejecución y SDK.

$ flatpak remote-add --user --no-gpg-verify myarchos file://$(pwd)
$ flatpak install --user myarchos org.mydomain.BasePlatform 2016-06-26
$ flatpak install --user myarchos org.mydomain.BaseSdk 2016-06-26

Creación de aplicaciones con pacman

Como alternativa para crear aplicaciones de la manera usual, podemo usar pacman para crear una versión en contenedor de los paquetes regulares de Arch. Tenga en cuenta que /usr es de solo lectura al crear apps, por lo que no podemos usar los paquetes de Arch mientras se compila una apliación. Para crear una aplicación real con pacman, podemos

  • usar pacman para crear tiempo de ejecución que contenga todas las dependencias
  • y compilar la aplicación nosotros mismos de la manera usual o quizás usando pacman con un PKGBUILD personalizado adaptado a Flatpak quien utiliza --prefix=/app para el script configure,

o podemos

  • usar pacman para crear un tiempo de ejecución que contenga la aplicación instalada con pacman
  • y crear una aplicación ficticia para lanzarla.

Para hacer lo último, primero cree un tiempo de ejecución usando pacman como ésta para gedit. El tiempo de ejecución primero es inicializado y preparado para usarse con pacman.

$ flatpak build-init -w geditruntime org.mydomain.geditruntime org.mydomain.BaseSdk org.mydomain.BasePlatform 2016-06-26
$ flatpak build geditruntime sed -i "s/^#Server/Server/g" /etc/pacman.d/mirrorlist
$ flatpak build geditruntime ln -s /usr/var/lib /var/lib
$ flatpak build geditruntime fakeroot pacman-key --init
$ flatpak build geditruntime fakeroot pacman-key --populate archlinux

Después de que el paquete es instalado. La conexión de red del host debe estar disponible para pacman.

$ flatpak build --share=network geditruntime fakechroot fakeroot pacman --root /usr -S gedit

Puede probar la instalación antes de finalizar el tiempo de ejecución (sin un aislamiento apropiado).

$ flatpak build --socket=x11 geditruntime gedit

Ahora finalize la creación del tiempo de ejecución y expórtelo al nuevo repositorio local. Las claves GnuPG de pacman tienen permisos que pueden interferir y necesitan ser eliminadas primero.

$ flatpak build geditruntime rm -r /etc/pacman.d/gnupg
$ flatpak build-finish geditruntime
$ sed -i "s/\[Application\]/\[Runtime\]/;s/runtime=org.mydomain.BasePlatform/runtime=org.mydomain.geditruntime/" geditruntime/metadata
$ flatpak build-export -r geditrepo geditruntime

Luego cree una aplicación ficticia.

$ flatpak build-init geditapp org.gnome.gedit org.mydomain.BaseSdk org.mydomain.geditruntime

Ahora termine la aplicación ficticia. Puede afinar los permisos de acceso de la aplicación cuando se aisle dando opciones adicionales al finalizar la compilación. Para posibles opciones véase documentation de Flatpak y los Archivos de manifiesto de GNOME.

$ flatpak build-finish geditapp --socket=x11 [possibly other options] --command=gedit
$ flatpak build-export geditrepo geditapp

Instálela junto con el tiempo de ejecución.

$ flatpak --user remote-add --no-gpg-verify geditrepo geditrepo
$ flatpak install --user geditrepo org.mydomain.geditruntime
$ flatpak install --user geditrepo org.gnome.gedit
$ flatpak run org.gnome.gedit

Véase también