Fedora Atomiques

Fedora Silverblue : Mémo des commandes rpm-ostree et ostree

Table des matières

fedora-silverblue-logo



Introduction



Voyons ici les commandes pour administrer les étitions "Atomiques" de Fedora Linux (Silverblue, Kinoite) avec rpm-ostree et ostree.

Les commandes n'ont pas besoin d'être lancées en root, une authentification polkit sera éventuellement demandée si nécessaire (pop-up graphique ou prompt en ligne de commande).

Cet article a été remis à jour avec Fedora, car il a été écrit initialement avec Fedora 33.

Statut



Pour voir le statut de la distribution, et sur quel snapshot on est :

Code BASH :
rpm-ostree status


Voici un retour de console :

Code TEXT :
State: idle
Deployments:
  fedora:fedora/40/x86_64/silverblue
                  Version: 40.20240607.0 (2024-06-07T00:43:37Z)
               BaseCommit: 0e015f83d993c080351afe34b02b93d19a639d5fe432180d61660bfea47a0160
             GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC
                     Diff: 1 removed
          LayeredPackages: nmon
● fedora:fedora/40/x86_64/silverblue
                  Version: 40.20240607.0 (2024-06-07T00:43:37Z)
               BaseCommit: 0e015f83d993c080351afe34b02b93d19a639d5fe432180d61660bfea47a0160
             GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC
          LayeredPackages: iftop nmon
  fedora:fedora/40/x86_64/silverblue
                  Version: 40.20240607.0 (2024-06-07T00:43:37Z)
                   Commit: 0e015f83d993c080351afe34b02b93d19a639d5fe432180d61660bfea47a0160
             GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC


La pastille ● indique sur quelle image on se trouve actuellement.
On a le détail de la branche sur laquelle on est, la version du système et le commit.
On a la liste des LayeredPackages, c'est à dire des paquets ajoutés à notre système de base. Ce sont des paquets ajoutés avec rpm-ostree et non des paquets flatpak ni des conteneurs.


Mise à jour du système



Pour mettre à jour le système de base :

Code BASH :
rpm-ostree upgrade


Voici le retour qui s'affiche lors de la mise à jour :
Code TEXT :
==== AUTHENTICATING FOR org.projectatomic.rpmostree1.upgrade ====
Authentication is required to update software
Authenticating as: adrien
Password: 
==== AUTHENTICATION COMPLETE ====
⠙ Scanning metadata: 7958                                                             144 metadata, 234 content objects fetched; 180048 KiB transferred in 43 seconds; 262,0 Mo content written
Scanning metadata: 7958... done
Staging deployment... done
Upgraded:
  iproute 6.7.0-1.fc40 -> 6.7.0-2.fc40
  open-vm-tools 12.3.5-3.fc40 -> 12.4.0-1.fc40
  open-vm-tools-desktop 12.3.5-3.fc40 -> 12.4.0-1.fc40
  podman 5:5.0.3-1.fc40 -> 5:5.1.0-1.fc40
Run "systemctl reboot" to start a reboot
 


Il sera nécessaire de redémarrer sur la nouvelle image (un reboot du système) pour prendre en compte les modifications.

Si des paquets ont été ajoutés manuellement à l'image (via rpm-ostree), ceux-ci seront évidemment incorporés dans les mises à jour. Plus il y a de paquets ajoutés manuellement à l'image de base, plus les mises à jour seront longues, car nécessitent d'ajouter vos paquets personnalisés à l'image de base.

Remotes



Les remotes sont les "dépôts" depuis lesquels nous pouvons récupérer des images et disponibles sur notre système.

Pour lister les remotes installés :

Code BASH :
ostree remote list


Par défaut on a fedora et fedora-compose.

On pourra, pour un remote lister les refs (références ou branches) disponibles, exemple ici avec le remote fedora :

Code BASH :
ostree remote refs fedora


Voici un extrait :

Code TEXT :
fedora:fedora/40/aarch64/kinoite
fedora:fedora/40/aarch64/sericea
fedora:fedora/40/aarch64/silverblue
fedora:fedora/40/aarch64/testing/kinoite
fedora:fedora/40/aarch64/testing/sericea
fedora:fedora/40/aarch64/testing/silverblue
fedora:fedora/40/aarch64/updates/kinoite
fedora:fedora/40/aarch64/updates/sericea
fedora:fedora/40/aarch64/updates/silverblue
fedora:fedora/40/ppc64le/kinoite
fedora:fedora/40/ppc64le/silverblue
fedora:fedora/40/ppc64le/testing/kinoite
fedora:fedora/40/ppc64le/testing/silverblue
fedora:fedora/40/ppc64le/updates/kinoite
fedora:fedora/40/ppc64le/updates/silverblue
fedora:fedora/40/x86_64/kinoite
fedora:fedora/40/x86_64/onyx
fedora:fedora/40/x86_64/sericea
fedora:fedora/40/x86_64/silverblue
fedora:fedora/40/x86_64/testing/kinoite
fedora:fedora/40/x86_64/testing/onyx
fedora:fedora/40/x86_64/testing/sericea
fedora:fedora/40/x86_64/testing/silverblue
fedora:fedora/40/x86_64/updates/kinoite
fedora:fedora/40/x86_64/updates/onyx
fedora:fedora/40/x86_64/updates/sericea
fedora:fedora/40/x86_64/updates/silverblue
fedora:fedora/rawhide/aarch64/kinoite
fedora:fedora/rawhide/aarch64/sericea
fedora:fedora/rawhide/aarch64/silverblue
fedora:fedora/rawhide/ppc64le/kinoite
fedora:fedora/rawhide/ppc64le/sericea
fedora:fedora/rawhide/ppc64le/silverblue
fedora:fedora/rawhide/x86_64/kinoite
fedora:fedora/rawhide/x86_64/onyx
fedora:fedora/rawhide/x86_64/sericea
fedora:fedora/rawhide/x86_64/silverblue


On notera qu'on a des images depuis la version 27 de fedora, dans plusieurs architectures et pour plusieurs saveurs.


Gestion des logiciels



Installer un logiciel



Pour installer un logiciel dans la base du système, exemple ici avec le logiciel nmon :

Code BASH :
rpm-ostree install nmon


Voici un retour de la console pendant le processus d'installation :

Code TEXT :
==== AUTHENTICATING FOR org.projectatomic.rpmostree1.install-uninstall-packages ====
Authentication is required to install and remove software
Authenticating as: adrien
Password: 
==== AUTHENTICATION COMPLETE ====
Checking out tree 0e015f8... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates rpmfusion-nonfree-steam 
Updating metadata for 'updates'... done
Updating metadata for 'updates-archive'... done
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2024-03-12T11:45:42Z solvables: 3
rpm-md repo 'updates'; generated: 2024-06-07T04:52:11Z solvables: 16886
rpm-md repo 'fedora' (cached); generated: 2024-04-14T18:51:11Z solvables: 74881
rpm-md repo 'updates-archive'; generated: 2024-05-22T01:41:39Z solvables: 13161
Resolving dependencies... done
Will download: 1 package (79,1 Ko)
Downloading from 'fedora'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 2,2 Go (pkgcache branches: 0)
Added:
  nmon-16p-5.fc40.x86_64
Changes queued for next boot. Run "systemctl reboot" to start a reboot


Il est nécessaire de redémarrer pour prendre en compte le nouveau paquet dans la base.
En effet, cela génère une nouvelle image du système, incluant le logiciel nmon.

Si on ne redémarre pas et qu'on installe à nouveau un paquet via rpm-ostree, la nouvelle image prendra en compte l'ensemble des logiciels installés.
Exemple : Si j'ajoute htop, je n'aurai qu'une seule nouvelle image ayant le paquet htop et le paquet nmon installé précédemment.


Suppression de logiciel



Pour supprimer un logiciel qui a été ajouté à la base, exemple acec iftop :

Code BASH :
rpm-ostree uninstall iftop


Par compatibilité, la commande remove fonctionne :

Code BASH :
rpm-ostree remove iftop


Voici un retour de la console pendant le processus de désinstallation :

Code TEXT :
==== AUTHENTICATING FOR org.projectatomic.rpmostree1.install-uninstall-packages ====
Authentication is required to install and remove software
Authenticating as: adrien
Password: 
==== AUTHENTICATION COMPLETE ====
Checking out tree 0e015f8... done
Resolving dependencies... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 262,5 Mo (pkgcache branches: 0)
Removed:
  iftop-1.0-0.33.pre4.fc40.x86_64
Changes queued for next boot. Run "systemctl reboot" to start a reboot
 


Retour à un état précédent avec les rollback



Pour rappel, on peut consulter la liste du commit précédent (et suivant si on n'a pas encore rebooté) avec

Code BASH :
rpm-ostree status


Pour revenir à l'état précédent, on utilisera :

Code BASH :
rpm-ostree rollback


On est évidemment invité à redémarrer.
L'opération est très rapide car l'image précédente était déjà générée. On a juste l'info de ce qui a été fait.


Changer de branche (rebase)



A propos du rebase



Le rebase dans le contexte de Fedora Atomique est un processus qui permet de changer l'état de la base de l'OS à une autre version ou à une autre branche du système. Cela est particulièrement utile pour :
- passer d'une version de Fedora Linux à une autre, par exemple, de Fedora Silverblue 39 à Fedora Silverblue 40
- basculer entre différentes variantes, par exemple de Fedora Silverblue 40 à Fedora Kinoite 40
- tester de nouvelles versions (Passer en testing ou sur Rawhide)

Le rebase fonctionne en téléchargeant une nouvelle image du système d'exploitation et en remplaçant l'image actuelle par la nouvelle. Cela se fait de manière atomique, ce qui signifie que l'opération se fait en une seule transaction complète, garantissant ainsi que le système est toujours dans un état cohérent.

Rebase pour mettre à niveau



Pour mettre à niveau notre système, on vérifiera sur quelle branche on est avec :
Code BASH :
rpm-ostree status


On listera les déploiements disponibles :
Code BASH :
ostree remote refs fedora


Si nous étions sur la Fedora Silverblue 39, on est sur :
Code TEXT :
fedora:fedora/39/x86_64/silverblue


Pour rebaser sur Fedora Silverblue 40 :
Code BASH :
rpm-ostree rebase fedora:fedora/40/x86_64/silverblue


Si ça ne fonctionne pas comme attendu, l'opération de rollback fonctionne évidemment !

Rebase pour changer d'édition



Pour changer d'édition, on listera les déploiements disponibles :
Code BASH :
ostree remote refs fedora


Si nous étions sur la Fedora Silverblue 40, on est sur :
Code TEXT :
fedora:fedora/39/x86_64/silverblue


Pour rebaser sur Fedora Kinoite 40 :
Code BASH :
rpm-ostree rebase fedora:fedora/40/x86_64/kinoite


Si ça ne fonctionne pas comme attendu, l'opération de rollback fonctionne évidemment !

En passant sur un autre environnement de bureau, les paramètres de personnalisation de celui-ci ne seront pas migrés.

Informations sur les personnalisations lors du rebase



A travers ce paragraphe, je tiens à attirer votre attention. En effet, si vous changez de base, votre dossier utilisateur reste le même. Celui-ci contient vos documents mais aussi les configurations des applications et de l'environnement de bureau.

Si on passe de GNOME à KDE, et que notre GNOME était en mode sombre, avec un thème d'icône personnalisé et notre fond d'écran favori, la première arrivée sur KDE (fait par un rebase) se fera sur les paramétrages par défaut de cet environnement de bureau. Un retour sur GNOME pourra avoir des effets de bord sur la personnalisation de celui-ci.

Si on teste une version plus récente, par exemple sur la version de développement Rawhide, on va peut être avoir une version plus récente de l'environnement de bureau et de ses applications, les fichiers de configurations seront migrés vers la nouvelle version de celui-ci. Revenir à la version stable rétrogradera la version de l'environnement de bureau. Certains fichiers de configurations pourront ne pas être lus correctement et donc perdre la personnalisation qu'on avait avant la montée en version.

Troobleshooting



Rawhide : Can't check signature: public key not found



Quand on utilise Rawhide, il peut arriver qu'au moment ou Rawhide se rebranche sur la future version, on ait ce genre de message :

Code TEXT :
error: While pulling fedora/rawhide/x86_64/silverblue: Commit 733af93a08c3d620d5248a063256602b65db0a1f0127b5f579a6ec022c63a9f9: Signature made mer. 17 févr. 2021 07:05:47 using RSA key ID DB4639719867C58F
Can't check signature: public key not found


Il suffit simplement d'importer la nouvelle clé GPG. Elles sont toutes dispo ici : https://src.fedoraproject.org/rpms/fedora-repos/tree/rawhide :

Dans le dernier cas, Fedora Rawhide était la future 35, j'ai donc importé la clé comme ceci :
Code BASH :
cd /etc/pki/rpm-gpg/
wget https://src.fedoraproject.org/rpms/fedora-repos/raw/rawhide/f/RPM-GPG-KEY-fedora-35-primary


On peut relancer les opérations rpm-ostree :)
Cette page a été vue 15490 fois