Flatpak (Español)
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 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
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.
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
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
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
yNoExtract
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 scriptconfigure
,
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