“sudo apt-get update”有什么作用?

Ely*_*ium 640 updates command-line apt

我想知道有什么sudo apt-get update作用?

它更新什么?

nan*_*rad 661

简而言之,apt-get update实际上并没有安装新版本的软件。相反,它会更新需要升级的包的升级包列表,以及刚刚进入存储库的新包。

  • apt-get update从存储库下载包列表并“更新”它们以获取有关包及其依赖项的最新版本的信息。它将为所有存储库和 PPA 执行此操作。来自http://linux.die.net/man/8/apt-get

    用于从其来源重新同步包索引文件。从/etc/apt/sources.list(5) 中指定的位置获取可用包的索引。应该始终在升级或 dist-upgrade 之前执行更新。

  • apt-get upgrade如果 APT 通过apt-get update.

    来自http://linux.die.net/man/8/apt-get

    用于从/etc/apt/sources.list(5) 中列举的来源安装当前安装在系统上的所有软件包的最新版本。当前安装的带有可用新版本的软件包被检索和升级;在任何情况下都不会删除当前已安装的软件包,也不会检索和安装尚未安装的软件包。如果不更改另一个包的安装状态就无法升级当前安装的包的新版本,将保留其当前版本。[强调我的] 必须首先执行更新,以便 apt-get 知道有新版本的软件包可用。

  • apt-get dist-upgrade将完成由 完成的相同工作apt-get upgrade,此外它还将智能地处理依赖项,因此它可能会删除过时的包或添加新的包。在这里看到:什么是“dist-upgrade”,为什么它比“upgrade”升级更多?

    来自http://linux.die.net/man/8/apt-get

    除了执行升级功能外,该选项还智能处理新版本软件包的依赖关系变化;apt-get 有一个“智能”的冲突解决系统,它会在必要时尝试升级最重要的软件包,而牺牲不太重要的软件包。的/etc/apt/sources.list(5)文件包含要从中检索所需的包的文件位置的列表。另请参阅 apt_preferences(5) 以了解覆盖单个包的常规设置的机制。

您可以将命令与&&如下组合:

sudo apt-get update && sudo apt-get install foo bar baz foo-dev foo-dbg
Run Code Online (Sandbox Code Playgroud)

或者根据依赖项的版本要求获取最新版本:

sudo apt-get update && sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

您需要sudo两次,但由于sudo默认情况下不会在自上次sudo操作后的 5 分钟左右提示您输入密码,因此只会提示您输入一次密码(或根本不会提示)。

  • @JohnnyQ 如果您不运行该命令,那么您可能会安装过时的软件包。 (18认同)
  • 每当我们安装软件包时,我们是否总是需要运行“sudo apt-get update”命令?如果我们不这样做有什么坏处? (15认同)
  • @JohnnyQ,如果你的 apt-get 更新很慢,那么你的 apt-get dist-upgrade 也会很慢,所以这并不是不先进行 apt-get update 的真正理由。顺便说一句,您可以通过查看文件夹 /etc/apt/sources.d/ 来加快您的 apt-get 更新,看看您是否添加了任何自定义存储库,其中一个可能没有响应,这会减慢整个更新过程。 (3认同)
  • 顺便说一句,“apt”代表高级封装工具(https://wiki.debian.org/Apt“什么是 APT?”)。前几天学到的东西,想分享一下。(“apt”经常出现在 man apt-get、man apt 中,但我以前从未见过扩展的首字母缩写词)。 (2认同)

Ale*_*lex 57

Google 搜索可以为您提供几乎所有终端命令的定义,就像终端中的 --help 一样。例如,

apt-get --help
Run Code Online (Sandbox Code Playgroud)

sudo apt-get update 主要分为三部分:

sudo
Run Code Online (Sandbox Code Playgroud)

使用超级用户 (root) 功能执行以下命令。许多需要修改系统文件或安装应用程序的操作需要额外的权限才能完成。

apt-get
Run Code Online (Sandbox Code Playgroud)

是 Ubuntu 用来安装、删除和管理软件包的命令行工具

update
Run Code Online (Sandbox Code Playgroud)

是 apt-get 程序使用的一个选项,它从 Internet 上的服务器更新包列表。软件包列表为 apt-get 实用程序提供了有关可以使用 apt-get 安装的软件包的重要信息。apt-get 使用这些列表来确定在给出安装命令时要安装哪些软件。例如

sudo apt-get install guake
Run Code Online (Sandbox Code Playgroud)

将安装 Guake 终端,因为它当前列在我计算机的本地软件列表中。然而,这可能不是合适的版本,或者如果程序是新的,它可能根本不可用。因此,当使用 apt-get 安装软件时,您通常键入

sudo apt-get update
sudo apt-get install <package>
Run Code Online (Sandbox Code Playgroud)

确保 apt-get 知道安装最新版本的软件包。

另一个有用的信息来源是help.ubuntu.com网站。例如,如果您搜索该站点,apt-get您会发现AptGet/Howto作为结果之一。

  • 使用 `&amp;&amp;` 意味着第二个命令只有在第一个成功时才会运行。如果您不关心第一个命令是否成功,请改用`;`。 (10认同)
  • 谷歌搜索让我找到了这个问题/答案。仅供参考;) (5认同)

nan*_*rad 23

运行sudo apt-get update只是确保您的所有存储库和 PPA 中的软件包列表是最新的。如果你不运行这个命令,你可能会得到你正在安装的各种软件包的旧版本,或者更糟糕的是,依赖问题。如果您刚刚添加了 PPA 并且尚未更新,则 PPA 中的任何内容都将不起作用,因为您没有来自该 PPA 或存储库的包列表。

简而言之:强烈建议sudo apt-get update在安装之前运行,但如果您真的时间紧迫,除非您自上次apt-get update.


Sam*_*Sam 14

它会更新您计算机上的可用软件列表。

您的计算机有一个列表(如目录),其中包含 Ubuntu 服务器可用的所有可用软件。但是可用的软件和版本可能会发生变化,因此“更新”将命中服务器并查看可用的软件以更新其本地列表(或目录)。

请注意,这update与 不同upgrade。如上所述,更新将获取可用软件并更新列表,同时upgrade将安装计算机上安装的新版本软件(实际软件更新)。

要实际升级您的软件(而不是“更新”列表),请执行命令

sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

这通常在“更新”之后执行。


小智 13

您需要apt-get update在安装新软件包之前运行一次,因为这会更新本地存储库信息。

如果您要在短时间内安装多个软件包,则无需apt-get update在每次安装之前运行;在第一次安装之前只需要一次。

此外,如果您键入 ,您可以一次安装多个包 sudo apt-get install package1 package2...,但您仍然需要apt-get update在多个包安装之前运行。


Eli*_*gan 8

当您使用sudo apt-get install ...(或sudo aptitude install ...)从命令行安装软件包时,或者从命令行升级它们时(使用upgradedist-upgrade代替install),以下信息是从本地系统的配置中获取的,而不是从 Internet 获取的:

  1. 有哪些包可用

  2. 它们的哪些版本可用

  3. 应该从哪里检索可用的包

在您的本地系统上运行sudo apt-get update(或sudo aptitude update)更新它。这是从 Internet 资源中实际检索有关可以安装哪些软件包的信息的步骤,包括当前安装的软件包的哪些更新可用

当您使用 GUI 界面(更新管理器、软件中心或 Synaptic 包管理器)安装软件包时,工作sudo apt-get update会自动完成。当您从命令行安装软件包时,事实并非如此,除非您最近这样做,否则您应该始终自己这样做

因为有关可用更新版本的软件包的信息是通过运行sudo apt-get update(或sudo aptitude update)获得的,所以建议在安装任何软件包之前运行它,并且必须运行它才能安装最新的更新,即使您没有添加或删除任何软件来源(例如 PPA)

请注意,如果您打算同时执行多个包管理操作,则无需sudo apt-get update在每个操作之前运行。只有当信息有一段时间没有更新时,您才应该确保运行它。