定位
dpkg:Debian / Ubuntu 系底层包工具(apt在它之上)rpm:RHEL / Fedora 系底层包工具(dnf/yum在它之上)
99% 用 apt / dnf 就够——只有装本地包文件或调试时才直接用 dpkg / rpm。
dpkg 实战
装本地 .deb
sudo dpkg -i pkg.deb # ❌ 不会自动装依赖
sudo apt install ./pkg.deb # ✓ 自动装依赖(推荐)
# 装完发现依赖没装
sudo apt install -f # 自动修复
看 / 查
dpkg -l # 列所有已装
dpkg -l | grep nginx
dpkg -s nginx # 看某包状态
dpkg -L nginx # 看某包安装了哪些文件
dpkg -S /usr/bin/nginx # 看某文件属于哪个包
dpkg --get-selections # 列出所有包(脚本用)
删除
sudo dpkg -r pkg # 删包(保配置)
sudo dpkg -P pkg # 删包 + 配置 = purge
解决依赖错乱
sudo dpkg --configure -a # 完成未配置的包
sudo apt --fix-broken install
rpm 实战
装本地 .rpm
sudo rpm -ivh pkg.rpm # 装(不处理依赖)
sudo dnf install ./pkg.rpm # ✓ 推荐(自动依赖)
看 / 查
rpm -qa # 所有已装
rpm -qa | grep nginx
rpm -qi nginx # 看详情
rpm -ql nginx # 看安装了哪些文件
rpm -qf /usr/bin/nginx # 看某文件属于哪个包
rpm -V nginx # 验证文件是否被改
删除
sudo rpm -e pkg
装离线包
服务器没网,本地有 .deb / .rpm:
# Debian/Ubuntu
sudo dpkg -i pkg.deb
sudo apt install -f # 如果依赖缺,从已有 apt 源补
# RHEL
sudo rpm -ivh pkg.rpm
sudo dnf install ./pkg.rpm # 推荐
如果完全离线 → 需要带依赖一起的离线包(搜 "offline package")。
看某文件是哪个包提供的
# Debian/Ubuntu
dpkg -S /usr/bin/htop
# htop: /usr/bin/htop
# RHEL
rpm -qf /usr/bin/htop
# htop-3.0.5-1.el9.x86_64
或没装的情况下:
apt-file search /usr/bin/htop # 装 apt-file
dnf provides /usr/bin/htop # RHEL
坑
dpkg -i不自动处理依赖——优先用apt install ./pkg.deb- 直接用 dpkg / rpm 装的包不会进 apt / dnf 升级队列
- 误删系统关键包(如 libc / systemd)= 系统挂掉,要救援