您好:)根据我使用ubuntu下载软件的方式,软件更新有何不同?例如,当我使用apt包管理器手动下载它时,或者当我向/etc/apt/ some .列表添加一些存储库时。也有机会下载软件使用平台包或快照。
当我称之为sudo apt更新时,实际会发生什么?哪些存储库被检查?
发布于 2020-03-21 11:22:45
有许多方法可以在Ubuntu上安装软件包,其中有些您还没有提到。为了给出一个完整的答案,我想描述一下所有这些问题:
按包管理器安装
包管理器(不管是apt、apt-get、aptitude还是诸如此类的东西)有一个可以下载软件的位置列表。这个软件通常是值得信赖的,已知的工作和大部分良好的维护。这样的位置被称为“存储库”。存储库的URL存储在/etc/apt/sources.list中。在运行apt update时,包管理器查询存储库,以便它知道哪些软件包可用。它将信息存储在本地缓存中。
通过apt install安装包时,包管理器将检查其本地缓存,以确定从何处下载包。然后下载软件包。该包以DEB格式作为存档提供。档案被解压缩到您的本地文件系统中。此外,包可能包含一些代码,这些代码将自动执行一次,用于设置新安装的软件。
通过apt upgrade或apt dist-upgrade更新软件时,将下载现有软件包的新版本。当前版本将从系统中删除。包管理器知道要删除哪些文件,因为它知道哪个文件是由哪个包提供的。然后,按照上文所述安装新版本。
按包管理器安装
还可以通过向/etc/apt/sources.list添加URL来扩展默认存储库,尽管现在应该使用/etc/apt/sources.list.d/。包管理器将把它们视为默认的存储库。安装、删除和更新的工作原理完全相同。用户在添加自定义存储库时必须小心--它们必须是为系统创建的。
注意:根据个人经验,在从一个Ubuntu版本升级到下一个版本之前,我建议删除所有安装在非默认存储库中的软件包。
按包管理器安装
您还可以手动下载DEB文件。您可以通过dpkg -i安装该软件包。包管理器将永远不会更新此包,因为它不知道它来自何处。
通过snap安装
您还可以下载一堆文件,并将它们放置在硬盘上的适当位置。定制软件经常进入/opt。二进制文件(或指向它们的链接)被安装到$PATH的一个目录中。这样,软件就可以很容易地访问。软件包管理器对此软件一无所知。更新也需要手动安装(有时该软件具有自更新功能,很难实现)。定制软件也可以安装到像/usr/local甚至/usr这样的地方。除非你真正知道你在做什么,否则不应该做后一件事。自定义软件可能与软件包管理器控制的软件发生可怕的冲突。
类似的问题:
发布于 2020-03-21 11:22:33
我建议只从你的经销商提供的来源安装软件。只有手动添加存储库或手动安装软件包或其他软件,如果您完全知道自己在做什么。至于sudo apt update做什么的问题:它从您配置的所有存储库中获取最新可用的包。这同样适用于快照或平板包装。一旦您从中央存储库安装了它们,您将以类似于apt update的方式获得更新。
发布于 2020-03-21 11:25:23
apt update从/etc/apt/sources.list中的存储库和/etc/apt/sources.list.d/中的任何文件中更新可用包的列表。首先运行这个程序非常重要,这样apt就知道包的更新版本了。
apt upgrade实际上升级了安装了新版本的包,条件是它们是通过apt安装的,并且它们来自的存储库位于上面的位置。
来自snap和flatpak的包不会被apt升级,因为存储库是不同的,并且不会在apt的S缓存/数据库中。
https://unix.stackexchange.com/questions/574055
复制相似问题