Ubuntu 系统 dpkg 命令使用详解

Ubuntu 系统 dpkg 命令使用详解dpkg即packagemanagerforDebian,是Debian和基于Debian的系统中一个主要的包管理工具,可以用来安装、构建、卸载、管理deb格式的软件包。安装软件使用dpkg命令安装软件时,可以使用-i选项并指定deb安装包的路径。和Ubuntu下的另一个包管理工具apt-get(AdvancedPackageTool)有所不同。apt-get命令并不直接操作deb安装包文件,而是从/etc/apt/s…

大家好,又见面了,我是你们的朋友全栈君。

dpkg 即 package manager for Debian ,是 Debian 和基于 Debian 的系统中一个主要的包管理工具,可以用来安装、构建、卸载、管理 deb 格式的软件包。

安装软件

使用 dpkg 命令安装软件时,可以使用 -i 选项并指定 deb 安装包的路径。和 Ubuntu 下的另一个包管理工具 apt-get(Advanced Package Tool)有所不同。
apt-get 命令并不直接操作 deb 安装包文件,而是从 /etc/apt/sources.list 配置文件中定义的软件镜像源里下载软件包并安装,使用时也只需指定软件的名称(或者也可以附加上版本号)。

apt-get 命令安装软件:
$ apt-get install <package_name[=version]>

dpkg 命令安装软件:
$ dpkg -i <package_file_path>

因此,dpkg 主要是用来安装已经下载到本地的 deb 软件包,或者对已经安装好的软件进行管理。而 apt-get 可以直接从远程的软件仓库里下载安装软件。

$ sudo apt-get install emacs 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件: emacs-bin-common emacs-common emacs-el emacs-gtk libm17n-0 libotf0 m17n-db 建议安装: mailutils emacs-common-non-dfsg m17n-docs gawk 下列【新】软件包将被安装: emacs emacs-bin-common emacs-common emacs-el emacs-gtk libm17n-0 libotf0 m17n-db 升级了 0 个软件包,新安装了 8 个软件包,要卸载 0 个软件包,有 115 个软件包未被升级。 需要下载 34.4 MB 的归档。 解压缩后会消耗 137 MB 的额外空间。 您希望继续执行吗? [Y/n] 
$ sudo dpkg -i fping_4.2-1_amd64.deb (正在读取数据库 ... 系统当前共安装有 252654 个文件和目录。) 准备解压 fping_4.2-1_amd64.deb ... 正在解压 fping (4.2-1) 并覆盖 (4.2-1) ... 正在设置 fping (4.2-1) ... 正在处理用于 man-db (2.8.5-2) 的触发器 ... 

列出已安装的软件

可以使用 dpkg -l 命令列出当前系统中已经安装的软件以及软件包的状态。如:

$ dpkg -l 期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h) | 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T) |/ 错误?=(无)/须重装(R) (状态,错误:大写=故障) ||/ 名称 版本 体系结构 描述 +++-=============================================-===================================-============-=============================================================================== ii 2048-qt 0.1.6-1build1 amd64 mathematics based puzzle game ii accountsservice 0.6.50-0ubuntu1 amd64 query and manipulate user account information ii acl 2.2.53-4 amd64 access control list - utilities ii acpi-support 0.143 amd64 scripts for handling many ACPI events ii acpid 1:2.0.31-1ubuntu2 amd64 Advanced Configuration and Power Interface event daemon ii adduser 3.118ubuntu1 all add and remove users and groups ii adwaita-icon-theme 3.32.0-1ubuntu1 all default icon theme of GNOME (small subset) ii alsa-base 1.0.25+dfsg-0ubuntu5 all ALSA driver configuration files ii alsa-utils 1.1.8-1ubuntu1 amd64 Utilities for configuring and using ALSA ... 

该命令每行输出中的第一列 ii 表示软件包的安装和配置状态,其格式如下:
期望状态|当前状态|错误
其中期望状态有以下几种

  • u:即 unknown,软件包未安装且用户未请求安装
  • i:即 install,用户请求安装该软件包
  • r:即 remove,用户请求卸载该软件包
  • p:即 purge,用户请求卸载该软件包并清理配置文件
  • h:即 hold,用户请求保持续当前软件包版本

当前状态 有以下几种:

  • n:即 not-installed,软件包未安装
  • i:即 installed,软件包已安装并完成配置
  • c:即 config-files,软件包已经被卸载,但是其配置文件未清理
  • u:即 unpacked,软件包已经被解压缩,但还未配置
  • f:即 half-configured,配置软件包时出现错误
  • w:即 triggers-awaited,触发器等待
  • t:即 triggers-pending,触发器未决

错误状态 有以下几种:

  • h:软件包被强制保持
  • r:即 reinstall-required,需要卸载并重新安装
  • x:软件包被破坏

因此 ii 表示该软件需要安装且已经安装,没有出现错误;
iu 表示已经安装该软件,但未正确配置;
rc 表示该软件已经被删除,但配置文件未清理。

查看处于 rc 状态的软件包:

$ dpkg -l | grep ^rc rc libmhash2:amd64 0.9.9.9-7 amd64 Library for cryptographic hashing and message authentication rc linux-image-5.0.0-13-generic 5.0.0-13.14 amd64 Signed kernel image generic rc linux-modules-5.0.0-13-generic 5.0.0-13.14 amd64 Linux kernel extra modules for version 5.0.0 on 64 bit x86 SMP rc linux-modules-extra-5.0.0-13-generic 5.0.0-13.14 amd64 Linux kernel extra modules for version 5.0.0 on 64 bit x86 SMP rc zabbix-proxy-mysql 1:4.0.4+dfsg-1 amd64 network monitoring solution - proxy (using MySQL) 

此外,还可以使用 dpkg -l <package_name_pattern> 命令筛选出名称中包含指定模式的软件包。

$ dpkg -l "nginx*"
期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
| 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T)
|/ 错误?=(无)/须重装(R) (状态,错误:大写=故障)
||/ 名称           版本            体系结构     描述
+++-==============-===============-============-=========================================================
ii  nginx          1.15.9-0ubuntu1 all          small, powerful, scalable web/proxy server
ii  nginx-common   1.15.9-0ubuntu1 all          small, powerful, scalable web/proxy server - common files
ii  nginx-core     1.15.9-0ubuntu1 amd64        nginx web/proxy server (standard version)
un  nginx-doc      <>            <>         (无描述)
un  nginx-extras   <>            <>         (无描述)
un  nginx-full     <>            <>         (无描述)
un  nginx-light    <>            <>         (无描述)

卸载软件

dpkg 命令的 -r 选项可以用来卸载已安装的软件包,此时只需要指定软件的名称即可。

$ sudo dpkg -r vim (正在读取数据库 ... 系统当前共安装有 252653 个文件和目录。) 正在卸载 vim (2:8.1.0320-1ubuntu3.1) ... update-alternatives: 使用 /usr/bin/vim.tiny 来在自动模式中提供 /usr/bin/vi (vi) update-alternatives: 使用 /usr/bin/vim.tiny 来在自动模式中提供 /usr/bin/view (view) update-alternatives: 使用 /usr/bin/vim.tiny 来在自动模式中提供 /usr/bin/ex (ex) update-alternatives: 使用 /usr/bin/vim.tiny 来在自动模式中提供 /usr/bin/rview (rview) 

需要注意的是,-r 选项只会移除指定的软件包而不对其配置文件产生影响,可以使用 -P 选项在删除软件包的同时清理配置文件。
sudo dpkg -P <package>

其他包管理操作

查看软件包的内容

dpkg -c <package_file_path>

$ dpkg -c fping_4.2-1_amd64.deb drwxr-xr-x root/root 0 2019-02-20 06:27 ./ drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/ drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/bin/ -rwxr-xr-x root/root 52128 2019-02-20 06:27 ./usr/bin/fping drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/ drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/bug/ -rwxr-xr-x root/root 118 2017-06-19 05:19 ./usr/share/bug/fping drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/doc/ drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/doc/fping/ -rw-r--r-- root/root 495 2017-09-06 08:00 ./usr/share/doc/fping/NEWS.Debian.gz -rw-r--r-- root/root 1615 2019-02-20 06:27 ./usr/share/doc/fping/changelog.Debian.gz -rw-r--r-- root/root 3445 2017-12-07 04:09 ./usr/share/doc/fping/copyright drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/lintian/ drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/lintian/overrides/ -rw-r--r-- root/root 41 2017-06-19 05:19 ./usr/share/lintian/overrides/fping drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/man/ drwxr-xr-x root/root 0 2019-02-20 06:27 ./usr/share/man/man8/ -rw-r--r-- root/root 5733 2019-02-20 06:27 ./usr/share/man/man8/fping.8.gz -rw-r--r-- root/root 1512 2019-02-20 06:27 ./usr/share/man/man8/fping6.8.gz lrwxrwxrwx root/root 0 2019-02-20 06:27 ./usr/bin/fping6 -> fping 
查看软件包(已安装)的详细信息

dpkg -s <package>dpkg --status <package>

$ dpkg -s fping Package: fping Status: deinstall ok installed Priority: optional Section: net Installed-Size: 87 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Architecture: amd64 Version: 4.2-1 Depends: libcap2-bin, netbase, libc6 (>= 2.15) Enhances: netdata (>= 1.5) Description: sends ICMP ECHO_REQUEST packets to network hosts fping is a ping like program which uses the Internet Control Message Protocol (ICMP) echo request to determine if a target host is responding. fping differs from ping in that you can specify any number of targets on the command line, or specify a file containing the lists of targets to ping. Instead of sending to one target until it times out or replies, fping will send out a ping packet and move on to the next target in a round-robin fashion. Original-Maintainer: Axel Beckert <abe@debian.org> Homepage: https://www.fping.org/ 
查看软件包的安装位置

dpkg -L <package>dpkg --list-files <package>

$ dpkg -L fping /. /usr /usr/bin /usr/bin/fping /usr/share /usr/share/bug /usr/share/bug/fping /usr/share/doc /usr/share/doc/fping /usr/share/doc/fping/NEWS.Debian.gz /usr/share/doc/fping/changelog.Debian.gz /usr/share/doc/fping/copyright /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/fping /usr/share/man /usr/share/man/man8 /usr/share/man/man8/fping.8.gz /usr/share/man/man8/fping6.8.gz /usr/bin/fping6 
筛选出包含指定文件(模式)的软件包

dpkg -S <filename_pattern>dpkg --search <filename_pattern>

$ dpkg -S sites-available apache2: /etc/apache2/sites-available/default-ssl.conf apache2: /etc/apache2/sites-available/000-default.conf nginx-common: /etc/nginx/sites-available nginx-common: /etc/nginx/sites-available/default apache2: /etc/apache2/sites-available 

参考资料

15 Practical Examples of “dpkg commands” for Debian Based Distros
Linux软件安装管理之——dpkg与apt-*详解

      </div>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143466.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • shopee东南亚电商ERP系统[通俗易懂]

    shopee东南亚电商ERP系统[通俗易懂]【上马ERP】专注东南亚本地电商市场,对接shopeeLazadatokopediaJD.idBilbilAkulaku等电商平台一套根据东南亚本地电商需求深度订制的ERP/WMS仓储系统!上马特色功能:【自动处理pickupGo-jek,Gosend,Grad订单】【自动打印快递面单】:美观、高效、准确、效率【自动更新平台订单】:结合仓库现有库存,自动更新平台库存,100%防止超卖;【智能化仓库管理】:智能生成拣货清单,高效准确管理仓库;【实时校验订…

  • 美国东部时间和北京时间之间的转换方式_北京时间19点美国几点

    美国东部时间和北京时间之间的转换方式_北京时间19点美国几点美国东部时间在UTC-5时区,北京时间是UTC+8时区,正常情况下美东时间比北京时间晚13个小时。需要注意的是美国有夏令时,而北京没有夏令时,美国夏令时时会让时间快一个小时,让人民早起早睡,所以在美国

  • 铝电解电容分类方法

    铝电解电容分类方法铝电解电容分类方法各大厂商的分类方式基本一致,主要按以下几个指标:极性容量耐压温度特性ESR寿命其他一般来说,电解电容实物上都会印上容值耐压值系列号分类的系列号,则各个厂商都有所不同,没有统一标准,比较常用到的都是各家的标准品,例如VT,RVT等。…

  • vue $attrs的使用

    vue $attrs的使用$attrs的使用vue$attrs是在vue的2.40版本以上添加的。项目中有多层组件传参可以使用$attrs,可以使代码更加美观,更加简洁,维护代码的时候更方便。如果使用普通的父子组件传参prop和$emit,$on会很繁琐;如果使用vuex会大材小用,只是在这几个组件中使用,没必要使用vuex;使用事件总线eventBus,使用不恰当的话,有可能会出现事件多次执行。如果给组件传递…

    2022年10月18日
  • Escape/Unescape,HTML实体编码,敲击码(Tap code),摩尔斯电码(Morse Code)

    1.Escape/Unescape加密解码/编码解码,又叫%u编码,采用UTF-16BE模式,Escape编码/加密,就是字符对应UTF-1616进制表示方式前面加%u。Unescape解码/解密,就是去掉”%u”后,将16进制字符还原后,由utf-16转码到自己目标字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”。2.敲击码(Tapcode)敲击码(Tapcode)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音

  • goland 2021.11.4 激活【中文破解版】

    (goland 2021.11.4 激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号