我有一个关于 Ubuntu 的“apt-get update/dist-upgrade”行为的基本问题。我不确定运行“apt-get update/dist-upgrade”时更新了哪些软件包。我在其他 SO 论坛和 Ubuntu 网站上读到,运行命令时 /etc/apt/sources.list 中列出的所有软件包都会更新,这是有道理的。但是,我还了解到我使用“apt-get install”安装的任何软件包也会更新。
然而,当我查看sources.list时,只列出了几个Ubuntu存储库,并且我安装的许多第三方软件包都不包含在该文件中(例如okular、git或手动安装的任何其他软件包)。
那么“apt-get update”实际上会更新所有这些软件包吗?如果是这样,考虑到它们没有在 /etc/apt/sources.list 中枚举,它如何知道更新所有其他软件包?
最后,如果我只想手动检查其中一个程序(例如 git)是否有更新并安装它们(如果有),我该怎么做?
答案1
echo $PATH | perl -pe 's/:/\n/g' | xargs ls -1 | sort
将列出路径中所有已安装的命令(对我来说是 1,103 个)。请注意,单个应用程序可以有许多命令,并且默认情况下某些命令不在您的路径中。
apt list --installed
将列出已安装的(对我来说 556 个)软件包。请注意,单个包可以有许多应用程序,或者可能只有库而没有应用程序。
apt list
将列出默认存储库中的所有(对我来说 52,254 个)可安装包。
cat /etc/apt/sources.list && cat /etc/apt/sources.list.d/*.list
将列出所有(对我来说 16 个)已安装的存储库。
curl 'https://launchpad.net/ubuntu/+ppas?name_filter=&start=0' | grep -A 1 "<td><a"
将列出(分页)所有 (24,538) 个个人包档案(存储库),其中大部分可能无法在 c2 架构上工作。请注意,也可以从其他地方获取软件,但是如果您从不提供存储库的外部源安装软件包,则 apt 无法更新该软件包。
答案2
/etc/apt/sources.list
列表包来源,即下载包的站点。它没有列出单独的包。
Ubuntu 本身分发了很多软件。只要它是开源的,没有严重的错误,并且得到积极维护,它就可以有资格的对于在 Ubuntu 中(至少在“宇宙”存储库,重新分配最多德班包)。 (这些不是必要条件,但它们是最常见的情况。)它实际上可能在 Ubuntu 中,也可能不在:另一个标准是必须有一名志愿者来处理该软件包(除非它是该软件包的小核心的一部分) Canonical 会花钱请人来做)。类似的套餐奥库拉和git是Ubuntu的一部分(分别是universe和main)。所以相应的行sources.list
是带有 的行之一archive.ubuntu.com
。
您可以在线获取有关 Ubuntu 软件包的信息http://packages.ubuntu.com/,或者在您的机器上使用易于软件套件。运行以获取有关信息(是否已安装)。运行以查看该包的已安装版本和可用版本的摘要。运行以搜索描述包含.apt-cache show PACKAGE
PACKAGE
apt-cache policy PACKAGE
apt-cache search FOO
FOO
运行apt-get update
会更新查询的可用包列表的本地副本apt-cache
。 Ubuntu 设置了一项日常工作来执行此操作,因此如果您的计算机具有 Internet 连接,您的计算机将具有几乎最新的版本(但在安装或更新软件包之前手动运行它仍然是一个好主意) 。apt-get update
不会对您计算机上安装的软件进行任何修改。运行apt-get upgrade
(或变体之一XXX-upgrade
)会根据软件包列表的本地副本将已安装的软件包升级到最新的合格版本。
Ubuntu 发布的版本可能不是原始开发者提供的最新版本。 Ubuntu 从源代码编译所有程序(除了一些非开源程序),测试它们是否在 main 中(如果它们在 Universe 中则不然),并每 6 个月发布一次版本,因此通常最终会使用已使用 3-9 个月的软件。这通常不是问题,因为很少需要最新的、未经尝试的程序版本。诸如安全问题之类的关键错误确实会在发布周期之外得到快速更新(它们是向后移植的,即修复应用于已发布的版本,而不是立即发布最新版本)。如果您绝对想要最新版本,您可以寻找苯丙胺(Ubuntu 不维护额外软件包的来源,质量各不相同),或者尝试使用最新版本Debian 不稳定,或重新编译上游源代码 - 但大多数人再次不需要它。
答案3
除了经典/etc/apt/sources.list
文件之外,它还会读取安装在
/etc/apt/sources.list.d/*
它们的工作原理相同,但通过拥有多个文件,管理变得更容易(无需自动配置文件编辑)。