Linux--基础知识点--6.1--update/upgrade/dist-upgrade区别

1 update/upgrade/dist-upgrade

1.1 root@zhangsan-PC:~# apt update

注:apt update 的作用是从/etc/apt/sources.list文件中定义的源中获取的最新的软件包列表。

即运行 apt update 并没有更新软件,而是相当于 windows 下面的检查更新,获取的是软件的状态。

root@zhangsan:~# apt update #执行这个命令,可以查看更新列表
在这里插入图片描述
会下载 https://community-packages.deepin.com/deepin/dists/apricot 和https://community-store-packages.deepin.com/appstore/dists/eagle中两个路径下的InRelease(即软件包列表)文件。
此处以https://community-packages.deepin.com/deepin/dists/apricot为例
在这里插入图片描述
把 InRelease 下载到本地,此处以https://community-packages.deepin.com/deepin/dists/airicot 下的InRelease文件为例,打开如下图:
在这里插入图片描述

1.2 root@zhangsan-PC:~# apt upgrade

apt upgrade 则是根据 update 命令获取的最新的软件包列表,去真正地更新软件。

1.3 root@zhangsan-PC:~# apt dist-upgrade

apt dist-upgrade 则是根据 update 命令获取的最新的软件包列表,去真正地更新软件。

1.4 apt upgrade 和 dist-upgrade 的差别:

upgrade:系统将现有的 Package 升级,如果有相依性的问题,即新Package的依赖与现有Package的依赖不同,则保持现有Package,不会升级到新Package。

dist-upgrade:可以聪明的解决相依性的问题,如果有相依性问题,会首先将现有Package的依赖更新为新Package的依赖,然后再将现有Package更新为新Package(所以通常 dist-upgrade 会被认为是有点风险的升级)

例如软件包 a 原先依赖 b c d,但是在源里面可能已经升级了,现在是 a 依赖 b c e。这种情况下, dist-upgrade 会删除 d 安装 e,并把 a 软件包升级,而 upgrade 会认为依赖关系改变而拒绝升级 a 软件包。如图:
在这里插入图片描述
对于个人和服务器上的操作一般情况使用:apt upgrade 稳定可靠升级就可以满足我们的需求了。

最后,需要注意的一点是,每回更新乊前,我们需要先运行 update,然后才能运行 upgrade 和dist-upgrade,因为相当于update 命令获取了包的一些信息,比如大小和版本号,然后再来运行 upgrade 去下载包,如果没有获取包的信息,那么 upgrade 就是无效的啦!

2 /etc/apt/sources.list 详解

不同Linux系统的该文件稍有不同,具体情况具体查找。此处以deepin为例。

记录更新源的文件:/etc/apt/sources.list

/etc/apt/sources.list 是包管理工具 apt 所用的记录软件包仓库位置的配置文件,同样的还有位于 /etc/apt/sources.list.d/*.list 的各文件。

如何修改默认的更新源呢:

  • 首先备份:cp /etc/apt/sources.list etc/apt/sources.list_backup
  • gedit /etc/apt/sources.list

更新源的格式:

deb URI distribution component [component2] [component3]

deb-src URI distribution component [component2] [component3]

debdebian包目录,档案类型为二进制预编译软件包,一般我们所用的档案类型。
deb-src源码目录,档案类型为用于编译二进制软件包的源代码。根据需要使用。

更新源的格式举例:

以更新源https://community-packages.deepin.com/deepin为例

(1). 找到一个镜像的URI,如https://community-packages.deepin.com/deepin;

(2). 进入dists文件夹,找到自己安装的distribution对应的目录,进入。

这里只有apricot

进入https://community-packages.deepin.com/deepin/dists/aricot;

(3). 记录提供的components名,这里有main, contrib, non-free
mian:包含符合 DFSG 指导原则的自由软件包,而且这些软件包不依赖不符合该指导原则的软件包。这些软件包被视为 Debian 发型版的一部分。

contrib:包含符合 DFSG 指导原则的自由软件包,不过这些软件包依赖不在 main 分类中的软件包。

non-free:包含不符合 DFSG 指导原则的非自由软件包。

(4). 则对应的更新源写法为:

deb [by-hash=force] https://community-packages.deepin.com/deepin aricot main contrib non-free

注意:每行一个distribution, 多个components。因为每行只能有一个distribution, 所以同一个uri可能写多个更新源。

想用GCC等编译工具,此时需要安装相应的包,对应GCC的安装build-essential就足够了,这里包含编译c/c++需要的软件和头文件。

apt install build-essential



[参考博客]
apt update ,apt upgrade 和 apt dist-upgrade 的区别
/etc/apt/sources.list 详解
linux update更新源

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值