怎么理解ubuntu中的软件包管理器apt和dpkg
大家都知道在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相关推荐
- unity5.6.4安装包_Unity 2020.1中的软件包管理器更新
unity5.6.4安装包 As more features in different stages of development move into packages, choosing the r ...
- 深入理解 Python 中的上下文管理器
图|李思瑶 文|MING 提示:前面的内容较为基础,重点知识在后半段. with 这个关键字,对于每一学习Python的人,都不会陌生. 操作文本对象的时候,几乎所有的人都会让我们要用 with op ...
- ubuntu中snap包管理器的安装、更新删除与简单使用
概述 什么是snap,snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立.所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序 ...
- <Linux> 软件包管理器yum及编辑器vim的使用
文章目录 一.yum的背景知识 1. 商业生态 2. 开源生态 3. 软件生态本土化 二.yum 的基本使用 1. 查看软件包 2. 安装.卸载.搜索软件 实现Windows下和Linux下文件互传 ...
- 【Linux】软件包管理器 yum 与编辑器 vim 的基本使用
文章目录 一.yum 背景知识 1.商业生态 2.开源生态 3.软件生态本土化 二.yum 的基本使用 1.查看软件包 2.安装软件 3.卸载软件 三.vim 的基本使用 1.vim 的基本概念 2. ...
- 又一个短小精悍的软件包管理器-pnpm
一个上班摸鱼的契机,看到了pnpm这个新名词,带着我的一丝好奇和一丝疑问,就想着了解一下. 什么是pnpm? pnpm是我们正常印象中的软件包管理器,类似的我们肯定用过淘宝的cnpm,无非是如何又全又 ...
- yum(Fedora和RedHat以及SUSE中的Shell前端软件包管理器)命令详解
yum官方网站:http://yum.baseurl.org/ Fedora对于yum的介绍:http://fedoraproject.org/wiki/Yum yum(全称为 Yellow dog ...
- linux如何运行synaptic,Linux_Ubuntu 7.04 Synaptic软件包管理器功能,Ubuntu的新立得软件包管理器(Syn - phpStudy...
Ubuntu 7.04 Synaptic软件包管理器功能 Ubuntu的新立得软件包管理器(Synaptic Package Manager)是APT(Advanced Package Tool)的图 ...
- helm部署仓库中没有的包_Kubernetes的Helm软件包管理器简介
helm部署仓库中没有的包 Before we dive into the Helm package manager, I'm going to explain some key concepts t ...
最新文章
- 用javascript做删除时的提示信息
- web异步开发——json
- 1132:石头剪子布
- 设计模式之模版方法模式的钩子方法
- 应用配置管理ACM 使用场景快速入门
- Python-进程相关概念
- IP设置应用v1.0
- 超详细 | 接口自动化测试总结与分享入门篇
- 导航菜单点击后高亮显示
- 分享一个在线生成接口文档工具
- (一)PC 机与单片机通信(RS232 协议)【800个电子设计大赛资料合集】
- android删除短信权限,android删除短信(绕过权限)
- 成功解决 -- flink.shaded.guava18.NumberFormatException: Not a version
- 坚持自己的坚持,以不二的姿态坚持到底
- 乐优商城第六篇:域名访问与品牌查询
- 大恒相机开发实践(3)——参数设置
- Unity3D--加载界面、开始界面
- 面试续与如何做自己的职业规划
- javase笔记基础篇
- 【通俗易懂】无线通信读书笔记02(自由空间路径损耗、两径模型)
热门文章
- Linux/Centos Tomcat 配置日志切分以及脚本自动清理
- 运筹学上机实验 - 单纯形方法的两阶段法
- React优化性能的经验教训
- 给Vista系统加入一键还原功能
- php单文件压缩的功能函数的实现
- 请求页式存储管理中页面置换算法的模拟设计_操作系统-存储管理与文件管理-笔记...
- python读取图片上的文字_Python帮你读取图片中的文字(OCR)
- android studio lbs项目,android studio use 百度LBS have JNICommonMemCache
- kotlin和java差别_Kotlin和Java的常用方法的区别总结
- html 和jsp 引入jquery_不用jsp怎么实现前后端交互?给萌新后端的ajax教程(1)