在Debian及其衍生的系统中,我们需要经常使用的软件包管理命令,对系统进行管理,以便系统达到预期的状态。Debian系统中,常用的软件包命令有 apt、apt-get、dpkg、apt-cache等,这里我们着重列举常见的一些用法。

软件包查询(不需要sudo权限)

$ apt-cache search pkg_keyword #列出匹配关键字的软件包
$ apt search pkg_keyword #列出匹配关键字的软件包,包括了版本信息
$ apt list pkgname #查找该软件包,会显示版本信息
$ apt-cache show pkgname #查询软件包详细信息
$ apt show pkgname #查询软件包详细信息
$ apt-cache depends pkgname #查询软件包依赖关系
$ apt-cache rdepends pkgname #查询被哪些软件包依赖
$ apt-cache showpkg pkgname #同上
$ apt-cache policy pkgname #查询软件包的安装状态和版本
$ apt-cache stats #查看软件库的统计信息

软件包安装

  1. $ sudo apt-get install pkgname
  2. $ sudo apt install pkgname
  3. $ sudo apt install -f #自动修复依赖
  4. $ sudo apt-get install -f

在安装软件包之前,我们一般会执行 apt-get update,更新 apt-get 缓存中的软件包信息,获取最新软件包列表。软件的安装源,是由 /etc/apt/sources.list 和 /etc/apt/sources.list.d/ 目录下的 .list 文件定义的。

  1. $ sudo apt-get upgrade #更新系统所有已安装软件包,只更新包会忽略依赖关系
  2. $ sudo apt upgrade
  3. $ sudo apt-get upgrade -u #-u 列出可升级软件列表
  4. $ sudo apt-get upgrade -s #模拟升级
  5. $ sudo apt-get dist-upgrade #根据依赖关系更新系统所有已安装软件包
  6. $ sudo apt-get --reinstall install pkgname #只升级指定的软件包
  7. $ sudo apt-get source pkgname #只下载源码包
  8. $ sudo apt-get check #检查破损的依赖关系
  9. $ sudo apt-get autoclean #自动清楚apt-get缓存

软件包卸载

  1. $ sudo apt-get remove pkgname #删除已安装的软件包(保留配置文件)
  2. $ sudo apt-get purge pkgname #卸载软件,同时删除配置文件
  3. $ sudo apt-get autoremove pkgname #彻底自动卸载软件,删除该软件包及所依赖的,以及不再使用和未使用的软件包

在清理本地缓存时,我们会用到 apt 的 clean 命令。值得一提的是,apt-get autoclean 和 apt-get clean 是略微有区别的。
APT的底层包管理器是dpkg, dpkg 安装软件包时, 会将 *.deb 放在 /var/cache/apt/archives 中。apt-get autoclean 只会删除 /var/cache/apt/archives 已经过期的deb。使用 apt-get clean 会将 /var/cache/apt/archives 的 所有 deb 删掉。

dpkg工具管理deb格式软件包

  1. $ dpkg -l #列出所有安装的deb软件包
  2. $ dpkg -l|grep nginx #查询nginx是否已安装
  3. $ dpkg -s zip #查看软件包zip的状态和详细信息
  4. $ dpkg -S openssh-server #查看软件包openssh-server包含的所有文件
  5. $ dpkg -S /path/to/file #查看某文件对应的软件包名
  6. $ sudo dpkg -i pkgname.deb #安装.deb软件包,需要自己解决依赖关系
  7. $ sudo dpkg -r pkgname #卸载deb格式的软件包(保留配置文件),需要自己解决依赖关系
  8. $ sudo dpkg -P pkgname #卸载deb格式的软件包(不保留配置文件),需要自己解决依赖关系
  9. $ sudo dpkg -P package-name #清除软件包的所有文件(removes everything, including conffiles)

使用PPA源安装软件包

所有的PPA都寄存在launchpad.net网站上,该网站由Canonical公司架设。

  • ppa:user/ppa-name #ppa源语法格式
  • sudo add-apt-repository ppa:user/ppa-name #添加ppa源
  • sudo add-apt-repository -r ppa:user/ppa-name #删除ppa源

注意,任何人都可以上传软件包到ppa,所有尽量避免使用ppa,如果必须使用,应选用可以信任的,有固定团队维护的ppa。