在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 #查看软件库的统计信息
软件包安装
$ sudo apt-get install pkgname
$ sudo apt install pkgname
$ sudo apt install -f #自动修复依赖
$ sudo apt-get install -f
在安装软件包之前,我们一般会执行 apt-get update,更新 apt-get 缓存中的软件包信息,获取最新软件包列表。软件的安装源,是由 /etc/apt/sources.list 和 /etc/apt/sources.list.d/ 目录下的 .list 文件定义的。
$ sudo apt-get upgrade #更新系统所有已安装软件包,只更新包会忽略依赖关系
$ sudo apt upgrade
$ sudo apt-get upgrade -u #-u 列出可升级软件列表
$ sudo apt-get upgrade -s #模拟升级
$ sudo apt-get dist-upgrade #根据依赖关系更新系统所有已安装软件包
$ sudo apt-get --reinstall install pkgname #只升级指定的软件包
$ sudo apt-get source pkgname #只下载源码包
$ sudo apt-get check #检查破损的依赖关系
$ sudo apt-get autoclean #自动清楚apt-get缓存
软件包卸载
$ sudo apt-get remove pkgname #删除已安装的软件包(保留配置文件)
$ sudo apt-get purge pkgname #卸载软件,同时删除配置文件
$ 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格式软件包
$ dpkg -l #列出所有安装的deb软件包
$ dpkg -l|grep nginx #查询nginx是否已安装
$ dpkg -s zip #查看软件包zip的状态和详细信息
$ dpkg -S openssh-server #查看软件包openssh-server包含的所有文件
$ dpkg -S /path/to/file #查看某文件对应的软件包名
$ sudo dpkg -i pkgname.deb #安装.deb软件包,需要自己解决依赖关系
$ sudo dpkg -r pkgname #卸载deb格式的软件包(保留配置文件),需要自己解决依赖关系
$ sudo dpkg -P pkgname #卸载deb格式的软件包(不保留配置文件),需要自己解决依赖关系
$ 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。