dpkg Package Manager
dpkg - Low-level package manager for Debian-based systems.
Basic Commands
1# Install package
2sudo dpkg -i package.deb
3
4# Remove package (keep config)
5sudo dpkg -r package-name
6
7# Purge package (remove config)
8sudo dpkg -P package-name
9
10# List installed packages
11dpkg -l
12
13# List specific package
14dpkg -l package-name
15
16# Show package info
17dpkg -s package-name
18
19# List files in package
20dpkg -L package-name
21
22# Find which package owns a file
23dpkg -S /path/to/file
24
25# Extract package contents
26dpkg -x package.deb /output/dir
27
28# Extract control files
29dpkg -e package.deb /output/dir
Query Packages
1# List all installed packages
2dpkg -l
3
4# List with pattern
5dpkg -l | grep pattern
6
7# Show package status
8dpkg -s package-name
9
10# List files installed by package
11dpkg -L package-name
12
13# Search for file owner
14dpkg -S /usr/bin/vim
15
16# List package contents (not installed)
17dpkg -c package.deb
18
19# Show package info (not installed)
20dpkg -I package.deb
Package Status
1# Check if package is installed
2dpkg -l package-name | grep ^ii
3
4# Show package version
5dpkg -l package-name | awk '{print $3}'
6
7# List configuration files
8dpkg-query -W -f='${Conffiles}\n' package-name
9
10# Verify installed files
11dpkg -V package-name
Fix Broken Packages
1# Reconfigure all packages
2sudo dpkg --configure -a
3
4# Force reconfigure specific package
5sudo dpkg-reconfigure package-name
6
7# Force install (dangerous!)
8sudo dpkg -i --force-all package.deb
9
10# Fix dependencies
11sudo apt install -f
Build Packages
1# Build from source directory
2dpkg-buildpackage -us -uc
3
4# Build binary only
5dpkg-buildpackage -b -us -uc
6
7# Build source only
8dpkg-buildpackage -S -us -uc
9
10# Sign package
11dpkg-buildpackage -rfakeroot
Extract and Repack
1# Extract .deb
2mkdir package
3dpkg-deb -x package.deb package/
4dpkg-deb -e package.deb package/DEBIAN
5
6# Modify contents
7# ... edit files ...
8
9# Repack
10dpkg-deb -b package new-package.deb
11
12# Check package
13lintian new-package.deb
Package Information
1# Show control file
2dpkg -I package.deb
3
4# Show package description
5dpkg -s package-name | grep Description -A 10
6
7# Show dependencies
8dpkg -s package-name | grep Depends
9
10# Show package size
11dpkg -s package-name | grep Installed-Size
12
13# Show all package fields
14dpkg -s package-name
Database Management
1# Database location
2ls /var/lib/dpkg/
3
4# Status file
5cat /var/lib/dpkg/status
6
7# Available packages
8cat /var/lib/dpkg/available
9
10# Backup database
11sudo cp -r /var/lib/dpkg /var/lib/dpkg.backup
12
13# Restore database
14sudo cp -r /var/lib/dpkg.backup /var/lib/dpkg
Logs
1# dpkg log
2cat /var/log/dpkg.log
3
4# Recently installed
5grep " install " /var/log/dpkg.log | tail -20
6
7# Recently removed
8grep " remove " /var/log/dpkg.log | tail -20
9
10# Recently upgraded
11grep " upgrade " /var/log/dpkg.log | tail -20
Advanced Usage
1# Force options
2--force-depends # Ignore dependency problems
3--force-conflicts # Install conflicting packages
4--force-overwrite # Overwrite files from other packages
5--force-downgrade # Install older version
6--force-all # Force everything (dangerous!)
7
8# Example
9sudo dpkg -i --force-overwrite package.deb
10
11# Dry run
12sudo dpkg --dry-run -i package.deb
dpkg-query
1# List packages by pattern
2dpkg-query -l '*python*'
3
4# Show package status
5dpkg-query -W -f='${Status}\n' package-name
6
7# Show version
8dpkg-query -W -f='${Version}\n' package-name
9
10# Custom format
11dpkg-query -W -f='${Package}\t${Version}\t${Status}\n'
12
13# List all packages with versions
14dpkg-query -W -f='${Package}\t${Version}\n' | column -t
dpkg-deb
1# Extract package
2dpkg-deb -x package.deb output-dir
3
4# Extract control files
5dpkg-deb -e package.deb output-dir
6
7# Show package info
8dpkg-deb -I package.deb
9
10# Show package contents
11dpkg-deb -c package.deb
12
13# Build package
14dpkg-deb -b package-dir output.deb
15
16# Check package
17dpkg-deb --info package.deb
Create Simple Package
1# Create package structure
2mkdir -p mypackage/DEBIAN
3mkdir -p mypackage/usr/local/bin
4
5# Create control file
6cat > mypackage/DEBIAN/control <<EOF
7Package: mypackage
8Version: 1.0
9Section: utils
10Priority: optional
11Architecture: all
12Maintainer: Your Name <email@example.com>
13Description: My custom package
14 Long description here
15EOF
16
17# Add files
18cp myscript.sh mypackage/usr/local/bin/
19chmod +x mypackage/usr/local/bin/myscript.sh
20
21# Build package
22dpkg-deb -b mypackage mypackage_1.0_all.deb
23
24# Install
25sudo dpkg -i mypackage_1.0_all.deb
Troubleshooting
1# Lock file issues
2sudo rm /var/lib/dpkg/lock
3sudo rm /var/lib/dpkg/lock-frontend
4sudo dpkg --configure -a
5
6# Corrupted package database
7sudo rm /var/lib/dpkg/updates/*
8sudo dpkg --configure -a
9
10# Force remove broken package
11sudo dpkg --remove --force-remove-reinstreq package-name
12
13# Reinstall package
14sudo apt install --reinstall package-name
Useful Scripts
1# List largest installed packages
2dpkg-query -W -f='${Installed-Size}\t${Package}\n' | sort -rn | head -20
3
4# List packages by install date
5grep " install " /var/log/dpkg.log | tail -50
6
7# Find orphaned packages
8deborphan
9
10# Clean up old config files
11dpkg -l | grep ^rc | awk '{print $2}' | xargs sudo dpkg --purge
Related Snippets
- APT Package Manager (Debian/Ubuntu)
APT (Advanced Package Tool) for Debian and Ubuntu-based systems. Basic Commands … - Bazel Build System
Bazel - Fast, scalable, multi-language build system from Google. Installation 1# … - emerge Package Manager (Gentoo)
emerge (Portage) - Source-based package manager for Gentoo Linux. Basic Commands … - Go Modules & Workspaces
Go modules and workspaces for dependency management. Essential commands for Go … - npm - Node Package Manager
Essential npm commands for Node.js package management. Quick reference for daily … - pacman Package Manager (Arch Linux)
pacman - Package manager for Arch Linux and derivatives (Manjaro, EndeavourOS). … - pip Package Manager (Python)
pip - Package installer for Python. Basic Commands 1# Install package 2pip … - pkg Package Manager (FreeBSD)
pkg - Binary package manager for FreeBSD. Basic Commands 1# Update repository … - Scoop Package Manager (Windows)
Scoop - Command-line installer for Windows. Installation 1# Set execution policy … - Yarn Package Manager
Yarn package manager for JavaScript/Node.js projects. Installation 1# Via npm … - yum/dnf Package Manager (RHEL/Fedora)
yum (Yellowdog Updater Modified) and dnf (Dandified Yum) for RHEL, Fedora, …