📖 Préambule
Dans l'écosystème openSUSE — Leap ou Tumbleweed — Zypper est l'outil central de gestion logicielle. Ce guide propose une référence claire et structurée, organisée par usage professionnel et accessible à tous les niveaux.
Objectif
Maîtriser Zypper de manière progressive, du débutant à l'expert, avec des cas pratiques concrets et des commandes vérifiées.
👥 Public visé
🌱
Débutant
Être opérationnel rapidement
Sections : Starter Pack
🌿
Intermédiaire
Comprendre dépôts, priorités, updates
Sections : Concepts & Pratiques
🌳
Expert
Dépannage, migrations, commandes sensibles
Sections : Avancé & Critiques
📚 Comment lire ce guide
| Niveau | Contenu | Recommandation |
|---|
| 🟢 Essentiel | Commandes courantes, exemples | À maîtriser en priorité |
| 🟠 Intermédiaire | Concepts, workflows | Pour approfondir |
| 🔴 Expert | Cas critiques, opérations avancées | Réservé aux confirmés |
❓ Qu'est-ce que Zypper ?
| Élément | Description |
|---|
| Rôle | Gestionnaire de paquets d'openSUSE / SLE |
| Moteur | Basé sur libzypp |
| Forces | Résolution de dépendances, gestion fine des dépôts, stabilité |
| Public | Utilisateurs avancés, admins, power users |
📝 Syntaxe de base
Structure générale
zypper [OPTIONS_GLOBALES] SOUS-COMMANDE [OPTIONS_DE_LA_SOUS-COMMANDE] [ARGUMENTS]
Décomposition pédagogique
| Élément | Rôle | Exemple |
|---|
| OPTIONS_GLOBALES | Options appliquées à toute la commande | -n, -v, --non-interactive |
| SOUS-COMMANDE | L'action principale à exécuter | in, rm, up, dup, se |
| OPTIONS_SOUS-COMMANDE | Options spécifiques à cette action | --no-recommends, --force-resolution |
| ARGUMENTS | Ce sur quoi porte l'action | Nom de paquet, version, pattern |
Exemple complet
| Action | Commande | Explication |
|---|
| Installer un paquet sans recommandations | sudo zypper -v in --no-recommends <package> | -v = global, in = sous-commande, --no-recommends = option, <package> = argument |
Exemples supplémentaires
| Objectif | Commande | Lecture |
|---|
| Mise à jour complète | sudo zypper dup --force-resolution | dup = sous-commande, --force-resolution = option |
| Installer une version précise | sudo zypper in <package>=<version> | argument = nom + version |
| Rechercher un paquet | zypper se <package> | simple sous-commande + argument |
$sudo zypper -v in --no-recommends htop
🏗️ Architecture interne : Zypper + libzypp
Zypper n'agit pas seul : il s'appuie sur libzypp, un moteur très puissant qui gère la résolution des dépendances, les conflits et les transactions.
┌────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Zypper │ ───▶ │ libzypp │ ───▶ │ RPM / Système Linux │
└────────────┘ └──────────────────────┘ └──────────────────────┘
│ │ │
▼ ▼ ▼
Interface CLI Résolution dépendances Installation / suppression
Commandes Conflits / vendor change Transactions atomiques
Priorités dépôts Snapshots (Btrfs)
Rôle des composants
| Composant | Rôle | Importance |
|---|
| Zypper | Interface CLI | Interaction utilisateur |
| libzypp | Moteur de résolution | Décisions intelligentes |
| RPM | Installation réelle | Gestion des fichiers |
| Snapper | Snapshots Btrfs | Rollback système |
📦 Dépôts
Rôle des dépôts : la base de tout
Les dépôts sont les sources de paquets. Leur configuration influence directement la stabilité du système.
┌───────────────┐
│ Dépôt OSS │ prio 99
└───────────────┘
│
┌───────────────┐
│ Dépôt Update │ prio 90
└───────────────┘
│
┌───────────────┐
│ Packman │ prio 70
└───────────────┘
│
┌───────────────┐
│ Dépôts divers │ prio 120
└───────────────┘
Types de dépôts
| Type | Contenu | Notes |
|---|
| OSS / Main | Paquets officiels | Base du système |
| Non-OSS | Paquets propriétaires | Drivers, codecs |
| Update | Correctifs | Toujours activé |
| Packman | Multimédia | Priorité haute |
| Communautaires | KDE, GNOME, Graphics | À utiliser avec prudence |
Structure d'un dépôt
Dépôt
├── Nom : repo-oss
├── URL : https://download.opensuse.org/...
├── Priorité : 99
├── Auto-refresh : Oui
└── Activé : Oui
🔄 6.3 Cycle de vie d'un dépôt
Ajouter (ar)
│
▼
Modifier (mr) ───► Activer / Désactiver
│
▼
Supprimer (rr)
Dépôts officiels vs communautaires
| Type de dépôt | Avantages | Risques |
|---|
| Officiels | Stables, testés, supportés | Aucun majeur |
| Packman | Multimédia complet | Peut remplacer des libs |
| Communautaires | Versions récentes, spécialisées | Conflits possibles |
| Expérimentaux | Logiciels très récents | Instabilité |
⚠️ 6.5 Dépôts sensibles
| Dépôt | Problème potentiel | Recommandation |
|---|
| home:<user> | Paquets non testés | Éviter sur systèmes critiques |
| Dépôts KDE/GNOME | Versions très récentes | Priorité > 100 recommandée |
| Dépôts "Factory" | Instables | Réservés aux experts |
| Dépôts doublons | Conflits de paquets | Ne jamais dupliquer OSS/Update |
Dépôts sensibles
home:<user> — Paquets non testés, à éviter sur systèmes critiques
Dépôts KDE/GNOME — Versions très récentes, priorité > 100 recommandée
Dépôts "Factory" — Instables, réservés aux experts
🏆 6.6 Bonnes pratiques Leap / Tumbleweed
| Distribution | Dépôts recommandés | Dépôts déconseillés |
|---|
| Leap | OSS, Non-OSS, Update, Packman | Dépôts instables, Factory |
| Tumbleweed | OSS, Non-OSS, Update, Packman | Dépôts communautaires trop récents |
| Serveurs | Dépôts officiels uniquement | Packman, home:<user> |
⚖️ Priorités des dépôts
La notion de priorité permet à Zypper de choisir quel paquet il doit privilégier.
Zypper doit installer un paquet :
│
▼
1. Dépôt avec la meilleure priorité
│
▼
2. Version la plus récente
│
▼
3. Fournisseur le plus cohérent
│
▼
4. Résolution des dépendances
│
▼
5. Installation
Règle importante
Priorité basse = Dépôt important
Exemple : Priorité 20 = très prioritaire, Priorité 120 = peu prioritaire
Tableau des niveaux de priorité
| Priorité | Interprétation | Usage |
|---|
| 20–70 | Très haute | Packman, dépôts critiques |
| 99 | Standard | Dépôts officiels |
| >100 | Faible | Dépôts expérimentaux |
Priorités recommandées
| Dépôt | Priorité conseillée | Raison |
|---|
| Packman | 70 | Prioritaire pour codecs |
| Update | 90 | Correctifs importants |
| OSS / Non-OSS | 99 | Base du système |
| Communautaires | >100 | Éviter les conflits |
| Expérimentaux | 120-150 | Risques élevés |
🧩 Patterns / Patches / Products
| Type | Description | Commandes utiles |
|---|
| Pattern | Groupe logique de paquets | zypper se -t pattern |
| Patch | Correctif sécurité/stabilité | zypper lp, zypper patch |
| Product | Composant majeur du système | zypper se -t product |
Product
├── Patterns
│ ├── Paquets
│ └── Paquets
└── Patches
├── Correctifs
└── Mises à jour
🔄 Leap vs Tumbleweed — En 20 secondes
Type : Stable, basée sur SLE
Risques : Faibles
Usage : Production, serveurs
Commande :sudo zypper up
Type : Rolling release
Risques : Dépôts sensibles
Usage : Desktop avancé, dev
Commande :sudo zypper dup
🚀 Starter Pack — Les 15 commandes essentielles
Maîtrisez ces 15 commandes pour être opérationnel rapidement sur openSUSE.
1
sudo zypper ref
Rafraîchir les dépôts
2
sudo zypper up
Mise à jour standard (Leap)
3
sudo zypper dup
Mise à niveau complète (Tumbleweed)
4
sudo zypper in <pkg>
Installer un paquet
5
sudo zypper rm <pkg>
Supprimer un paquet
6
sudo zypper in -f <pkg>
Réinstaller un paquet
7
zypper se <motif>
Rechercher un paquet
8
zypper info <pkg>
Informations détaillées
9
zypper wp <capacité>
Quel paquet fournit un fichier ?
10
zypper lr -u
Lister les dépôts + URL
11
sudo zypper ar <url> <nom>
Ajouter un dépôt
12
sudo zypper rr <nom>
Supprimer un dépôt
13
sudo zypper mr -p <prio> <nom>
Modifier la priorité
14
sudo zypper clean
Nettoyer le cache
15
zypper ps
Processus bloquants
📦 Gestion des dépôts (commandes)
Inspecter les dépôts
$zypper lr
$zypper lr -u
$zypper lr -p
$zypper lr -d
Ajouter, supprimer, modifier
$sudo zypper ar https://url graphics
$sudo zypper rr graphics
$sudo zypper mr -p 70 repo-oss
$sudo zypper mr -d repo-debug
$sudo zypper mr -e repo-debug
📥 Installation / Mise à jour / Suppression
zypper up vs zypper dup
| Critère | zypper up | zypper dup |
|---|
| Change de fournisseur | ❌ Non | ✔️ Oui |
| Rétrograde un paquet | ❌ Non | ✔️ Oui |
| Suit strictement les dépôts | ❌ Non | ✔️ Oui |
| Usage recommandé | Leap | Tumbleweed |
| Risque | Faible | Moyen |
openSUSE Leap
│
├──▶ zypper up (normal)
└──▶ zypper dup (migration / réparation)
openSUSE Tumbleweed
│
└──▶ zypper dup (toujours)
Installation et suppression
$sudo zypper in htop
$sudo zypper in git curl vim
$sudo zypper in vim=9.0
$sudo zypper in -f bash
$sudo zypper rm htop
$sudo zypper rm docker
zypper in
│
▼
Recherche dans les dépôts
│
▼
Sélection du meilleur paquet
│
▼
Installation + dépendances
Suppression de paquets
| Action | Commande | Exemple | Notes |
|---|
| Supprimer un paquet | sudo zypper rm <pkg> | sudo zypper rm htop | Suppression standard |
| Supprimer plusieurs paquets | sudo zypper rm <pkg1> <pkg2> | sudo zypper rm nano vim | Pratique |
| Simuler avant suppression | zypper rm -D <pkg> | zypper rm -D firefox | Mode simulation |
| Supprimer un pattern | sudo zypper rm -t pattern <nom> | sudo zypper rm -t pattern kde | Supprime un ensemble |
zypper rm
│
▼
Analyse des dépendances
│
▼
Suppression sécurisée
Gestion des versions et verrous
$sudo zypper al kernel-default
$zypper ll
$sudo zypper rl kernel-default
🔐 3.4 Gérer les versions et les fournisseurs
| Action | Commande | Exemple | Notes |
|---|
| Installer une version | sudo zypper in pkg=ver | sudo zypper in ffmpeg=5.1 | Downgrade possible |
| Verrouiller un paquet | sudo zypper al <pkg> | sudo zypper al kernel-default | Empêche les mises à jour |
| Déverrouiller | sudo zypper rl <pkg> | sudo zypper rl kernel-default | Retire le verrou |
| Voir le fournisseur | zypper info <pkg> | zypper info vlc | Indique Packman ou OSS |
🧹 3.5 Nettoyage automatique
| Action | Commande | Exemple | Notes |
|---|
| Nettoyer le cache | sudo zypper clean | sudo zypper clean | Supprime les fichiers téléchargés |
| Nettoyer tout | sudo zypper clean -a | sudo zypper clean -a | Cache + métadonnées |
| Supprimer les orphelins | sudo zypper rm | sudo zypper rm | Dépendances inutiles |
| Voir les orphelins | zypper packages --orphaned | zypper packages --orphaned | Paquets sans dépôt |
| Nettoyage complet | Sytème automatisé | Sytème automatisé | Gestion automatique des noyaux |
zypper clean
│
▼
Suppression du cache
│
▼
Système plus léger
🛠️ Maintenance & Diagnostic
🔍 4.1 Détecter les paquets cassés
$zypper ve
$zypper packages --orphaned
$zypper verify
$zypper ps
zypper ve
│
├── Dépendances manquantes ?
├── Paquets cassés ?
└── Solutions proposées
⚔️ 4.2 Résoudre les conflits
| Conflit | Cause fréquente | Solution recommandée |
|---|
| Conflit de version | Dépôts incohérents | Ajuster priorités |
| Conflit de fournisseur | Packman vs OSS | Forcer vendor / revoir dépôts |
| Dépendance manquante | Paquet supprimé | Installer dépendance |
| Paquet verrouillé | zypper al actif | Déverrouiller |
Conflit détecté
│
▼
Zypper propose :
1. Garder ancienne version
2. Changer de fournisseur
3. Supprimer un paquet
│
▼
Choix utilisateur
⏸️ 4.3 Identifier les processus bloquants
| Action | Commande | Description |
|---|
| Voir les processus bloquants | zypper ps | Services utilisant d'anciennes bibliothèques |
| Analyse avancée | lsof | Fichiers ouverts (hors Zypper) |
zypper ps
│
├── Services à redémarrer
├── Processus utilisant anciennes libs
└── Conseils de redémarrage
🔬 4.4 Vérifier les dépendances et la cohérence
| Action | Commande | Description |
|---|
| Vérifier dépendances | zypper ve | Détecte les incohérences |
| Vérifier fournisseur | zypper info <pkg> | Indique le vendor |
| Lister vendors | zypper se -s <pkg> | Compare les sources |
| Voir doublons | zypper se --duplicates | Détecte les paquets dupliqués |
Analyse cohérence
│
├── Versions cohérentes ?
├── Fournisseurs homogènes ?
├── Paquets dupliqués ?
└── Dépendances satisfaites ?
🗑️ 4.5 Nettoyage avancé
Nettoyage avancé
$sudo zypper clean
$sudo zypper clean -a
$sudo zypper rm
⚡ Commandes avancées (Expert)
Changer de fournisseur (dup --from)
$sudo zypper dup --from packman
$zypper se -s vlc
Recherche avancée
$zypper se -s ffmpeg
$zypper se -si 'vlc*'
$zypper se -i python
$zypper search --provides --match-exact libxyz.so
Patterns / métadonnées
│
├── Paquets obligatoires (installés)
└── Paquets recommandés (manquants)
│
▼
sudo zypper install-new-recommends
Installer les sources
$sudo zypper si kernel-default
$sudo zypper si -d ffmpeg
🔍 5.4 Vérification avancée (verify)
| Action | Commande | Description |
|---|
| Vérifier cohérence complète | zypper verify | Analyse complète du système |
| Vérifier dépendances (simple) | zypper ve | Analyse rapide |
zypper verify
│
├── Dépendances cassées ?
├── Fournisseurs incohérents ?
├── Versions incompatibles ?
└── Solutions proposées
🩹 5.5 Vérifier les patches (patch-check)
| Action | Commande | Description |
|---|
| Voir les patches disponibles | zypper lp | Liste les patches |
| Vérifier sans installer | zypper patch-check | Analyse uniquement |
| Installer les patches | sudo zypper patch | Applique les correctifs |
zypper patch-check
│
├── Patches sécurité ?
├── Patches recommandés ?
└── Patches optionnels ?
⚖️ 5.7 Gestion fine des priorités
| Action | Commande | Exemple |
|---|
| Modifier priorité | sudo zypper mr -p <prio> <repo> | sudo zypper mr -p 70 packman |
| Voir priorités | zypper lr -p | zypper lr -p |
| Désactiver dépôt | sudo zypper mr -d <repo> | sudo zypper mr -d repo-debug |
Priorité basse = dépôt important
Priorité haute = dépôt secondaire
Exemple :
Packman → 70
OSS → 99
Expérimental → 120
⚠️ Commandes dangereuses — Zone rouge
Avertissement
Certaines commandes Zypper sont extrêmement puissantes et peuvent casser un système si elles sont mal utilisées. Cette section liste les commandes à manier avec une extrême prudence.
💡 6.1 Pourquoi ces commandes sont dangereuses
Commandes dangereuses
│
├── Changent de fournisseur
├── Rétrogradent des paquets
├── Forcent des résolutions incohérentes
├── Suppriment des dépendances critiques
└── Peuvent casser le système
Liste des commandes dangereuses
| Commande | Danger | Risque |
|---|
| sudo zypper dup (sur Leap) | Rétrograde, change vendor | 🔥🔥🔥 |
| sudo zypper dup --from <repo> | Bascule massive de vendor | 🔥🔥🔥 |
| sudo zypper dup --solver-focus=update --force-resolution | Résolutions incohérentes | 🔥🔥🔥🔥 |
| sudo zypper rm <pkg> | Suppression de libs critiques | 🔥🔥 |
| sudo zypper rm | Supprime dépendances orphelines | 🔥 |
La commande la plus dangereuse
$sudo zypper dup --solver-focus=update --force-resolution --details
Pourquoi c'est dangereux
- Ignore les protections de libzypp
- Peut casser des dépendances critiques
- Peut rétrograder des paquets essentiels (kernel, systemd, glibc)
- Mélange les vendors (OSS ↔ Packman ↔ home:user)
- Très difficile à réparer (souvent nécessite rollback)
🗑️ 6.4 Suppression de paquets critiques
| Commande | Danger | Exemple |
|---|
| sudo zypper rm <pkg> | Peut supprimer des dépendances vitales | sudo zypper rm systemd |
| sudo zypper rm | Supprime dépendances orphelines | À vérifier avant exécution |
| sudo zypper rm -t pattern <pattern> | Supprime des ensembles entiers | sudo zypper rm -t pattern kde |
Bonnes pratiques avant une commande dangereuse
| Vérification | Commande | Pourquoi |
|---|
| Vérifier vendors | zypper se -si <pkg> | Évite les conflits |
| Vérifier versions | zypper se -s <pkg> | Compare OSS / Packman |
| Vérifier dépendances | zypper ve | Détecte incohérences |
| Vérifier dépôts | zypper lr -u | Dépôts cassés ? |
| Faire un snapshot | sudo snapper create | Rollback possible |
🏆 Top 11 commandes avancées Zypper
1
sudo zypper dup --from <repo>
Vendor switch propre (Packman ↔ OSS)
🔥2
sudo zypper dup --solver-focus=update --force-resolution
Récupération système cassé
🔥🔥🔥3
sudo zypper in --no-recommends <pkg>
Installation minimale
🟢4
sudo zypper in --oldpackage <pkg>=<ver>
Downgrade propre
🟠5
zypper search --provides --match-exact <cap>
Trouver le paquet fournisseur
🟢6
zypper ve
Vérifier dépendances / cohérence
🟠7
zypper --dry-run rm <pkg>
Simulation avant suppression
🟢8
sudo zypper al <pkg>
Verrouiller un paquet critique
🟠9
zypper search --requires <pkg>
Voir quels paquets dépendent d'un autre
🟢10
sudo zypper si -d <srcpkg>
Installer dépendances de build
🟢11
zypper info --provides --requires --recommends <pkg>
Audit complet d'un paquet
🟢🎯 Cas pratiques avancés (format GPS)
Problème
Multimédia cassé / vendors mélangés
Cause
Paquets OSS au lieu de Packman
Commande
sudo zypper dup --from packman
Résultat
Vendors réalignés
$sudo zypper dup --from packman
Problème
Snapshot incohérent
Commande
dup --force-resolution
Résultat
Tentative de récupération
$sudo zypper dup --solver-focus=update --force-resolution
Problème
Trop de dépendances
Cause
Recommandations automatiques
Résultat
Installation légère
$sudo zypper in --no-recommends nginx
Problème
Version récente instable
Résultat
Version stable restaurée
$sudo zypper in --oldpackage ffmpeg=5.1
Problème
"libXYZ.so not found"
Commande
search --provides
$zypper search --provides --match-exact libXYZ.so
Problème
Dépendances cassées
Cause
Paquets incohérents / conflits
Résultat
État du système vérifié
Problème
Risque de suppression critique
Cause
Dépendances inconnues
Résultat
Aperçu sans risque
$zypper --dry-run rm firefox
Problème
Mise à jour dangereuse
Cause
Nouvelle version instable
$sudo zypper al kernel-default
Problème
Suppression risquée
Commande
search --requires
Résultat
Dépendants identifiés
$zypper search --requires openssl
Problème
Compilation impossible
Cause
Paquets de développement manquants
Résultat
Environnement de build prêt
$sudo zypper si -d ffmpeg
📊 Comparaison ZypperRésolution de dépendances
| Action | Zypper | apt | dnf | pacman |
|---|
| Vérifier dépendances | zypper ve | apt-get check | dnf repoquery --requires | pactree |
| Résoudre conflits | sudo zypper dup --force-resolution | — | sudo dnf distro-sync | — |
| Voir dépendances | zypper info --requires | apt-cache depends | dnf repoquery --requires | pactree |
Gestion des dépôts
| Action | Zypper | apt | dnf | pacman |
|---|
| Ajouter un dépôt | sudo zypper ar | add-apt-repository | sudo dnf config-manager --add-repo | Éditer pacman.conf |
| Modifier priorité | sudo zypper mr -p | — | — | — |
| Forcer fournisseur | sudo zypper dup --from | — | sudo dnf swap | — |
Rolling release
| Action | Zypper (TW) | apt (sid) | dnf (Rawhide) | pacman |
|---|
| Mise à jour complète | sudo zypper dup | sudo apt full-upgrade | sudo dnf upgrade --refresh | sudo pacman -Syu |
| Récupération | sudo zypper dup --force-resolution | sudo apt --fix-broken install | sudo dnf distro-sync | — |
| Snapshots | snapper list | — | — | — |
Cohérence et puissance des commandes
| Action | Zypper | apt | dnf | pacman |
|---|
| Installer un paquet | sudo zypper in <pkg> | sudo apt install <pkg> | sudo dnf install <pkg> | sudo pacman -S <pkg> |
| Supprimer un paquet | sudo zypper rm <pkg> | sudo apt remove <pkg> | sudo dnf remove <pkg> | sudo pacman -R <pkg> |
| Installer une version spécifique | sudo zypper in <pkg>=<ver> | sudo apt install <pkg>=<ver> | sudo dnf install <pkg>-<ver> | sudo pacman -U <pkg>-<ver>.pkg.tar.zst |
| Installer les sources | sudo zypper si <srcpkg> | apt source <pkg> | sudo dnf download --source <pkg> | — (pas d'équivalent direct) |
| Rechercher un paquet | zypper se <pkg> | apt search <pkg> | dnf search <pkg> | pacman -Ss <pkg> |
| Trouver qui fournit une capability | zypper search --provides --match-exact <cap> | apt-file search <cap> | dnf provides <cap> | pacman -F <cap> |
🔗 Références complètes
Documentation officielle openSUSE
Pages man (sources locales)
| Commande | Contenu |
|---|
| man zypper | Commandes, options globales |
| man zypper-install | Installation, dépendances |
| man zypper-dup | Dist-upgrade, vendor switch |
| man zypper-repos | Gestion des dépôts |
| man zypper-search | Recherche avancée |
| man rpm | Scripts, fichiers installés |
$zypper help
$zypper help install
$zypper help dup
$zypper help remove
$zypper help search
$zypper help up
$zypper help lr
📖 Lectures recommandées SafeITExperts
Pour approfondir vos connaissances sur Linux et openSUSE, voici une sélection d'articles complémentaires publiés sur SafeITExperts.
🎯 Conclusion
Zypper est un outil exigeant, mais il récompense celles et ceux qui prennent le temps de le comprendre. Avec une maîtrise solide des dépôts, des priorités et du solver, l'administration d'openSUSE devient plus prévisible, plus cohérente et plus sûre.
Points clés à retenir
- Leap $\rightarrow$ sudo zypper up | Tumbleweed $\rightarrow$ sudo zypper dup
- Toujours vérifier avec zypper ve avant une opération critique
- Utiliser --dry-run pour simuler
- Gérer les priorités pour éviter les conflits de vendors
- Faire des snapshots avec Snapper avant les commandes dangereuses
Ce guide n'a pas vocation à tout dire : il ouvre la voie. La suite appartient à votre pratique, à votre curiosité et à votre capacité de faire de Zypper un allié quotidien.