14
Package Management
- Install / remove / search package
- Show package files / versions
- Debian/apt primary; RHEL/dnf notes
Must-know cold
Debian/Ubuntu:
sudo apt update·sudo apt install PKG·apt search KEY·apt show PKGdpkg -l·dpkg -L PKG·which/command -vafter install
RHEL/Fedora/CentOS:
sudo dnf install PKG·dnf search KEY·rpm -ql PKG
Always update the index before install on apt systems.
Debian / Ubuntu
apt
Definition: Debian/Ubuntu high-level package manager (install, update, search). Preferred interactively.
| Option / verb | Argument | Meaning | Example |
|---|---|---|---|
update | — | Refresh package index from repos | sudo apt update |
upgrade | — | Upgrade installed packages; may install new deps; never removes | sudo apt upgrade |
full-upgrade | — | Like upgrade but may remove packages (same idea as apt-get dist-upgrade) | sudo apt full-upgrade |
install | PKG... | Install package(s) | sudo apt install nginx |
install | PKG=VER | Exact Debian version string (1.2.3-1ubuntu2, not just 1.2.3) | sudo apt install pkg=1.2.3-1 |
remove | PKG | Remove package; keep dpkg conffiles (usually /etc) | sudo apt remove nginx |
purge | PKG | Remove package and those conffiles — not /var data or logs | sudo apt purge nginx |
autoremove | — | Remove unused dependencies | sudo apt autoremove |
search | KEY | Search package names/descriptions | apt search nginx |
show | PKG | Details of the candidate in the cache (not always the installed version) | apt show nginx |
list | --installed | List installed | apt list --installed |
list | --upgradable | Pending upgrades | apt list --upgradable |
policy | PKG | Candidate versions / priorities | apt policy nginx |
edit-sources | — | Open sources list (careful) | sudo apt edit-sources |
-y | — | Assume yes on prompts | sudo apt install -y htop |
--no-install-recommends | — | Leaner install | sudo apt install --no-install-recommends pkg |
clean | — | Clear downloaded .deb cache | sudo apt clean |
autoclean | — | Remove obsolete cache debs | sudo apt autoclean |
Flag combos
| Combo | Meaning | Example |
|---|---|---|
sudo apt update && sudo apt install -y PKG | Refresh then install | Standard |
apt show PKG | grep -i version | Quick version |
apt-get
Definition: Classic Debian package tool; common in scripts and CI.
| Option / verb | Argument | Meaning | Example |
|---|---|---|---|
update | — | Refresh index | sudo apt-get update |
install | PKG | Install | sudo apt-get install -y pkg |
remove / purge | PKG | Remove / purge | sudo apt-get purge pkg |
upgrade | — | Upgrade without installing new packages or removals | sudo apt-get upgrade |
dist-upgrade | — | Smart upgrade (can add and remove); same class as apt full-upgrade | sudo apt-get dist-upgrade |
download | PKG | Download .deb only | apt-get download pkg |
-y | — | Non-interactive yes | CI |
-qq | — | Quieter | Scripts |
Flag combos
| Combo | Meaning | Example |
|---|---|---|
DEBIAN_FRONTEND=noninteractive apt-get install -y pkg | CI noninteractive | Containers |
dpkg
Definition: Install/query .deb packages at a low level (no dependency resolver).
| Option | Argument | Meaning | Example |
|---|---|---|---|
-i | FILE.deb | Install local deb | sudo dpkg -i pkg.deb |
-r | PKG | Remove | sudo dpkg -r pkg |
-P | PKG | Purge | sudo dpkg -P pkg |
-l | — | List dpkg records (ii installed, rc removed-but-config) | dpkg -l | grep nginx |
-l | PKG | Status glob (any output ≠ installed — look for ii) | dpkg -l nginx |
-L | PKG | List files owned by PKG | dpkg -L nginx |
-S | PATH | Which package owns PATH | dpkg -S /usr/bin/nginx |
-c | FILE.deb | List contents of deb | dpkg -c pkg.deb |
-I | FILE.deb | Deb package info | dpkg -I pkg.deb |
--configure | -a | Configure unpacked packages | sudo dpkg --configure -a |
--get-selections | — | Selection states | Backup-ish |
Flag combos
| Combo | Meaning | Example |
|---|---|---|
dpkg -i deb; sudo apt-get install -f | Fix deps after local deb | |
dpkg -L pkg | head | Where files landed |
RHEL family
dnf
Definition: Modern RPM-based package manager (install, search, upgrade). Fedora, RHEL 8+, CentOS Stream.
| Option / verb | Argument | Meaning | Example |
|---|---|---|---|
install | PKG | Install | sudo dnf install nginx |
remove | PKG | Remove | sudo dnf remove nginx |
upgrade / update | — | Refresh metadata if stale and upgrade (aliases in dnf) | sudo dnf upgrade |
search | KEY | Search | dnf search nginx |
info | PKG | Details | dnf info nginx |
list installed | — | Installed packages | dnf list installed |
provides | PATH/CMD | Which repo package owns that file (installed or not). Often a glob | dnf provides '*/nproc' |
repolist | — | Enabled repos | dnf repolist |
clean all | — | Clean cache | sudo dnf clean all |
-y | — | Assume yes | sudo dnf install -y htop |
--setopt=install_weak_deps=False | — | Fewer weak deps | Lean installs |
Flag combos
| Combo | Meaning | Example |
|---|---|---|
sudo dnf install -y PKG | Parallel to apt install |
yum
Definition: Legacy RPM package manager (older RHEL/CentOS 7). Prefer
dnfwhen available.
Same verbs mostly: yum install, yum remove, yum search, yum info, yum provides.
rpm
Definition: Low-level RPM package query/install/verify tool.
| Option | Argument | Meaning | Example |
|---|---|---|---|
-ivh | FILE.rpm | Install verbose hash | sudo rpm -ivh p.rpm |
-Uvh | FILE.rpm | Upgrade or install. Will not downgrade (use --oldpackage) | sudo rpm -Uvh p.rpm |
-e | PKG | Erase | sudo rpm -e pkg |
-qa | — | Query all installed | rpm -qa | grep nginx |
-qi | PKG | Package info | rpm -qi nginx |
-ql | PKG | List files | rpm -ql nginx |
-qf | PATH | Owning package | rpm -qf /usr/bin/ls |
-V | PKG | Verify files | rpm -V nginx |
Flag combos
| Combo | Meaning | Example |
|---|---|---|
rpm -ql pkg | head | File list | Like dpkg -L |
Cross-distro map
| Task | Debian/Ubuntu | RHEL family |
|---|---|---|
| Refresh + install | apt update && apt install pkg | dnf install pkg |
| Search | apt search | dnf search |
| Info | apt show / dpkg -l | dnf info / rpm -qi |
| Files in pkg | dpkg -L pkg | rpm -ql pkg |
| Who owns installed file | dpkg -S path | rpm -qf path |
| Who provides a file (repos) | apt-file search (extra) | dnf provides '*/cmd' |
| Remove config too | apt purge | often manual conf left |
Common recipes
| Goal | Command |
|---|---|
| Install tool (Debian) | sudo apt update && sudo apt install -y curl jq htop |
| Is package installed? | dpkg -s nginx (Status: install ok installed) or dpkg -l nginx and look for ii |
| Files of package | dpkg -L nginx | head |
| Who owns binary | dpkg -S $(which nginx) |
| Fix interrupted dpkg | sudo dpkg --configure -a · sudo apt -f install |
| Install (RHEL) | sudo dnf install -y nginx |
| Provides command | dnf provides '*/nproc' |
| Clean apt cache (disk) | sudo apt clean |
Pitfalls
apt installwithoutupdatecan miss packages or install a stale candidate.dnf installrefreshes metadata itself (subject tometadata_expire).apt show/apt searchread the cache (candidate). Installed version isdpkg -s/apt policy.apt-get upgradewill not pull new packages;apt upgrademay.dpkg -l pkgmatching a name is not proof it is installed — first column must beii.rc= removed, config left.apt purgeonly deletes dpkg-tracked conffiles, not/varstate or logs.- Mixing
dpkg -iwith no resolver leaves “unconfigured” packages —sudo apt -f install(anddpkg --configure -a). rpm -qfonly sees installed files.dnf providessearches repos (globs like*/nproc).rpm -i/-Udo not resolve dependencies — usednf.- Unattended-upgrades vs manual — know who patches the host.
- Third-party repos are a supply-chain risk. State the family from
/etc/os-release(aptvsdnf; CentOS 7 is stillyum).
For more details, try man <command> in your terminal.