dpkg的用法

时间:2023-03-08 15:57:52

转载:http://blog.****.net/sunjiajiang/article/details/7252593

dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。
下面是它的一些命令解释:
1)安装软件
命令行:dpkg -i <.deb file name>
示例:dpkg -i avg71flm_r28-1_i386.deb
2)安装一个目录下面所有的软件包
命令行:dpkg -R
示例:dpkg -R /usr/local/src
3)释放软件包,但是不进行配置
命令行:dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录
示例:dpkg –unpack avg71flm_r28-1_i386.deb
4)重新配置和释放软件包
命令行:dpkg –configure package_file
如果和-a一起使用,将配置所有没有配置的软件包
示例:dpkg –configure avg71flm_r28-1_i386.deb
5)删除软件包(保留其配置信息)
命令行:dpkg -r
示例:dpkg -r avg71flm
6)替代软件包的信息
命令行:dpkg –update-avail <Packages-file>
7)合并软件包信息
dpkg –merge-avail <Packages-file>
8)从软件包里面读取软件的信息
命令行:dpkg -A package_file
9)删除一个包(包括配置信息)
命令行:dpkg -P
10)丢失所有的Uninstall的软件包信息
命令行:dpkg –forget-old-unavail
11)删除软件包的Avaliable信息
命令行:dpkg –clear-avail
12)查找只有部分安装的软件包信息
命令行:dpkg -C
13)比较同一个包的不同版本之间的差别
命令行:dpkg –compare-versions ver1 op ver2
14)显示帮助信息
命令行:dpkg –help
15)显示dpkg的Licence
命令行:dpkg –licence (or) dpkg –license
16)显示dpkg的版本号
命令行:dpkg –version
17)建立一个deb文件
命令行:dpkg -b direc×y [filename]
18)显示一个Deb文件的目录
命令行:dpkg -c filename
19)显示一个Deb的说明
命令行:dpkg -I filename [control-file]
20)搜索Deb包
命令行:dpkg -l package-name-pattern
示例:dpkg -I vim
21)显示所有已经安装的Deb包,同时显示版本号以及简短说明
命令行:dpkg -l
22)报告指定包的状态信息
命令行:dpkg -s package-name
示例:dpkg -s ssh
23)显示一个包安装到系统里面的文件目录信息
命令行:dpkg -L package-Name
示例:dpkg -L apache2
24)搜索指定包里面的文件(模糊查询)
命令行:dpkg -S filename-search-pattern

上面这个命令比较有用,比如当我们需要知道下载ps的源代码,但是又不知道包含ps的源码包的名称,那么我们可以采用如下命令:

which  ps    //目的是查找本机的ps命令在哪个目录,以便下一步进行筛选

dpkg  -S ps | grep "/bin/ps"  //如果不进行筛选,打印的信息太多,不易查找

pengdl@debian:~/trunk/hisiv100nptl$ which ps
/bin/ps
pengdl@debian:~/trunk/hisiv100nptl$ dpkg -S ps | grep "/bin/ps"
perl: /usr/bin/psed
kbd: /usr/bin/psfstriptable
ghostscript: /usr/bin/ps2pdfwr
netpbm: /usr/bin/pstopnm
ghostscript: /usr/bin/ps2txt
ghostscript: /usr/bin/ps2pdf12
ghostscript: /usr/bin/ps2pdf13
ghostscript: /usr/bin/ps2pdf14
ghostscript: /usr/bin/ps2ascii
psmisc: /usr/bin/pstree.x11
perl: /usr/bin/pstruct
ghostscript: /usr/bin/ps2ps
ghostscript: /usr/bin/ps2pdf
kbd: /usr/bin/psfxtable
procps: /bin/ps
kbd: /usr/bin/psfaddtable
kbd: /usr/bin/psfgettable
ghostscript: /usr/bin/ps2ps2
netpbm: /usr/bin/psidtopgm
psmisc: /usr/bin/pstree
ghostscript: /usr/bin/ps2epsi
pengdl@debian:~/trunk/hisiv100nptl$

从上图中procps:/bin/ps可以看到ps所在的软件包的名字是 procps。

25)显示包的具体信息

命令行:dpkg -p package-name
示例:dpkg -p cacti

最后
1、很多人抱怨用了Ubuntu或者Debian以后,不知道自己的软件给安装到什么地方了。其实可以用上面的dpkg -L命令来方便的查找。看来基础还是非常重要的,图形界面并不能够包办一切。
2、有的时候,用“新力得”下载完成以后,没有配置,系统会提示用“dpkg –configure -all”来配置,具体为什么也可以从上面看到。
3、现在Edgy里面可以看到Deb的信息。不过是在没有安装的时候(当然也可以重新打开那个包),可以看到Deb的文件路径。
4、如果想暂时删除程序以后再安装,第5项还是比较实用的,毕竟在Linux下面配置一个软件也并非容易。

dpkg安装软件 与Linux软件包依赖介绍

linux软件包依赖关系:是一个软件的安装,需要安装另外一个软件进行支持的一种现象。在windows也存在,但因为很多基础 dll都被windows集成了,所以并不明显。但在linux体系中,因为多个开源软件开发者并不成为一个体系,因而依赖关系向来比较复杂,解决依赖关系也是让很多人比较头疼的问题。

linux中,采用apt或者yum等常常能自动解决依赖关系,但往往我们也需要一些软件源里不存在的软件进行安装。LD源自ubuntu,而 ubuntu又基于debian,故LD中,这些无法用apt来安装的软件我们一般用dpkg来安装,dpkg可以提示是否符合依赖关系,但不会自动解决。“dpkg ”是“Debian Package ”的简写。为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。

安装这类软件,首先我们先看是否存在适用于ubuntu 32位的deb包(比如virtualbox,我们不想装ose版,就可以去http://www.virtualbox.org/下载ubuntu的32位版,注意扩展名,文件名应为*.deb)。

下载后,用dpkg进行安装:

dpkg -i package.deb ###安装包

dpkg -r package ###删除包

dpkg -P package ###删除包(包括配置文件)

dpkg -L package ###列出与该包关联的文件

dpkg -l package ###显示该包的版本

dpkg --unpack package.deb ###解开 deb 包的内容

dpkg -S keyword ###搜索所属的包内容

dpkg -l ###列出当前已安装的包

dpkg -c package.deb ###列出 deb 包的内容

dpkg --configure package ###配置包

dpkg-reconfigure package   ###重新配制一个已经安装的包裹

dpkg-reconfigure --frontend=dialog debconf ###如果安装时选错了配置信息,这里可以改回来.

dpkg --force-all --purge ###有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险.

更多选项可通过 dpkg -h 查询,有些指令需要超级用户权限才能执行,故执行时,一般需 在dpkg 前加sudo (例:sudo dpkg -i package.deb)。

dpkg配置及缓存信息:系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件. 提供这些信息仅供了解,一般不需要更改。

每个文件的作用如下:

".conffiles" 文件记录软件包的配置列表.

".list" 文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置.

".md5sums" 文件记录了md5信息,用来进行包的验证的.

".config" 文件是软件包的安装配置脚本.

".postinst" 脚本是完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动.

".preinst" 脚本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成.

".prerm" 脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行.

".postrm" 脚本负责修改软件包链接或文件关联,或删除由它创建的文件.

/var/lib/dpkg/available是软件包的描述信息.

包括当前系统中所有使用的Debian安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包.