Files
Pena/docs/3-installation/3.2-Installation-Bazzite.md
T

8.9 KiB
Raw Blame History

Installation sur Bazzite OS

Bazzite est une distribution immuable basée sur Fedora Atomic (rpm-ostree). Le système de fichiers racine est en lecture seule : on n'installe pas de paquets de développement (webkit2gtk-devel, compilateurs…) directement sur l'hôte comme on le ferait sur une Fedora classique.

Cette contrainte vaut aussi pour les autres systèmes atomiques (Fedora Silverblue, Kinoite, Universal Blue, openSUSE MicroOS…).

La méthode recommandée est le Flatpak : on construit une seule fois un fichier .flatpak (le « bundle »), on l'héberge (par ex. sur un dépôt Gitea), puis on l'installe sur n'importe quelle machine en une commande, sans rien compiler ni installer de dépendance sur l'hôte.

Vous voulez… Allez à…
Installer Pena depuis un .flatpak déjà construit (récupéré sur Gitea) 1. Méthode simple
Produire le fichier .flatpak (une fois, sur une machine de build) 2. Compiler puis 3. Construire le bundle
Développer / itérer sur le code sans empaqueter 4. Alternative développeur (distrobox)

Bazzite fournit flatpak (avec le dépôt Flathub), distrobox et podman préinstallés. Aucune surcouche rpm-ostree (rpm-ostree install) n'est nécessaire.


1. Méthode simple — installer le paquet pré-construit

C'est le scénario du quotidien : le fichier pena.flatpak a déjà été construit (voir sections 2 et 3) et déposé sur votre Gitea. Sur la machine cible, il suffit de le récupérer et de l'installer.

1.1 — Installer

# Récupérer le bundle depuis Gitea (adaptez l'URL à votre dépôt)
curl -L -o pena.flatpak \
  https://git.goutailler-olivier.com/<utilisateur>/<depot>/raw/branch/main/pena.flatpak

# Installer pour l'utilisateur courant (aucun droit root nécessaire)
flatpak install --user pena.flatpak

Le runtime org.gnome.Platform (qui fournit WebKitGTK) est téléchargé automatiquement depuis Flathub lors de l'installation s'il n'est pas déjà présent. C'est la seule dépendance, et elle est gérée par Flatpak — rien à compiler ni à installer sur l'hôte.

1.2 — Lancer

flatpak run com.pena.app

Pena apparaît aussi dans le menu des applications de Bazzite.

1.3 — Mettre à jour / désinstaller

# Mettre à jour : récupérer le nouveau bundle puis réinstaller par-dessus
flatpak install --user --reinstall pena.flatpak

# Désinstaller
flatpak uninstall com.pena.app

1.4 — (Optionnel) Installation en une ligne

Vous pouvez déposer à côté du bundle, sur Gitea, un script install.sh qui automatise le téléchargement et l'installation :

#!/usr/bin/env bash
set -euo pipefail
URL="https://git.goutailler-olivier.com/<utilisateur>/<depot>/raw/branch/main/pena.flatpak"
TMP="$(mktemp --suffix=.flatpak)"
curl -L -o "$TMP" "$URL"
flatpak install --user -y "$TMP"
rm -f "$TMP"
echo "Pena installé. Lancez-le avec : flatpak run com.pena.app"

L'installation se résume alors à :

curl -L https://git.goutailler-olivier.com/<utilisateur>/<depot>/raw/branch/main/install.sh | bash

2. Compiler le binaire (une fois)

Cette étape et la suivante se font sur une machine de build (la vôtre, dans un container). Le résultat est un fichier pena.flatpak que vous n'aurez plus qu'à héberger.

Pena se compile dans un container Ubuntu via distrobox, pour ne rien installer sur l'hôte immuable. WebKitGTK et le compilateur restent dans le container.

# 1. Créer et entrer dans un container Ubuntu
distrobox create --name pena-build --image ubuntu:24.04
distrobox enter pena-build

# 2. (dans le container) installer les dépendances de build
sudo apt update
sudo apt install -y \
  libwebkit2gtk-4.1-dev build-essential curl wget file \
  libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev git
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
cargo install tauri-cli --version "^2"

# 3. (dans le container) compiler
cd ~/Pena/Pena-tauri      # adaptez le chemin vers les sources
cargo tauri build

Le binaire est produit dans src-tauri/target/release/pena-taury. Vous pouvez ensuite quitter le container (exit) : la suite (section 3) se fait sur l'hôte, où flatpak est disponible. Comme $HOME est partagé entre l'hôte et le container, le binaire compilé est accessible des deux côtés.


3. Construire le paquet .flatpak (une fois)

À partir du binaire compilé, on produit le fichier unique pena.flatpak.

3.1 — Outillage Flatpak (sur l'hôte)

flatpak install -y flathub org.gnome.Platform//47 org.gnome.Sdk//47 org.flatpak.Builder

3.2 — Fichiers d'empaquetage

Depuis la racine Pena-tauri/, créez deux fichiers.

com.pena.app.desktop :

[Desktop Entry]
Type=Application
Name=Pena
Comment=Lecteur Markdown
Exec=pena
Icon=com.pena.app
Terminal=false
Categories=Utility;Office;

com.pena.app.yml (manifeste Flatpak) :

id: com.pena.app
runtime: org.gnome.Platform
runtime-version: '47'
sdk: org.gnome.Sdk
command: pena

finish-args:
  - --share=ipc
  - --socket=wayland
  - --socket=fallback-x11
  - --device=dri
  # Accès en lecture aux fichiers Markdown de l'utilisateur
  - --filesystem=home:ro

modules:
  - name: pena
    buildsystem: simple
    build-commands:
      - install -Dm755 pena-taury /app/bin/pena
      - install -Dm644 com.pena.app.desktop /app/share/applications/com.pena.app.desktop
      - install -Dm644 icon.png /app/share/icons/hicolor/512x512/apps/com.pena.app.png
    sources:
      - type: file
        path: src-tauri/target/release/pena-taury
      - type: file
        path: com.pena.app.desktop
      - type: file
        path: src-tauri/icons/icon.png

L'identifiant com.pena.app correspond au champ identifier de src-tauri/tauri.conf.json. Le runtime org.gnome.Platform embarque WebKitGTK : l'app fonctionnera sans aucune dépendance installée sur la machine cible.

3.3 — Construire le bundle

Depuis Pena-tauri/ :

# 1. Construire l'app dans un dépôt OSTree local (dossier "repo")
flatpak run org.flatpak.Builder --force-clean --repo=repo \
  --install-deps-from=flathub build-dir com.pena.app.yml

# 2. Exporter en UN SEUL fichier .flatpak
flatpak build-bundle repo pena.flatpak com.pena.app \
  --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo

Vous obtenez pena.flatpak : c'est ce fichier unique, autoportant, que vous installez partout (section 1). L'option --runtime-repo y inscrit la référence vers Flathub, pour que le runtime soit récupéré automatiquement à l'installation.

3.4 — Héberger sur Gitea

Déposez pena.flatpak sur votre dépôt Gitea, soit :

  • en l'ajoutant au dépôt (git add pena.flatpak) — simple, mais alourdit l'historique ;
  • de préférence, en l'attachant à une release Gitea (onglet ReleasesNew Release → joindre le binaire). L'URL de téléchargement direct est alors stable et n'encombre pas le dépôt.

Adaptez ensuite l'URL utilisée à la section 1.1.


4. Alternative développeur — lancer via distrobox

Si vous développez sur Pena et n'avez pas besoin d'un paquet installable, vous pouvez exécuter l'application directement depuis le container, sans passer par Flatpak.

# Lancement direct (la fenêtre s'affiche sur le bureau de l'hôte)
distrobox enter pena-build -- bash -lc 'cd ~/Pena/Pena-tauri && cargo tauri dev'

Pour exposer le binaire compilé à l'hôte comme une commande :

# Depuis le container, après "cargo tauri build"
distrobox-export --bin ~/Pena/Pena-tauri/src-tauri/target/release/pena-taury \
  --export-path ~/.local/bin

Le binaire devient lançable depuis l'hôte (~/.local/bin doit être dans le PATH). Cette voie est pratique pour itérer, mais le Flatpak (sections 13) reste la méthode recommandée pour une installation propre et reproductible.


Note — AppImage

Une autre forme de « fichier unique à exécuter » est l'AppImage : un binaire autoportant qui se lance sans installation (chmod +x Pena.AppImage && ./Pena.AppImage). Tauri sait en produire, mais cela nécessite d'activer le bundler (bundle.active: true dans tauri.conf.json, cible appimage) et l'outillage associé. Le bundle Flatpak décrit ci-dessus est privilégié ici car il s'intègre au menu, se met à jour proprement et gère automatiquement ses dépendances via Flathub.

Voir aussi