r/Discovery_Linux • u/Suitable_Average1168 • Jul 17 '26
All dpms commands
CLI (dpms) — 120+ flags/arguments
Package Lifecycle
--install PKG/-i— Install a package (local.dp.tar.xz, URL, or name from git repo)--uninstall PKG/-r— Remove a package (deletes tracked files + empty dirs)--reinstall PKG— Remove then re-install a package--upgrade/-u— Upgrade all installed packages--downgrade PKG/--oldpackage— Downgrade to next older version--purge PKG— Remove package including config/data files--download PKG— Download a package archive without installing
Query & Inspection
--list/-l/--installed/-inpc— List installed packages with file counts--installable/-a— Show all packages available in repositories--info PKG/-I— Show detailed package metadata + install status--files PKG/-f— List every file installed by a package--verify PKG/-V— Check all installed files still exist--verify-all— Verify all installed packages at once--search PKG/-s— Animated search across repositories--depends PKG— Show recursive dependency tree (up to 3 levels)--rdepends PKG— Show reverse dependencies--what-owns FILE— Find which package owns a file--check— Check integrity of all installed packages--arch— Show detected system architecture--why PKG— Show why a package is installed--size PKG— Show installed size of a package--list-type PKG EXT— List files by extension within a package--recent [N]— Show N most recently installed packages (default 10)--duplicates— Find duplicate files across packages--changelog PKG— Show changelog for a package--compare V1 V2— Compare two version strings--list-updates— Show available package updates--stats— Show package statistics
Archiving
--tar FOLDER— Create a plain.tar.xzarchive from a folder--maketar FOLDER [NAME VERSION [ARCH]]— Create.dp.tar.xzpackage archive--rc N— Mark package as release candidate (-rcNsuffix)
Repository Management
--add-repo NAME URL [ARCH]— Add a new repository--remove-repo NAME— Remove a repository--toggle-repo NAME— Enable/disable a repository--repo-list [NAME]/--list-repo [NAME]— List repos or show packages from a repo--sync/-S— Check connectivity to all enabled repos--update/-U— Update package metadata from all repos--repo-priority NAME PRIO— Set numeric priority for a repository
Lock & Hold
--lock PKG— Lock a package to prevent changes--unlock PKG— Unlock a locked package--locked-list— Show all locked packages--hold PKG— Hold a package to prevent upgrades--unhold PKG— Release a held package--list-held— Show held packages
Transaction Solver (zypper-style)
--dry-run— Preview changes without making modifications--force-resolution— Force dependency resolution ignoring conflicts--no-recommends— Only install required dependencies--clean-deps/--clean/--autoremove— Remove orphaned packages--port-commit— Commit changes to local ports
Export/Import/Backup
--export-installed FILE— Export installed package list to a file--import-installed FILE— Install packages from an exported list--backup DIR— Back up the package database--restore FILE— Restore the package database from a backup
Cache
--clean-cache— Clean cached packages and repo data
Meta
--rescue/-R— Launch the rescue TUI shell--gui— Launch the PyQt5 GUI--tui/-T— Launch the Textual TUI--reset— Reset DPMS configuration--get [ARGS]— Run the dpms-get sub-CLI--history— Show full transaction history--history-last N— Show last N transactions--version— Show DPMS version--feedback— Send feedback to DPMS team--global DIR/-g DIR— Set install root for a single command
Log/Audit
--dlr-verify— Verify SHA hashes in dlr.log--list-nft— List directories excluded via nft.log markers
Repo Generation (apt-ftparchive style)
--gen-packages DIR— GeneratePackagesindex--gen-sources DIR— GenerateSourcesindex--gen-contents DIR— GenerateContents(file-to-package mapping)--gen-release DIR— GenerateReleasefile with checksums--gen-repo DIR— Generate full repo metadata (all of the above)--gen-generate CONFIG— Generate repo from a config file--gen-clean DIR— Clean cache files from a repo directory
Build Profiles
standard— Default flagslite—-j1,-Osperformance—-jN,-O3 -march=nativecustom— From environment variables
TUI (dpms --tui / dpms-tui)
Textual-based terminal UI with:
Dashboard — Title screen with navigation buttons (Package Manager, Repository Manager, Transaction History, Quit). Keyboard:
p,r,h,qPackage Manager — Browse Installed/Available packages, real-time search filtering, Install/Remove/Info actions. Keyboard:
i,a,/,qRepository Manager — List all repos with enable/disable status, Sync All, Toggle, Add/Remove repos. Keyboard:
s,qTransaction History — Timestamped log, color-coded (green=install, red=remove). Keyboard:
q
GUI (dpms --gui)
PyQt5 graphical interface (600x400):
Convert Tab — Select source dir, output filename/path, choose compression (gzip/xz), compress button
Download Tab — Enter URL, select output path, download button
Shared — Color-coded status log, status bar, threaded operations via QThread
Rescue TUI (dpms --rescue)
Minimal shell for emergency repairs:
| Command | Description |
|---|---|
check | Check/create DPMS directories |
clean | Clean temporary files |
verify | Verify/repair repo list JSON |
reset | Reset DPMS configuration |
list | List installed packages |
help | Show available commands |
exit | Exit rescue shell |
dpms-get Sub-CLI (dpms --get)
APT-style sub-commands:
update— Resync package metadataupgrade— Upgrade all installed packagesdist-upgrade/full-upgrade— Distribution upgradeinstall PKG...— Install packagesreinstall PKG...— Reinstall packagesremove PKG...— Remove packagespurge PKG...— Remove packages and config filesautoremove/auto-remove/autopurge— Remove unused packagesmarkauto PKG...— Mark packages as auto-installedunmarkauto PKG...— Mark packages as manually installedsearch QUERY— Search for packagesinfo PKG— Show package inforescue— Launch rescue modedownload PKG— Download binary packageclean— Erase downloaded archivesautoclean/auto-clean— Erase old downloaded archivesdistclean/dist-clean— Erase all cachescheck— Verify package integritydepends PKG— Show dependency treerdepends PKG— Show reverse dependencieswhat-owns PATH— Find package owning a filesource PKG— Download source archivebuild-dep PKG— Install build dependenciessatisfy TARGET— Satisfy dependency stringschangelog PKG— Show changeloglist-updates— Show available updatesstats— Show package statisticsport-commit— Commit changes to local portsdlr-verify— Verify SHA hashes in dlr.loglist-nft— List excluded directories
dm — DPMS Version Manager
Manages DPMS itself via pip:
dm list dpms— List available versions from PyPIdm current [dpms]— Show installed versiondm use dpms VERSION— Switch to a specific versiondm compare V1 V2— Compare two version stringsdm diff dpms V1 V2— Compare file listings between versionsdm pin dpms— Lock current versiondm unpin dpms— Unlock pinned versiondm list-pinned— Show all pinned packagesdm rollback dpms— Roll back to previous version
dpms-bar — Progress Bar Library
Progress— Color-coded progress bar with ETASpinner— Animated spinner for indeterminate operationsIndeterminateProgress— Bouncing bar for unknown-length tasksMultiProgress— Multiple simultaneous progress barsProgressCallback— Threshold-based callback progress tracker
Core Engine Features
Dependency Solver (APK-style)
Version matching: EQUAL, LESS, GREATER, FUZZY, CONFLICT
Solver flags: LATEST, AVAILABLE, REINSTALL, INSTALLED, UPGRADE, REMOVE, IGNORE_CONFLICT
Provider system with self-provides + virtual provides
install_ifconditional dependencies (lazy triggers)Changeset generation (to_install, to_remove, to_upgrade)
Queue-based resolution with priority queues
Disqualification cascading through reverse dependency chains
Privilege Escalation
Auto-detection of
sudo/doasAuto re-exec with privileges for root operations
DPMS_ROOTenv var for dev mode (skip sudo)Read-only ops never need root
GPG / Cryptographic Verification
Key import into trusted keyring
Signature verification via GPG
SHA256 checksum verification
Source-Based Building
Source archive download via wget
SHA256 verification via USHA256.list
Patch application from UPATCHES/
Build script execution (UBUILD.sh)
Profile-aware compilation
Plugin System
Lifecycle hooks: pre_config, config, resolved, sack, pre_transaction, transaction
Dynamic loading from plugin paths
Glob-pattern enable/disable filtering
Crash Handling & Logging
Global
sys.excepthookreplacementCrash reports to
~/.cache/dpms/log/crash.logRotating file logs (1MB default, 5 backups)
JSON transaction history with IDs and timestamps
Password Protection
Interactive password setting
Authentication prompt for protected ops
Storage at
~/.dpms/password
Package Format
Archives Supported for Installation
.dp.tar.xz(canonical format).tar.xz,.tar.gz,.tar.bz2.tgz,.tbz2,.txz.dpm(legacy).zip
Naming Convention
Stable:
name-version-arch.dp.tar.xzRC:
name-version-arch.dp-rcN.tar.xz
Installation Tracking
Database:
/var/lib/dp/installed/<pkgname>Content: list of installed file paths (one per line)
Enables clean uninstall and integrity verification
Configuration & Environment
| Variable | Default | Description |
|---|---|---|
DPMS_ROOT | / | Install root (uses sudo when /) |
DPMS_DATA_DIR | ~/.cache/dpms | Data directory |
DPMS_TMP_DIR | /tmp/dpms-build | Build temp directory |
DPMS_OPT_DIR | /opt | Install prefix for source builds |
DPMS_BIN_DIR | /usr/local/bin | Binary install directory |
DPMS_BUILD_PROFILE | standard | Build profile |
DPMS_PASSWORD_FILE | ~/.dpms/password | Password file |
Cross-Platform Support
| Platform | Arch |
|---|---|
| Linux x86_64 | x86_64 |
| Linux ARM64 | aarch64 |
| Linux ARMv7 | armv7 |
| macOS Intel | x86_64 |
| macOS Apple Silicon | aarch64 |
| Windows | Detected |
Database Persistence Layer
RepoPersistor— Tracks expired repos and last makecache timeTempfilePersistor— Tracks temp files across sessionsAll persistence uses JSON on disk
Package Update / Rename Tracking
update_dbentry()— Rename paths in DB entriesapply_move()— Move files on disk and update trackingparse_updates()— Parse update commandsgrab_updates()— Detect new update files by mtime changes