SafeITExperts

SafeITExperts

Your expert guide to cybersecurity and digital privacy. Security hardening for all platforms : Windows, macOS, Linux, and Android. Solutions aligned standards : NIST and ANSSI for comprehensive digital protection.


Mastering Zypper: Complete openSUSE Package Management 2025

Publié par Marc sur 4 Septembre 2025, 12:55pm

Catégories : #Operating System, #openSUSE

Mastering Zypper: Complete openSUSE Package Management 2025
Zypper openSUSE: Complete Commands Guide and Tutorial 2025 | SafeITExperts
Dark mode
Search
Sections
13
Commands
50+
Menu

Zypper openSUSE: Complete Guide 2025

🚀 From Beginner to Expert — Everything you need to know about the openSUSE package manager
2025Updated: 02/20/2026 Read: 45 min2 Parts
🦎 Zypper🐧 openSUSE📦 RPM🔄 Tumbleweed🛡️ Leap⚙️ libzypp
1
Zypper Global Overview

📖 Preamble

In the openSUSE ecosystem — Leap or Tumbleweed — Zypper is the central tool for software management. This guide provides a clear and structured reference, organized by professional use and accessible to all levels.

Objective

Master Zypper progressively, from beginner to expert, with concrete practical cases and verified commands.

👥 Target audience

🌱
Beginner
Be operational quickly
Sections: Starter Pack
🌿
Intermediate
Understand repositories, priorities, updates
Sections: Concepts & Practices
🌳
Expert
Troubleshooting, migrations, sensitive commands
Sections: Advanced & Critical

📚 How to read this guide

LevelContentRecommendation
🟢 EssentialCommon commands, examplesMaster first
🟠 IntermediateConcepts, workflowsTo deepen
🔴 ExpertCritical cases, advanced operationsFor experienced users only

❓ What is Zypper?

ElementDescription
RolePackage manager for openSUSE / SLE
EngineBased on libzypp
StrengthsDependency resolution, fine repository management, stability
AudienceAdvanced users, admins, power users

📝 Basic syntax

General structure

Zypper syntax
zypper [GLOBAL_OPTIONS] SUBCOMMAND [SUBCOMMAND_OPTIONS] [ARGUMENTS]

Pedagogical breakdown

ElementRoleExample
GLOBAL_OPTIONSOptions applied to the whole command-n, -v, --non-interactive
SUBCOMMANDThe main action to executein, rm, up, dup, se
SUBCOMMAND_OPTIONSOptions specific to that action--no-recommends, --force-resolution
ARGUMENTSWhat the action applies toPackage name, version, pattern

Complete example

ActionCommandExplanation
Install a package without recommendationszypper -v in --no-recommends <package>-v = global, in = subcommand, --no-recommends = option, <package> = argument

Additional examples

ObjectiveCommandReading
Full upgradezypper dup --force-resolutiondup = subcommand, --force-resolution = option
Install a specific versionzypper in <package>=<version>argument = name + version
Search for a packagezypper se <package>simple subcommand + argument
Commented example
# Install without recommendations, verbose mode
$zypper -v in --no-recommends htop
# -v = global option (verbose)
# in = subcommand (install)
# --no-recommends = subcommand option
# htop = argument (package to install)

🏗️ Internal architecture: Zypper + libzypp

Zypper does not act alone: it relies on libzypp, a very powerful engine that handles dependency resolution, conflicts and transactions.

┌────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Zypper │ ───▶ │ libzypp │ ───▶ │ RPM / Linux System │
└────────────┘ └──────────────────────┘ └──────────────────────┘
 │ │ │
 ▼ ▼ ▼
 CLI interface Dependency resolution Installation / removal
 Commands Conflicts / vendor change Atomic transactions
 Repository priorities Snapshots (Btrfs)

Component roles

ComponentRoleImportance
ZypperCLI interfaceUser interaction
libzyppResolution engineIntelligent decisions
RPMActual installationFile management
SnapperBtrfs snapshotsSystem rollback

📦 Repositories

Role of repositories: the foundation of everything

Repositories are the sources of packages. Their configuration directly influences system stability.

 ┌───────────────┐
 │ OSS repo │ prio 99
 └───────────────┘
 │
 ┌───────────────┐
 │ Update repo │ prio 90
 └───────────────┘
 │
 ┌───────────────┐
 │ Packman │ prio 70
 └───────────────┘
 │
 ┌───────────────┐
 │ Misc repos │ prio 120
 └───────────────┘

Repository types

TypeContentNotes
OSS / MainOfficial packagesSystem base
Non-OSSProprietary packagesDrivers, codecs
UpdateFixesAlways enabled
PackmanMultimediaHigh priority
CommunityKDE, GNOME, GraphicsUse with caution

Repository structure

Repository
 ├── Name : repo-oss
 ├── URL : https://download.opensuse.org/...
 ├── Priority : 99
 ├── Auto-refresh : Yes
 └── Enabled : Yes

🔄 Repository lifecycle

Add (ar)
 │
 ▼
Modify (mr) ───► Enable / Disable
 │
 ▼
Remove (rr)

Official vs community repositories

Repository typeAdvantagesRisks
OfficialStable, tested, supportedNone major
PackmanComplete multimediaMay replace libs
CommunityRecent versions, specializedPossible conflicts
ExperimentalVery recent softwareInstability

⚠️ Sensitive repositories

RepositoryPotential problemRecommendation
home:<user>Untested packagesAvoid on critical systems
KDE/GNOME reposVery recent versionsPriority > 100 recommended
"Factory" reposUnstableExperts only
Duplicate reposPackage conflictsNever duplicate OSS/Update
Sensitive repositories

home:<user> — Untested packages, avoid on critical systems
KDE/GNOME repos — Very recent versions, priority > 100 recommended
"Factory" repos — Unstable, experts only

🏆 Best practices Leap / Tumbleweed

DistributionRecommended reposDiscouraged repos
LeapOSS, Non-OSS, Update, PackmanUnstable repos, Factory
TumbleweedOSS, Non-OSS, Update, PackmanToo recent community repos
ServersOfficial repos onlyPackman, home:<user>

⚖️ Repository priorities

The priority concept allows Zypper to choose which package to favor.

Zypper needs to install a package:
 │
 ▼
1. Repository with best priority
 │
 ▼
2. Most recent version
 │
 ▼
3. Most consistent vendor
 │
 ▼
4. Dependency resolution
 │
 ▼
5. Installation
Important rule

Low priority = Important repository
Example: Priority 20 = very high priority, Priority 120 = low priority

Priority levels table

PriorityInterpretationUsage
20–70Very highPackman, critical repos
99StandardOfficial repos
>100LowExperimental repos

Recommended priorities

RepositoryRecommended priorityReason
Packman70Priority for codecs
Update90Important fixes
OSS / Non-OSS99System base
Community>100Avoid conflicts
Experimental120-150High risks

🧩 Patterns / Patches / Products

TypeDescriptionUseful commands
PatternLogical group of packageszypper se -t pattern
PatchSecurity/stability fixzypper lp, zypper patch
ProductMajor system componentzypper se -t product
Product
 ├── Patterns
 │ ├── Packages
 │ └── Packages
 └── Patches
 ├── Fixes
 └── Updates

🔄 Leap vs Tumbleweed — In 20 seconds

🛡️
Leap
Stable distribution

Type: Stable, based on SLE

Risks: Low

Usage: Production, servers

Command:zypper up

🚀
Tumbleweed
Rolling release

Type: Rolling release

Risks: Sensitive repos

Usage: Advanced desktop, dev

Command:zypper dup

2
Zypper Commands

🚀 Starter Pack — The 15 essential commands

Master these 15 commands to be quickly operational on openSUSE.

1
zypper ref
Refresh repositories
2
zypper up
Standard update (Leap)
3
zypper dup
Complete upgrade (Tumbleweed)
4
zypper in <pkg>
Install a package
5
zypper rm <pkg>
Remove a package
6
zypper in -f <pkg>
Reinstall a package
7
zypper se <pattern>
Search for a package
8
zypper info <pkg>
Detailed information
9
zypper wp <capability>
Which package provides a file?
10
zypper lr -u
List repositories + URL
11
zypper ar <url> <name>
Add a repository
12
zypper rr <name>
Remove a repository
13
zypper mr -p <prio> <name>
Modify priority
14
zypper clean
Clean cache
15
zypper ps
Blocking processes

📦 Repository management (commands)

Inspect repositories

Inspect repositories
# List repositories
$zypper lr
# See details + URL
$zypper lr -u
# See priorities
$zypper lr -p
# Full details
$zypper lr -d

Add, remove, modify

Repository management
# Add a repository
$zypper ar https://url graphics
# Remove a repository
$zypper rr graphics
# Modify priority
$zypper mr -p 70 repo-oss
# Disable a repository
$zypper mr -d repo-debug
# Re-enable a repository
$zypper mr -e repo-debug

📥 Installation / Update / Removal

zypper up vs zypper dup

Criteriazypper upzypper dup
Changes vendor❌ No✔️ Yes
Downgrades a package❌ No✔️ Yes
Strictly follows repositories❌ No✔️ Yes
Recommended usageLeapTumbleweed
RiskLowMedium
 openSUSE Leap
 │
 ├──▶ zypper up (normal)
 └──▶ zypper dup (migration / repair)

 openSUSE Tumbleweed
 │
 └──▶ zypper dup (always)

Installation and removal

Installation / Removal
# Install a package
$zypper in htop
# Install multiple packages
$zypper in git curl vim
# Install a specific version
$zypper in vim=9.0
# Reinstall a package
$zypper in -f bash
# Remove a package
$zypper rm htop
# Remove with orphaned dependencies
$zypper rm -u docker
zypper in 
 │
 ▼
Search in repositories
 │
 ▼
Select best package
 │
 ▼
Install + dependencies

Package removal

ActionCommandExampleNotes
Remove a packagezypper rm <pkg>zypper rm htopStandard removal
Remove multiple packageszypper rm <pkg1> <pkg2>zypper rm nano vimPractical
Simulate before removalzypper rm -D <pkg>zypper rm -D firefoxSimulation mode
Remove a patternzypper rm -t pattern <name>zypper rm -t pattern kdeRemoves a set
zypper rm 
 │
 ▼
Dependency analysis
 │
 ▼
Safe removal

Version and lock management

Locks and versions
# Lock a package
$zypper al kernel-default
# List locks
$zypper ll
# Unlock
$zypper rl kernel-default

🔐 Manage versions and vendors

ActionCommandExampleNotes
Install a versionzypper in pkg=verzypper in ffmpeg=5.1Downgrade possible
Lock a packagezypper al <pkg>zypper al kernel-defaultPrevents updates
Unlockzypper rl <pkg>zypper rl kernel-defaultRemoves lock
See vendorzypper info <pkg>zypper info vlcShows Packman or OSS

🧹 Automatic cleanup

ActionCommandExampleNotes
Clean cachezypper cleanzypper cleanDeletes downloaded files
Clean everythingzypper clean -azypper clean -aCache + metadata
Remove orphanszypper rm -uzypper rm -uUnneeded dependencies
See orphanszypper packages --orphanedzypper packages --orphanedPackages without repo
Full cleanupzypper purge-kernelszypper purge-kernelsRemove old kernels
zypper clean
 │
 ▼
Delete cache
 │
 ▼
Lighter system

🛠️ Maintenance & Diagnosis

🔍 Detect broken packages

Diagnosis
# Verify integrity
$zypper ve
# See orphaned packages
$zypper packages --orphaned
# Check inconsistencies
$zypper verify
# Blocking processes
$zypper ps
zypper ve
 │
 ├── Missing dependencies ?
 ├── Broken packages ?
 └── Proposed solutions

⚔️ Resolve conflicts

ConflictCommon causeRecommended solution
Version conflictInconsistent reposAdjust priorities
Vendor conflictPackman vs OSSForce vendor / review repos
Missing dependencyPackage removedInstall dependency
Locked packagezypper al activeUnlock
Conflict detected
 │
 ▼
Zypper proposes:
 1. Keep old version
 2. Change vendor
 3. Remove a package
 │
 ▼
User choice

⏸️ Identify blocking processes

ActionCommandDescription
See blocking processeszypper psServices using old libraries
Advanced analysislsofOpen files (outside Zypper)
zypper ps
 │
 ├── Services to restart
 ├── Processes using old libs
 └── Restart advice

🔬 Check dependencies and consistency

ActionCommandDescription
Check dependencieszypper veDetects inconsistencies
Check vendorzypper info <pkg>Shows vendor
List vendorszypper se -s <pkg>Compare sources
See duplicateszypper se --duplicatesDetects duplicate packages
Consistency analysis
 │
 ├── Versions consistent ?
 ├── Vendors homogeneous ?
 ├── Duplicate packages ?
 └── Dependencies satisfied ?

🗑️ Advanced cleanup

Advanced cleanup

Cleanup
# Clean cache
$zypper clean
# Clean everything (cache + metadata)
$zypper clean -a
# Remove orphans
$zypper rm -u
# Purge old kernels
$zypper purge-kernels

⚡ Advanced commands (Expert)

Change vendor (dup --from)

Vendor switch
# Massive switch OSS → Packman
$sudo zypper dup --from packman
# See available versions
$zypper se -s vlc

Advanced search

Advanced search
# See all versions + vendors
$zypper se -s ffmpeg
# See installed + detailed info
$zypper se -si 'vlc*'
# See installed packages
$zypper se -i python
# Find who provides a capability
$zypper search --provides --match-exact libxyz.so
Patterns / metadata
 │
 ├── Required packages (installed)
 └── Recommended packages (missing)
 │
 ▼
 zypper install-new-recommends

Install sources

Sources
# Install sources
$zypper si kernel-default
# Install build dependencies
$zypper si -d ffmpeg

🔍 Advanced verification (verify)

ActionCommandDescription
Verify full consistencyzypper verifyFull system analysis
Quick dependency checkzypper veQuick analysis
zypper verify
 │
 ├── Broken dependencies ?
 ├── Inconsistent vendors ?
 ├── Incompatible versions ?
 └── Proposed solutions

🩹 Check patches (patch-check)

ActionCommandDescription
See available patcheszypper lpList patches
Check without installingzypper patch-checkAnalysis only
Install patcheszypper patchApply fixes
zypper patch-check
 │
 ├── Security patches ?
 ├── Recommended patches ?
 └── Optional patches ?

⚖️ Fine priority management

ActionCommandExample
Modify priorityzypper mr -p <prio> <repo>zypper mr -p 70 packman
See prioritieszypper lr -pzypper lr -p
Disable repositoryzypper mr -d <repo>zypper mr -d repo-debug
Low priority = important repository
High priority = secondary repository

Example:
Packman → 70
OSS → 99
Experimental → 120

⚠️ Dangerous commands — Red zone

Warning

Some Zypper commands are extremely powerful and can break a system if misused. This section lists commands to handle with extreme caution.

💡 Why these commands are dangerous

Dangerous commands
 │
 ├── Change vendor
 ├── Downgrade packages
 ├── Force inconsistent resolutions
 ├── Remove critical dependencies
 └── Can break the system

List of dangerous commands

CommandDangerRisk
zypper dup (on Leap)Downgrades, changes vendor🔥🔥🔥
zypper dup --from <repo>Massive vendor switch🔥🔥🔥
zypper dup --solver-focus=update --force-resolutionInconsistent resolutions🔥🔥🔥🔥
zypper rm <pkg>Removal of critical libs🔥🔥
zypper rm -uRemoves orphaned dependencies🔥

The most dangerous command

⚠️ EXTREMELY DANGEROUS
# Last resort only !
$sudo zypper dup --solver-focus=update --force-resolution --details
Why it's dangerous
  • Ignores libzypp protections
  • Can break critical dependencies
  • Can downgrade essential packages (kernel, systemd, glibc)
  • Mixes vendors (OSS ↔ Packman ↔ home:user)
  • Very hard to repair (often requires rollback)

🗑️ Removing critical packages

CommandDangerExample
zypper rm <pkg>May remove vital dependencieszypper rm systemd
zypper rm -uRemoves orphaned dependenciesCheck before execution
zypper rm -t pattern <pattern>Removes entire setszypper rm -t pattern kde

Best practices before a dangerous command

CheckCommandWhy
Check vendorszypper se -si <pkg>Avoid conflicts
Check versionszypper se -s <pkg>Compare OSS / Packman
Check dependencieszypper veDetect inconsistencies
Check repositorieszypper lr -uBroken repos?
Take a snapshotsnapper createRollback possible

🏆 Top 11 advanced Zypper commands

1
sudo zypper dup --from <repo>
Clean vendor switch (Packman ↔ OSS)
🔥
2
sudo zypper dup --solver-focus=update --force-resolution
Recover broken system
🔥🔥🔥
3
zypper in --no-recommends <pkg>
Minimal installation
🟢
4
zypper in --oldpackage <pkg>=<ver>
Clean downgrade
🟠
5
zypper search --provides --match-exact <cap>
Find providing package
🟢
6
zypper ve
Verify dependencies / consistency
🟠
7
zypper --dry-run rm <pkg>
Simulation before removal
🟢
8
zypper al <pkg>
Lock a critical package
🟠
9
zypper search --requires <pkg>
See which packages depend on another
🟢
10
zypper si -d <srcpkg>
Install build dependencies
🟢
11
zypper info --provides --requires --recommends <pkg>
Full package audit
🟢

🎯 Advanced practical cases (GPS format)

A1
Complete vendor switch
Problem
Multimedia broken / vendors mixed
Cause
OSS packages instead of Packman
Command
zypper dup --from packman
Result
Vendors realigned
Solution
$sudo zypper dup --from packman
A2
Recover a broken Tumbleweed system
Problem
Inconsistent snapshot
Cause
Solver conflicts
Command
dup --force-resolution
Result
Attempt recovery
Solution
$sudo zypper dup --solver-focus=update --force-resolution
A3
Minimal installation
Problem
Too many dependencies
Cause
Automatic recommendations
Command
--no-recommends
Result
Lightweight installation
Solution
$zypper in --no-recommends nginx
A4
Clean downgrade
Problem
Recent version unstable
Cause
Broken update
Command
--oldpackage
Result
Stable version restored
Solution
$zypper in --oldpackage ffmpeg=5.1
A5
Find the package that provides a capability
Problem
"libXYZ.so not found"
Cause
Unknown capability
Command
search --provides
Result
Package identified
Solution
$zypper search --provides --match-exact libXYZ.so
A6
Check system consistency
Problem
Broken dependencies
Cause
Inconsistent packages / conflicts
Command
zypper ve
Result
System state verified
Solution
$zypper ve
A7
Simulation before removal
Problem
Risk of critical removal
Cause
Unknown dependencies
Command
--dry-run rm
Result
Preview without risk
Solution
$zypper --dry-run rm firefox
A8
Lock a critical package
Problem
Dangerous update
Cause
New unstable version
Command
zypper al
Result
Package protected
Solution
$zypper al kernel-default
A9
See who depends on a package
Problem
Risky removal
Cause
Unknown impact
Command
search --requires
Result
Dependents identified
Solution
$zypper search --requires openssl
A10
Install build dependencies
Problem
Compilation impossible
Cause
Missing development packages
Command
si -d
Result
Build environment ready
Solution
$zypper si -d ffmpeg

📊 Comparison Zypper vs apt vs dnf vs pacman

Dependency resolution

ActionZypperaptdnfpacman
Check dependencieszypper veapt-get checkdnf repoquery --requirespactree
Resolve conflictszypper dup --force-resolutiondnf distro-sync
See dependencieszypper info --requiresapt-cache dependsdnf repoquery --requirespactree

Repository management

ActionZypperaptdnfpacman
Add a repositoryzypper aradd-apt-repositorydnf config-manager --add-repoEdit pacman.conf
Modify priorityzypper mr -p
Force vendorzypper dup --fromdnf swap

Rolling release

ActionZypper (TW)apt (sid)dnf (Rawhide)pacman
Full upgradezypper dupapt full-upgradednf upgrade --refreshpacman -Syu
Recoveryzypper dup --force-resolutionapt --fix-brokendnf distro-sync
Snapshotssnapper list

Command consistency and power

ActionZypperaptdnfpacman
Install a packagezypper in <pkg>apt install <pkg>dnf install <pkg>pacman -S <pkg>
Remove a packagezypper rm <pkg>apt remove <pkg>dnf remove <pkg>pacman -R <pkg>
Install a specific versionzypper in <pkg>=<ver>apt install <pkg>=<ver>dnf install <pkg>-<ver>pacman -U <pkg>-<ver>.pkg.tar.zst
Install sourceszypper si <srcpkg>apt source <pkg>dnf download --source <pkg>— (no direct equivalent)
Search for a packagezypper se <pkg>apt search <pkg>dnf search <pkg>pacman -Ss <pkg>
Find who provides a capabilityzypper search --provides --match-exact <cap>apt-file search <cap>dnf provides <cap>pacman -F <cap>

🔗 Complete references

Official openSUSE documentation

SourceContent
Zypper ManualSyntax, options, subcommands
Zypper Command ReferenceComplete command reference
libzypp DocumentationResolution engine, solver
Snapper DocumentationBtrfs snapshots, rollback

Man pages (local sources)

CommandContent
man zypperCommands, global options
man zypper-installInstallation, dependencies
man zypper-dupDist-upgrade, vendor switch
man zypper-reposRepository management
man zypper-searchAdvanced search
man rpmScripts, installed files
Man pages
$zypper help
$zypper help install
$zypper help dup
$zypper help remove
$zypper help search
$zypper help up
$zypper help lr

📖 Recommended readings SafeITExperts

To deepen your knowledge of Linux and openSUSE, here is a selection of complementary articles published on SafeITExperts.

SourceContent
SUSE Kernels & FlavoursUnderstand the different Linux kernel variants on SUSE: default, rt, azure, xen… and their use according to environments.
Wayland 2026: The Post-X11 Era for LinuxComplete guide on the X11 → Wayland transition: compatibility, compositors, practical cases and migration on openSUSE.
Asia at the heart of the global digital ecosystemAnalysis of Asian influence in the global tech industry: manufacturers, standards, and impact on open source.
sudo vs su: The Complete Linux Privilege Elevation GuideComparison sudo / su, security best practices, sudoers configuration and use cases on modern Linux distributions.

🎯 Conclusion

Zypper is a demanding tool, but it rewards those who take the time to understand it. With a solid mastery of repositories, priorities and the solver, openSUSE administration becomes more predictable, more consistent and safer.

Key points to remember
  • Leapzypper up | Tumbleweedzypper dup
  • Always check with zypper ve before a critical operation
  • Use --dry-run to simulate
  • Manage priorities to avoid vendor conflicts
  • Take snapshots with Snapper before dangerous commands

This guide does not claim to say everything: it paves the way. The rest belongs to your practice, your curiosity and your ability to make Zypper a daily ally.

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article

Archives

Nous sommes sociaux !

Facebook X Bluesky Mastodon GitHub Reddit RSS

Articles récents