Package Management
Distribution-Specific Package Managers
Debian/Ubuntu (APT)
# Package database management
sudo apt update # Update package list
sudo apt upgrade # Upgrade installed packages
sudo apt full-upgrade # Upgrade with dependency resolution
sudo apt dist-upgrade # Distribution upgrade
# Package installation
sudo apt install package # Install package
sudo apt install package=version # Install specific version
sudo apt install -y package # Install without prompts
sudo apt install --no-install-recommends package # Minimal install
sudo apt install ./package.deb # Install local .deb file
# Package removal
sudo apt remove package # Remove package (keep config)
sudo apt purge package # Remove package and config
sudo apt autoremove # Remove unused dependencies
sudo apt autoclean # Clean package cache
# Package information
apt search pattern # Search for packages
apt show package # Show package details
apt list --installed # List installed packages
apt list --upgradable # List upgradable packages
dpkg -l # List all installed packages
dpkg -L package # List files in package
dpkg -S /path/to/file # Find package owning file
Red Hat/CentOS/Fedora (YUM/DNF)
# Package database management
sudo yum update # Update all packages (RHEL/CentOS)
sudo dnf update # Update all packages (Fedora)
sudo yum check-update # Check for updates
sudo dnf upgrade # Upgrade packages (Fedora)
# Package installation
sudo yum install package # Install package
sudo dnf install package # Install package (Fedora)
sudo yum install -y package # Install without prompts
sudo yum localinstall package.rpm # Install local RPM
sudo dnf install ./package.rpm # Install local RPM (Fedora)
# Package removal
sudo yum remove package # Remove package
sudo dnf remove package # Remove package (Fedora)
sudo yum autoremove # Remove unused dependencies
sudo dnf autoremove # Remove unused dependencies (Fedora)
# Package information
yum search pattern # Search for packages
dnf search pattern # Search for packages (Fedora)
yum info package # Show package details
dnf info package # Show package details (Fedora)
yum list installed # List installed packages
dnf list installed # List installed packages (Fedora)
rpm -qa # List all installed packages
rpm -ql package # List files in package
rpm -qf /path/to/file # Find package owning file
Arch Linux (Pacman)
# Package database management
sudo pacman -Sy # Update package database
sudo pacman -Syu # Full system upgrade
sudo pacman -Syyu # Force refresh and upgrade
# Package installation
sudo pacman -S package # Install package
sudo pacman -S --needed package # Install if not already installed
sudo pacman -U package.pkg.tar.xz # Install local package
# Package removal
sudo pacman -R package # Remove package
sudo pacman -Rs package # Remove package and dependencies
sudo pacman -Rns package # Remove package, deps, and config
sudo pacman -Rdd package # Force remove (dangerous)
# Package information
pacman -Ss pattern # Search for packages
pacman -Si package # Show package info
pacman -Q # List installed packages
pacman -Ql package # List files in package
pacman -Qo /path/to/file # Find package owning file
pacman -Qdt # List orphaned packages
# Cache management
sudo pacman -Sc # Clean package cache
sudo pacman -Scc # Clean all cache
openSUSE (Zypper)
# Package database management
sudo zypper refresh # Refresh repositories
sudo zypper update # Update installed packages
sudo zypper dup # Distribution upgrade
# Package installation
sudo zypper install package # Install package
sudo zypper in package # Install package (short form)
sudo zypper install -y package # Install without prompts
# Package removal
sudo zypper remove package # Remove package
sudo zypper rm package # Remove package (short form)
# Package information
zypper search pattern # Search for packages
zypper info package # Show package details
zypper pa --installed-only # List installed packages
rpm -ql package # List files in package
Alpine Linux (APK)
# Package database management
apk update # Update package index
apk upgrade # Upgrade installed packages
# Package installation
apk add package # Install package
apk add --no-cache package # Install without caching
apk add package=version # Install specific version
# Package removal
apk del package # Remove package
# Package information
apk search pattern # Search for packages
apk info package # Show package details
apk list -I # List installed packages
apk info -L package # List files in package
Repository Management
APT Repository Management
# Repository configuration
sudo add-apt-repository ppa:user/ppa # Add PPA
sudo add-apt-repository -r ppa:user/ppa # Remove PPA
sudo apt-key add key.asc # Add GPG key
sudo apt-key list # List GPG keys
# Manual repository addition
echo "deb http://repo.example.com/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/example.list
# Repository information
apt-cache policy # Show repository priorities
apt-cache madison package # Show available versions
YUM/DNF Repository Management
# Repository management
sudo yum-config-manager --add-repo http://repo.example.com/repo.repo
sudo dnf config-manager --add-repo http://repo.example.com/repo.repo
sudo yum-config-manager --enable repo-name
sudo yum-config-manager --disable repo-name
# Repository information
yum repolist # List enabled repositories
dnf repolist # List enabled repositories (Fedora)
yum repoinfo repo-name # Show repository info
Pacman Repository Management
# Repository configuration (edit /etc/pacman.conf)
sudo vim /etc/pacman.conf
# Add repository
[repository-name]
Server = https://repo.example.com/$arch
# Refresh after adding repository
sudo pacman -Sy
Software Compilation from Source
Make/Autotools
# Traditional autotools build
./configure # Configure build
./configure --prefix=/usr/local # Custom install prefix
make # Compile
make -j$(nproc) # Parallel compilation
sudo make install # Install
sudo make uninstall # Uninstall (if supported)
# Common configure options
./configure --help # Show configure options
./configure --disable-feature # Disable feature
./configure --enable-feature # Enable feature
CMake
# CMake build process
mkdir build && cd build # Create build directory
cmake .. # Configure build
cmake -DCMAKE_BUILD_TYPE=Release .. # Release build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. # Custom prefix
make # Compile
make -j$(nproc) # Parallel compilation
sudo make install # Install
# CMake options
cmake -DCMAKE_BUILD_TYPE=Debug .. # Debug build
cmake -DBUILD_SHARED_LIBS=ON .. # Build shared libraries
Ninja Build System
# Using Ninja with CMake
cmake -GNinja .. # Generate Ninja build files
ninja # Build with Ninja
ninja install # Install
Building Dependencies
# Install build dependencies (Debian/Ubuntu)
sudo apt install build-essential
sudo apt build-dep package-name
# Install build dependencies (RHEL/CentOS)
sudo yum groupinstall "Development Tools"
sudo yum-builddep package-name
# Install build dependencies (Fedora)
sudo dnf install @development-tools
sudo dnf builddep package-name
Dependency Management
Dependency Resolution
# APT dependency management
apt-cache depends package # Show package dependencies
apt-cache rdepends package # Show reverse dependencies
apt-mark hold package # Hold package version
apt-mark unhold package # Unhold package
# YUM/DNF dependency management
yum deplist package # Show dependencies
dnf repoquery --requires package # Show requirements
yum history # Show transaction history
dnf history # Show transaction history (Fedora)
# Pacman dependency management
pactree package # Show dependency tree
pactree -r package # Show reverse dependencies
Broken Dependencies
# Fix broken dependencies (APT)
sudo apt --fix-broken install
sudo apt install -f
sudo dpkg --configure -a
# Fix broken dependencies (YUM/DNF)
sudo yum check
sudo yum clean all && sudo yum update
sudo dnf check
sudo dnf clean all && sudo dnf update
Third-Party Package Managers
Snap Packages
# Snap management
sudo snap install package # Install snap package
sudo snap install --classic package # Install with classic confinement
sudo snap remove package # Remove snap package
sudo snap refresh # Update all snaps
sudo snap refresh package # Update specific snap
# Snap information
snap find pattern # Search for snaps
snap info package # Show snap details
snap list # List installed snaps
snap services # List snap services
Flatpak
# Flatpak management
flatpak install flathub app.id # Install from Flathub
flatpak install app.flatpak # Install local flatpak
flatpak uninstall app.id # Uninstall application
flatpak update # Update all flatpaks
flatpak update app.id # Update specific app
# Flatpak information
flatpak search pattern # Search for flatpaks
flatpak info app.id # Show app details
flatpak list # List installed flatpaks
flatpak remote-ls flathub # List remote repository apps
# Repository management
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-list # List repositories
AppImage
# AppImage usage
chmod +x application.AppImage # Make executable
./application.AppImage # Run AppImage
# AppImage management tools
# Install AppImageLauncher for system integration
sudo apt install appimagelauncher
# Extract AppImage contents
./application.AppImage --appimage-extract
Package Signing and Verification
GPG Key Management
# APT key management
sudo apt-key add key.asc # Add GPG key
sudo apt-key list # List GPG keys
sudo apt-key del KEYID # Remove GPG key
# Manual key verification
gpg --keyserver keyserver.ubuntu.com --recv-keys KEYID
gpg --export --armor KEYID | sudo apt-key add -
Package Verification
# Verify APT packages
apt-cache policy package # Check package authenticity
debsums -s # Verify installed packages
# Verify RPM packages
rpm -Va # Verify all packages
rpm -V package # Verify specific package
rpm --checksig package.rpm # Check RPM signature
# Verify Pacman packages
pacman -Qk # Check all packages
pacman -Qk package # Check specific package
Package Troubleshooting
Common Issues and Solutions
# APT lock issues
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
# Corrupted package database
sudo apt clean
sudo apt autoclean
sudo apt update
# Package conflicts
sudo apt install -f # Fix broken packages
sudo dpkg --configure -a # Configure pending packages
Package State Recovery
# Reset package state (APT)
sudo apt clean all
sudo apt update
sudo apt upgrade
# Reset package state (YUM/DNF)
sudo yum clean all
sudo yum makecache
sudo yum update
# Reset package state (Pacman)
sudo pacman -Sc
sudo pacman -Sy
Version Management
Version Pinning
# APT version pinning
sudo apt-mark hold package # Hold current version
sudo apt-mark unhold package # Unhold version
apt-cache policy package # Check version policy
# Create apt preferences
sudo vim /etc/apt/preferences.d/package-pin
# Content:
Package: package-name
Pin: version 1.2.3
Pin-Priority: 1001
# YUM version locking
sudo yum install yum-plugin-versionlock
sudo yum versionlock add package
sudo yum versionlock list
sudo yum versionlock delete package
Downgrading Packages
# Downgrade APT package
sudo apt install package=version
# Downgrade YUM package
sudo yum downgrade package
# Downgrade Pacman package
sudo pacman -U /var/cache/pacman/pkg/package-version.pkg.tar.xz
Package Cleanup and Maintenance
Cache Management
# APT cache cleanup
sudo apt autoclean # Remove partial packages
sudo apt clean # Remove all cached packages
sudo apt autoremove # Remove unused dependencies
# YUM/DNF cache cleanup
sudo yum clean all # Clean all cache
sudo dnf clean all # Clean all cache (Fedora)
sudo yum autoremove # Remove unused packages
# Pacman cache cleanup
sudo pacman -Sc # Clean package cache
sudo pacman -Scc # Clean all cache
sudo pacman -Rns $(pacman -Qtdq) # Remove orphaned packages
System Maintenance
# Check for broken packages
sudo apt check # Check for broken packages
sudo yum check # Check for problems
sudo pacman -Qk # Check package integrity
# Update package databases
sudo apt update && sudo apt upgrade
sudo yum update
sudo dnf update
sudo pacman -Syu
# Clean up package files
sudo apt autoremove && sudo apt autoclean
sudo yum autoremove && sudo yum clean all
sudo pacman -Rns $(pacman -Qtdq) && sudo pacman -Sc
Package Creation and Maintenance
Creating DEB Packages
# Basic DEB package structure
mkdir -p package/DEBIAN
mkdir -p package/usr/bin
# Create control file
cat > package/DEBIAN/control << EOF
Package: mypackage
Version: 1.0
Section: utils
Priority: optional
Architecture: all
Maintainer: Your Name <your.email@example.com>
Description: My custom package
EOF
# Build package
dpkg-deb --build package mypackage_1.0_all.deb
Creating RPM Packages
# Install RPM build tools
sudo yum install rpm-build rpmdevtools
# Create RPM build environment
rpmdev-setuptree
# Create spec file
rpmdev-newspec mypackage
# Build RPM
rpmbuild -ba ~/rpmbuild/SPECS/mypackage.spec
Creating Pacman Packages
# Create PKGBUILD file
cat > PKGBUILD << EOF
pkgname=mypackage
pkgver=1.0
pkgrel=1
pkgdesc="My custom package"
arch=('any')
url="https://example.com"
license=('GPL')
source=("mypackage.tar.gz")
md5sums=('checksum')
package() {
cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
}
EOF
# Build package
makepkg -s
Advanced Package Operations
Package Queries and Analysis
# Advanced package queries
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n # Sort by size
rpm -qa --qf '%{SIZE} %{NAME}\n' | sort -n # Sort RPM packages by size
pacman -Qi | grep 'Installed Size' | sort -h # Sort Pacman packages by size
# Find configuration files
dpkg -L package | grep /etc/
rpm -qc package
pacman -Ql package | grep /etc/
# Package file conflicts
dpkg -S /path/to/file # Find package owning file
rpm -qf /path/to/file # Find package owning file
pacman -Qo /path/to/file # Find package owning file
Batch Operations
# Bulk package operations
apt list --installed | awk -F/ '{print $1}' | xargs sudo apt remove # Remove all
yum list installed | awk '{print $1}' | xargs sudo yum remove # Remove all
pacman -Qe | awk '{print $1}' | xargs sudo pacman -Rs # Remove explicitly installed
# Export/import package lists
dpkg --get-selections > package-list.txt
dpkg --set-selections < package-list.txt
sudo apt dselect-upgrade