Debian软件包管理工具,dpkg

主要语法

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,不能删除

安装顺序

扫描二维码关注公众号,回复: 1202288 查看本文章

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

猜你喜欢

转载自zhangy517.iteye.com/blog/1897879