大家都知道在ubuntu下,安装软件经常会用到一个命令就是“apt-get install”,这里的apt命令,其实是linux系统下一个通用的软件包管理器,使用该命令可以很方便的用来安装和卸载软件。然而,很多同学应该也知道,ubuntu下,还有另外一个软件包管理器,叫做dpkg,它也可以实现软件的安装和卸载。那么,它们二者究竟各自负责什么,又有什么区别呢?

1、apt命令

Advanced Packaging Tool(apt)是Linux下的一款安装包管理工具,是一个客户/服务器系统。在服务器上先复制所有DEB包(DEB是Debian软件包格式的文件扩展名),然后用APT的分析工具(genbasedir)根据每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在一个文件中,这个文件称为DEB 索引清单,APT服务器的DEB索引清单置于base文件夹内。一旦APT 服务器内的DEB有所变动,一定要使用genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单,从而可以获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。

当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压置放于/var/state/apt/lists/,而客户端使用apt-get install或apt-get upgrade命令的时候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已安装、未安装或是可以升级的。

apt命令的几个缺省路径:

  • 下载的软件存放位置:/var/cache/apt/archives
  • 安装后软件默认位置:/usr/share
  • 可执行文件位置:/usr/bin
  • 配置文件位置:/etc
  • 库文件位置:/usr/lib

常用的apt命令集:

sudo apt-get install             # package 安装包
sudo apt-get reinstall          # package - - reinstall 重新安装包
sudo apt-get remove             # package 删除包
sudo apt-get remove --purge         # package 删除包,包括删除配置文件等
sudo apt-get autoremove --purge     # package 删除包及其依赖的软件包配置文件等
sudo apt-get update             # 更新源
sudo apt-get upgrade            # 更新已安装的包
sudo apt-get dist-upgrade       # 升级系统

2、dpkg命令

Ubuntu是基于Debian的Linux系统,而Debian系统的软件是使用APT和dpkg进行管理。dpkg是"Debian Packager"的简写,是一个底层的软件包管理工具。

可以输入dpkg -l来查看软件的状态,输入dpkg -P来卸载软件。因为dpkg --remove只是删除安装的文件,但不删除配置文件。而dpkg --purge则安装文件和配置文件都删除。

常用的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 -s package         # 显示已安装包的信息。
dpkg -reconfigure package   # 重新配制一个已经安装的包,如果它使用的是 debconf (debconf 为包安装提供了一个统一的配置界面)。
dpkg -S package         # 查看软件在哪个包里;

3、区别

  • apt是会解决和安装模块的依赖问题,并会咨询软件仓库,是在线安装。
  • dpkg只能安装本地的deb文件,不会关心Ubuntu的软件仓库内的软件,不会解决模块的依赖关系。
  • 两者的区别是dpkg绕过apt包管理数据库对软件包进行操作,所以你用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装。

怎么理解ubuntu中的软件包管理器apt和dpkg相关推荐

  1. unity5.6.4安装包_Unity 2020.1中的软件包管理器更新

    unity5.6.4安装包 As more features in different stages of development move into packages, choosing the r ...

  2. 深入理解 Python 中的上下文管理器

    图|李思瑶 文|MING 提示:前面的内容较为基础,重点知识在后半段. with 这个关键字,对于每一学习Python的人,都不会陌生. 操作文本对象的时候,几乎所有的人都会让我们要用 with op ...

  3. ubuntu中snap包管理器的安装、更新删除与简单使用

    概述 什么是snap,snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立.所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序 ...

  4. <Linux> 软件包管理器yum及编辑器vim的使用

    文章目录 一.yum的背景知识 1. 商业生态 2. 开源生态 3. 软件生态本土化 二.yum 的基本使用 1. 查看软件包 2. 安装.卸载.搜索软件 实现Windows下和Linux下文件互传 ...

  5. 【Linux】软件包管理器 yum 与编辑器 vim 的基本使用

    文章目录 一.yum 背景知识 1.商业生态 2.开源生态 3.软件生态本土化 二.yum 的基本使用 1.查看软件包 2.安装软件 3.卸载软件 三.vim 的基本使用 1.vim 的基本概念 2. ...

  6. 又一个短小精悍的软件包管理器-pnpm

    一个上班摸鱼的契机,看到了pnpm这个新名词,带着我的一丝好奇和一丝疑问,就想着了解一下. 什么是pnpm? pnpm是我们正常印象中的软件包管理器,类似的我们肯定用过淘宝的cnpm,无非是如何又全又 ...

  7. yum(Fedora和RedHat以及SUSE中的Shell前端软件包管理器)命令详解

    yum官方网站:http://yum.baseurl.org/ Fedora对于yum的介绍:http://fedoraproject.org/wiki/Yum yum(全称为 Yellow dog ...

  8. linux如何运行synaptic,Linux_Ubuntu 7.04 Synaptic软件包管理器功能,Ubuntu的新立得软件包管理器(Syn - phpStudy...

    Ubuntu 7.04 Synaptic软件包管理器功能 Ubuntu的新立得软件包管理器(Synaptic Package Manager)是APT(Advanced Package Tool)的图 ...

  9. helm部署仓库中没有的包_Kubernetes的Helm软件包管理器简介

    helm部署仓库中没有的包 Before we dive into the Helm package manager, I'm going to explain some key concepts t ...

最新文章

  1. 用javascript做删除时的提示信息
  2. web异步开发——json
  3. 1132:石头剪子布
  4. 设计模式之模版方法模式的钩子方法
  5. 应用配置管理ACM 使用场景快速入门
  6. Python-进程相关概念
  7. IP设置应用v1.0
  8. 超详细 | 接口自动化测试总结与分享入门篇
  9. 导航菜单点击后高亮显示
  10. 分享一个在线生成接口文档工具
  11. (一)PC 机与单片机通信(RS232 协议)【800个电子设计大赛资料合集】
  12. android删除短信权限,android删除短信(绕过权限)
  13. 成功解决 -- flink.shaded.guava18.NumberFormatException: Not a version
  14. 坚持自己的坚持,以不二的姿态坚持到底
  15. 乐优商城第六篇:域名访问与品牌查询
  16. 大恒相机开发实践(3)——参数设置
  17. Unity3D--加载界面、开始界面
  18. 面试续与如何做自己的职业规划
  19. javase笔记基础篇
  20. 【通俗易懂】无线通信读书笔记02(自由空间路径损耗、两径模型)

热门文章

  1. Linux/Centos Tomcat 配置日志切分以及脚本自动清理
  2. 运筹学上机实验 - 单纯形方法的两阶段法
  3. React优化性能的经验教训
  4. 给Vista系统加入一键还原功能
  5. php单文件压缩的功能函数的实现
  6. 请求页式存储管理中页面置换算法的模拟设计_操作系统-存储管理与文件管理-笔记...
  7. python读取图片上的文字_Python帮你读取图片中的文字(OCR)
  8. android studio lbs项目,android studio use 百度LBS have JNICommonMemCache
  9. kotlin和java差别_Kotlin和Java的常用方法的区别总结
  10. html 和jsp 引入jquery_不用jsp怎么实现前后端交互?给萌新后端的ajax教程(1)