主要语法
dpkg [option...] action
软件包信息
包状态
not-installed | 包没有被安装 |
config-files | 仅有配置文件存在 |
half-install | 安装了一半,没有完成安装 |
unpacked | 已经解包,但没有设置 |
half-configured | 已经解包并设置,但没有完成设置 |
triggers-awaited | 包等待其他包处理相关性 |
triggers-pending | 包已经设置好相关性 |
installed | 包已经被解开并设置完成 |
包已选择的状态
install | 包被选择要安装 |
hold | 包被设置此状态后,除非--force-hold,不能改动 |
deinstall | 包被选择要删除,保留配置文件 |
purge | 包被选择完全删除 |
包标志
reinst-required | 需要重装。--force-remove-reinstreq,不能删除 |
安装顺序
1 将control文件从软件包中提取出来
2 如果此软件有不同的版本已经安装,则执行原有版本的prerm脚本。
3 执行新软件包的preinst脚本。
4 解包新的软件包。同时备份原有版本的文件,防止有问题,可以恢复。
5 由于新的包安装的同时,原有的包文件将被删除,所以先执行新包的preinst脚本,后执行原有版本的postrm脚本。
6 设置软件包
action
-i,--install package-file 安装软件包
--configure package 设置软件包
只能设置未设置的软件包,如需要重设置,则dpkg-reconfigure。
-r,--remove,-P,--purge package 卸载软件包
-r,-remove将保留设置文件。
--get-selections [package-name-pattern] 得到已选包列表并且写入stout
--set-selections 设置软件包选择列表,从stdin输入
--clear--selections 设置所有软件包的selection state是deinstall,非基本软件包。
-c,--contents archive 显示软件包的内容
-I,--info archive [control-file...]显示软件包信息
-l,--list package-name-pattern 搜索符合条件的软件包
-s,--status package-name 显示软件包的状态
-L,--listfiles package-name 显示软件包已经安装的具体文件路径
option
-R,--recursive 在指定的文件夹内所有的.deb包,进行同样的操作
文件
/etc/dpkg/dpkg.cfg 默认设置
/var/log/dpkg.log 默认log文件
/var/lib/dpkg/available 显示可用的软件包信息
/var/lib/dpkg/status 显示可用软件包的信息,包括安装状态
用例
1 安装deb包
# dpkg --install google-chrome.deb
2 搜索所有含有python的软件包
# dpkg -l '*python*'
3 显示python2.7软件包的具体信息
# dpkg -s python2.7
4 显示python2.7软件包具体安装的路径
# dpkg -L python2.7
5 备份系统已经安装软件的清单
# dpkg --get-selections > dpkg_selections_backup
6 恢复软件的安装状态
# dpkg --clear-selections # dpkg --set-selections < dpkg_selections_backup
如果想要即可实现安装或卸载,还需要运行apt-get dselect-upgrade