定位

  • 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)= 系统挂掉,要救援