dpkg

资料百科

"dpkg "是"Debian Packager "的简写。为 "Debian" 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自"Debian"的"Linux "发行版都使用 "dpkg",例如 "Ubuntu"、"Knoppix "等。

dpkg是Debian软件包管理器的基础,它被伊恩·默多克创建于1993年。dpkg与RPM十分相似,同样被用于安装、卸载和供给.deb软件包相关的信息。

dpk来自g本身是一个底层的工具。上层的工具,如APT,被用于从远程获取软件包以及处理复杂的软件包关系。 "dpkg"是"Debian Package"的简写。

  • 外文名称 Debian Packager
  • 简称 dpkg
  • 地位 Debian软件包管理器的基础
  • 创建于 1993年
  • 属性 底层的工具

dpk来自g的基本用法

  1)安装软件

  命令行:dpkg -i <.deb file nam360百科e>

  示例:dpkg -i avg71flm_r28-1_i386.deb

  2)安装一个目录下面所有的软件包

  命令行:时八害仍哪关虽dpkg -R

  示例:dpkg -R /usr/loca变船标某同秋心呀课l/src

  3)释遥阀壳放软件兰段妒杨后明解出仍服南举捆包,但是不进行配置

  命令行:dpkg –-u湖若npack package_file 如果和-R一起使用,参数可以是一个目录

  示例:dpkg –-unpack avg71flm_r28-1_i386.deb

  4)重新配置和释放软件狱台包

  命令行:dpkg –conf办知庆igure package_f诉力胜断受谓正运ile

  如果和-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 directory [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

  25)显示包的具体信息

  命令行:dpkg -p package-name

  示例:dpkg -p cacti

dpkg与apt的区别

  apt-get install <package>

  下载 <package> 以及所有依赖的包裹,同时进行包裹的安装或升级.如果某个包裹被设置了 hold (停止标志),就会被搁在一边(即不会被升级).更多 hold 细节请看下面.

  apt-get remove [--purge] <package>

  移除 <package> 以及任何倚赖这个包裹的其它包裹.

  --purge 指明这个包裹应该被完全清除 (purged) ,更多信息请看 dpkg -P .

  apt-get update

  升级来自 Debian 镜像的包裹列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了

  /etc/apt/sources.list 后,必须执行.

  apt-get upgrade [-u]

  升级所有已经安装的包裹为最新可用版本.不会安装新的或移除老的包裹.如果一个包改变了倚赖关系而需要安装一个新的包裹,那么它将不会被升级,而是标志为 hold .apt-get update 不会升级被标志为 hold 的包裹 (这嘱汗墓个也就是 hold 的意思).请看下文如何手动设置包裹为 hold .我建议同时使用 '-u' 选项,因为这样你就能看到哪些包裹将会被升级.

  apt-get dist-upgrade [-u]

  和 apt-get upgrade 类似,除了 dist-upgrade 会安装和移除包裹来满足倚赖关系.因此具有一定的危险性.

  apt-cache search <pattern>

  搜索满足 <pattern> 的包裹和描述.

  apt-cache show <package>

  显示 <package> 的完整的描述.

  apt-cache showpkg <package>

  显示 <package> 许多细节,以及和其它包裹的关系.

  dselect

  console-apt

  aptitude

  gnome-apt

  APT 的几个图形前端(其中一些在使用前得先安装).这里 dselect 无疑是最强大的,也是最古老,最难驾驭.

  普通 Dpkg 用法

  dpkg -i <package.deb>

  安装一个 Debian 包裹文件;如你手动下载的文件.

  dpkg -c <package.deb>

  列出 <package.deb> 的内容.

  dpkg -I <package.deb>

  从 <package.deb> 中提取包裹信息.

  dpkg -r <package>

  移除一个已安装的包裹.

  dpkg -P <package>

  完全清除一个已安装的包裹.和 remove 不同的是, remove 只是删掉数据和可执行文件, purge 另外还删除所有的配制文件.

  dpkg -L <package>

  列出 <package> 安装的所有文件清单.同时请看 dpkg -c 来检查一个 .deb 文件的内容.

  dpkg -s <package>

  显示已安装包裹的信息.同时请看 apt-cache 显示 Debian 存档中的包裹信息,以及 dpkg -I 来显示从一个.deb 文件中提取的包裹信息.

  dpkg-reconfigure <package>

  重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面).你能够重新配制 debconf 它本身,如你想改变它的前端或提问的优先权.例如,重新配制 debconf ,使用一个 dialog 前端,简单运行:

  dpkg-reconfigure --frontend=dialog debconf (如果你安装时选错了,这里可以改回来哟)

  echo "<package> hold" | dpkg --set-selections

  设置 <package> 的状态为 hold (命令行方式)

  dpkg --get-selections "<package>"

  取的 <package> 的当前状态 (命令行方式)

  支持通配符,如:

  Debian:~# dpkg --get-selections *wine*

  libwine hold

  libwine-alsa hold

  libwine-arts hold

  libwine-dev hold

  libwine-nas hold

  libwine-print hold

  libwine-twain hold

  wine hold

  wine+ hold

  wine-doc hold

  wine-utils hold

  例如:

  大家可能用的都是 gaim-0.58 + QQ-plugin,为了防止 gaim 被升级,我们可以采用如下方法:

  方法一:

  Debian:~# echo "gaim hold" | dpkg --set-selections

  然后用下面命令检查一下:

  Debian:~# dpkg --get-selections "gaim"

  gaim hold

  状态标志是 hold,就不能被升级了.

  如果想恢复怎么办呢?

  Debian:~# echo "gaim install" | dpkg --set-selections

  Debian:~# dpkg --get-selections "gaim"

  gaim install

  这时状态标志又被重置为 install,可以继续升级了.

  同志们会问,这些状态标志都写在哪个文件中呢?

  在 /var/lib/dpkg/status 里,你也可以通过修改这个文件实现 hold.

  有时你会发现有的软件状态标志是 purge,不要奇怪.

  如:事先已经安装了 amsn, 然后把它卸了.

  apt-get remove --purge amsn

  那么状态标志就从 install 变成 purge.

  方法二:

  在/etc/apt 下手动建一个 preferences 文件

  内容:

  Package: gaim

  Pin: version 0.58*

  保存

  dpkg -S <file>

  在包裹数据库中查找 <file>,并告诉你哪个包裹包含了这个文件.(注:查找的是事先已经安装的包裹)

  从源码建立deb packages

  apt-get source [-b] <package>

  下载一个源码的包并解开。

  你必须在你的/etc/apt/sources.list文件里写入一条 deb-src 的记录才能完成这项工作。

  如果你输入了一个-b参数,并且是以root的身份,deb包会被自动的创建。

  apt-get build-dep <package>

  自动下载并安装通过源码创建 <package> 时需要的包。

  只有apt 0.5以上版本才支持这个功能。

  woody和以上版本包含了这个功能。

  如果你使有一个旧版本的apt,查找依赖性最简单的方法是查看源码包中 debian/control 这个文件,

  注意这个路径是相对的,是包内的路径。

  普通的用法,结合 apt-get source -b,例子 (as root):

  apt-get build-dep <package>

  apt-get source -b <package>

  会下载源码包,建立依赖性,然后尝试编译源码。

  dpkg-source -x <package.dsc>

  如果你手工下载了一个程序的源码包,其中包含了几个类似 .orig.tar.gz , .dsc ,

  以及 .diff.gz 之类的文件,

  那么你就可以对 .dsc 文件使用这个命令来 unpack 源码包。

  dpkg-buildpackage

  从 Debian 源码树建立一个deb包。你必须在source tree的主目录才能生效。例如:

  dpkg-buildpackage -rfakeroot -uc -b

  这里 '-rfakeroot' 指定命令使用 fakeroot 程序来模仿 root 权限 (来实现所有者(ownership)目的),

  '-uc' 表示 "Don't cryptographically sign the changelog", '-b' 代表只建立二进制包.

  debuild

  一个快速打包脚本类似 dpkg-buildpackage ,能自动的识别是否使用 fakeroot,

  同时为你运行 lintian 和 gpg

  修正倚赖关系

  dpkg --configure --pending

  如果dpkg在apt-get install upgrade dist-uptradeing 的时候出错退出,

  尝试使用此命令来配置已经unpack的包。

  然后再用 apt-get install ,upgrade, or dist-upgrade -f ,

  然后再用 apt-get install, upgrade, or dist-upgrade.

  可能会重复多次,这样通常可以解决大多数的依赖性问题。

  (同时,如果提示由于某种原因需要某个特定的包裹,你可以常识安装或卸载这个包)

  apt-get install -f

  apt-get upgrade -f

  apt-get dist-upgrade -f

  尝试修正上述过程中出现依赖性关系

  注意 apt-get install -f 不需要 <package> 作为参数。

标签:
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com