零
先看目录
紧接上一集Linux命令
apt update 与 apt upgrade
aptupdate# 更新本地软件源仓库# 刷新一下软件商店aptupgrade# 把所有软件包都更新到最新版本# 更具本地软件商店,把系统下载的软件全部更新到最新版本# 一般先执行apt update,在执行pat upgradeapt install 安装流程
本地存有一份软件源清单/etc/apt/sources.list (记录了所有官方软件源仓库的的地址,软件名,版本,依赖关系…)
以安装vim为例,展示pat install的下载安装过程 :
apt install vim ;
解析指令,匹配软件包
系统读取你输入的软件包vim,在本地最新的软件源中,精准的找到对应的软件包,确认这个软件包在软件源仓库中真实存在,同时确认该软件包的最新可用版本号自动分析完整的依赖链,列出所需要的依赖包
这是apt的核心功能之一 : 自动解决依赖问题
系统会读取软件包的配置信息,找出运行所必须的所有依赖,同时还会分析依赖包的依赖包,总之就是列出完整的依赖链终端弹窗确认,等待你的Y/N (-y时自动确认)
系统会在终端显示 : 本次需要下载的所有包的大小,安装后占用的磁盘空间,以及,一块一共要下载XX个包,安装XX个包,最后提醒 : Do you want to continue? [Y/n]建立网络连接,从软件源仓库下载所有包
系统根据软件源清单记录的’官方软件源仓库’,建立网络连接,开始下载
下载内容 : 第二步列出的’目标软件包+所有依赖包’
下载位置 : 全部统一保存到系统固定缓存目录
下载规则 : 先下载依赖包,再下载软件包本体,保证依赖完整校验下载的安装包完整性
核对每个包的校验码,确认下载的文件和官方仓库里的文件完全一致,没有损坏、没有被篡改;
如果某个包校验失败(比如下载中断、文件损坏),系统会提示「下载失败」,自动重新下载该包,直到下载完整无损的版本。开始执行本地安装 解压+部署所有包
这一步的操作在本地完成,不需要访问网络
1.解压当前.deb安装包
2.把包里的各类文件,精准部署到系统指定功能目录完成安装,更新系统软件清单
系统会自动更新本地软件清单,在清单中记录[该软件已安装+当前版本号]
在终端输出安装结果,流程结束
简单来说 :
本地确认要在哪里下载,要下载什么 ------>联网取官方下载到缓存区------>本地安装
访问网络前的准备工作 : 根据输入的命令,在本地软件源中找到该软件包的仓库地址和所需要的所有依赖包名单
联网,在官方仓库中下载需要的[软件包本体+所有依赖包]到缓存区
校验是否需要的所有包都下载完成
接下来不需要网络,在本地执行安装,解压,部署所有包
apt download命令
apt download : 只下载软件包本体到当前工作目录(不下载依赖,不安装)
这个操作可以拿到一个独立的,纯净的,属于你的.deb文件
使用场景1
你只是想帮朋友下载软件包,自己的电脑根本不需要安装这个软件
你下载软件包本体,然后传给朋友就行了(他自己在官方软件源下载依赖包,完成安装)
使用场景2
给多台Ubuntu电脑传软件,省流量,省时间,提速快
只需要在一个电脑上执行一次apt download
包名,下载好软件包,然后用U盘/局域网/微信传文件的方式,把这个.deb包传到其他电脑
好处 : 其他电脑不需要各自联网下载,直接安装就行了,省掉了重复的下载时间和流量
使用场景3
精准下载指定版本的软件包,自由切换版本,避坑新版本BUG
apt install 包名,默认只能安装最新版本,如果这个新版本有BUG,闪退,功能不适配…,你想装旧版本,用apt install几乎做不到
# apt download 包名=版本号# 精准下载你想要的任意指定版本的纯净本体包aptdownloadfirefox=119.0-1ubuntu1