@zhutoulwz
2015-04-29T16:19:14.000000Z
字数 3231
阅读 2298
ubuntu
在ubuntu系统下,软件安装与管理是使用apt-get
与dpkg
,下面简单介绍一下使用方法。
# 普通安装
apt-get install softname1 softname2
# 修复安装
apt-get -f install softname1 softname2 # (-f Atemp to correct broken dependencies)
# 重新安装
apt-get --reinstall install softname1 softname2
# 移除式卸载
apt-get remove softname1 softname2 #移除软件包,当包尾部有+时,意为安装
# 清除式卸载
apt-get --purge remove softname1 softname2 # (同时清除配置)
# 清除式卸载
apt-get purge sofname1 softname2 # (同上,也清除配置文件)
# 普通安装
dpkg -i package_name.deb
# 移除式卸载
dpkg -r pkg1 pkg2
# 清除式卸载
dpkg -P pkg1 pkg2
dpkg
使用文本文件来作为数据库,一般在/var/lib/dpkg
目录下,在status
文件中存储软件状态和控制信息,在info/
目录下备份控制文件,并在其下的.list
文件中记录安装文件清单,其下的.mdasums
保存文件的MD5编码。查询系统所有已安装包的信息状态如下:
dpkg -l
得到的结果如下:(部分结果)
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============-=================-=============-===================================
ii accountsservice 0.6.35-0ubuntu7.1 amd64 query and manipulate user account information
ii acl 2.2.52-1 amd64 Access control list utilities
...
每条记录对应一个软件包,注意每条记录的第一,二,三个字符。 这就是软件包的状态标识,后边依此是软件包名称、版本号和简单描述。
第一字符为期望值,它包括:
u
状态未知,这意味着软件包未安装,并且用户也未发出安装请求i
用户请求安装软件包r
用户请求卸载软件包 p
用户请求清除软件包 h
用户请求保持软件包版本锁定第二列,是软件包的当前状态。此列包括软件包的六种状态:
n
软件包未安装i
软件包安装并完成配置c
软件包以前安装过,现在删除了,但是它的配置文件还留在系统中u
软件包被解包,但还未配置f
试图配置软件包,但是失败了h
软件包安装,但是但是没有成功第三列标识错误状态,可以总结为四种状态。 第一种状态标识没有问题,为空。其它三种符号则标识相应问题:
h
软件包被强制保持,因为有其它软件包依赖需求,无法升级r
软件包被破坏,可能需要重新安装才能正常使用(包括删除)x
软包件被破坏,并且被强制保持apache
的文件
dpkg --listfiles apache
# or
dpkg-query -L apache
nano
的详细信息
dpkg -s nano
# or
dpkg-query -s nano
dpkg -l
# or
dpkg-query -l
dpkg-query -S nano
# or
dpkg -S nano
apt-cache search # (package 搜索包,当你不知道具体包名的时候,可以采用该方法根据关键字找到搜索具体包名)
apt-cache show # (package 获取包的相关信息,如说明、大小、版本等)
apt-get install # (package 安装包)
apt-get install # (package --reinstall 重新安装包)
apt-get -f install # (强制安装)
apt-get remove # (package 删除包)
apt-get remove --purge # (package 删除包,包括删除配置文件等)
apt-get autoremove --purge # (package 删除包及其依赖的软件包+配置文件等)
apt-get update # 更新源
apt-get upgrade # 更新已安装的包
apt-get dist-upgrade # 升级系统
apt-get dselect-upgrade # 使用 dselect 升级
apt-cache depends # (package 了解使用依赖)
apt-cache rdepends # (package 了解某个具体的依赖,当是查看该包被哪些包依赖吧)
apt-get build-dep # (package 安装相关的编译环境)
apt-get source # (package 下载该包的源代码)
apt-get clean && apt-get autoclean # 清理下载文件的存档 && 只清理过时的包
apt-get check # 检查是否有损坏的依赖
dpkg -S filename # 查找filename属于哪个软件包
apt-file search filename # 查找filename属于哪个软件包
apt-file list packagename # 列出软件包的内容
apt-file update # 更新apt-file的数据库
dpkg --info "软件包名" # 列出软件包解包后的包名称
dpkg -l # 列出当前系统中所有的包,可以和参数less一起使用在分屏查看 (类似于rpm -qa)
dpkg -l |grep -i "软件包名" # 查看系统中与"软件包名"相关联的包
dpkg -s # 查询已安装的包的详细信息.
dpkg -L # 查询系统中已安装的软件包所安装的位置 (类似于rpm -ql)
dpkg -S # 查询系统中某个文件属于哪个软件包 (类似于rpm -qf)
dpkg -I # 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装
dpkg -i # 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题
dpkg -r # 卸载软件包.不是完全的卸载,它的配置文件还存在.
dpkg -P # 全部卸载(但是还是不能解决软件包的依赖性的问题)
dpkg -reconfigure # 重新配置
其中重点的是:
apt-get install # 安装包
apt-get remove --purge ## 卸载,删除包与配置文件等
apt-cache search # 搜索包名
apt-file search filename # 查看filename属于哪个包
dpkg-query -S mysql.conf # 查看某个文件归属于哪个包,与apt-file search一样
dpkg -l | grep -i "包名" # 可以查找已安装包中与"包名"相关的包
参考文章
http://qiuye.iteye.com/blog/461394
from qiuye