在 ubuntu 上更新软件的正确方法是什么?

在 ubuntu 上更新软件的正确方法是什么?

您好:)根据我使用 ubuntu 下载软件的方式,软件更新有何不同?例如,当我使用 apt-package manager 手动下载它时,或者当我将一些存储库添加到 /etc/apt/sources.list 时。还可以使用扁平包或快照下载软件。

当我调用 sudo apt update 时实际上会发生什么?检查哪些存储库?

答案1

在Ubuntu上安装软件包的方法有很多,有些你没有提到。为了给出完整的答案,我想描述一下所有这些:

通过包管理器安装,默认存储库

包管理器(无论是aptapt-getaptitude其他)有一个可从中下载软件的位置列表。该软件通常值得信赖,可以正常工作并且维护良好。这样的位置称为“存储库”。存储库的 URL 存储在/etc/apt/sources.list.运行时apt update,包管理器会查询存储库,以便知道哪些软件包可用。它将信息存储在本地缓存中。

通过 安装包时apt install,包管理器会检查其本地缓存以确定从哪里下载包。然后它会下载该包。该软件包以 DEB 格式的存档形式提供。存档将被解压到您的本地文件系统中。此外,该软件包可能包含一些代码,这些代码将自动执行一次以设置新安装的软件。

apt upgrade当通过或更新软件时apt dist-upgrade,会下载现有软件包的新版本。当前版本已从系统中删除。包管理器知道要删除哪些文件,因为它知道哪个文件是由哪个包提供的。然后按照上述方法安装新版本。

通过包管理器、自定义存储库安装

还可以通过添加 URL 来扩展默认存储库/etc/apt/sources.list,尽管现在/etc/apt/sources.list.d/应该使用。包管理器会将它们视为默认存储库。安装、删除和更新的工作原理完全相同。用户在添加自定义存储库时必须小心——它们必须是为系统创建的。
旁注:根据个人经验,我建议在从一个 Ubuntu 版本升级到下一个版本之前删除从非默认存储库安装的所有软件包。

通过包管理器安装,手动下载

您还可以手动下载 DEB 文件。您可以通过安装该软件包dpkg -i。包管理器永远不会更新这个包,因为它不知道它来自哪里。

通过卡扣安装

snapcraft 是包管理器的替代品,不仅与 Debian 衍生的 Ubuntu 兼容,而且与所有 Linux 发行版兼容。快照包不会解压到系统中。此外,它被安装(其内容直接可见)并且软件在系统内的受控环境中执行(想想沙箱和虚拟机)。移除卡扣时,封装将被卸载并移除。更新的发生类似。

完全手动安装

您还可以下载一堆文件并将它们放在硬盘驱动器上的适当位置。定制软件通常进入/opt。二进制文件(或它们的链接)安装到$PATH.这样,就可以轻松访问该软件。包管理器对此软件一无所知。更新也需要手动安装(有时软件有自我更新功能,很难)。定制软件也可以安装到类似/usr/local或什至 的地方/usr。除非您真正知道自己在做什么,否则不应执行后者。自定义软件可能会与包管理器控制的软件发生严重冲突。

类似问题:
使用 apt-get 更新 Ubuntu 软件
我通过 Apper 还是通过 Debian 中的软件中心更新软件包有什么区别吗?

答案2

我建议仅安装经销商提供的来源的软件。仅当您确切知道自己在做什么时,才手动添加存储库或手动安装软件包或其他软件。至于sudo apt update作用是什么的问题:它从您配置的所有存储库中获取最新的可用软件包。这同样适用于按扣或扁平包装。从中央存储库安装它们后,您将以类似于apt update.

答案3

apt update更新存储库/etc/apt/sources.list中以及/etc/apt/sources.list.d/.首先运行它很重要,这样才能apt了解更新版本的软件包。

apt upgrade实际上升级已安装的具有可用更新版本的软件包,前提是它们是通过安装的apt并且它们来自的存储库位于上述位置。

来自 的包snap不会flatpak被升级,apt因为存储库不同并且不会在apt的缓存/数据库中。

答案4

apt update检查您的所有软件源,因此这是发行版的存储库和您添加的任何 PPA。据我所知,这不包括 flatpak (用于flatpak update此目的),但如果发行版是这样安装的,则可以包括 snap。当然,您手动安装的东西(下载的 .deb 或其他安装方式)不会以这种方式进行检查。

但请记住,Ubuntu 有自己的更新政策,部分发行版会更新,直到发行版生命周期结束(“主”存储库),其他发行版很少或没有更新(“宇宙”存储库和其他)(以及大多数发行版)快照安装的软件包不在“main”中)。

相关内容