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

我想知道什么是sudo apt-get update吗?

什么更新?

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

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

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

  • 如果APT通过apt-get update了解这些新版本, apt-get upgrade将获取机器上现有的新版本的软件包。

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

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

  • apt-get dist-upgrade将执行与apt-get upgrade相同的工作,此外它还会智能地处理依赖项,因此它可能会删除过时的包或添加新的包。 请参阅此处: 什么是“dist-upgrade”,为什么升级超过“升级”?

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

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

您可以将命令与&&结合使用,如下所示:

 sudo apt-get update && sudo apt-get install foo bar baz foo-dev foo-dbg 

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

 sudo apt-get update && sudo apt-get dist-upgrade 

你需要两次sudo ,但由于sudo默认情况下在上次sudo操作后的5分钟内没有提示你,因此系统只会提示你输入一次密码(或者根本不提示)。

Google搜索可以为您提供几乎所有终端命令的定义,也可以在终端中帮助您。 例如,

 apt-get --help 

sudo apt-get update主要有三个部分:

 sudo 

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

 apt-get 

是一个命令行工具,Ubuntu用它来安装,删除和管理软件包

 update 

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

 sudo apt-get install guake 

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

 sudo apt-get update sudo apt-get install  

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

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

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

简而言之: 强烈建议在安装之前运行sudo apt-get update ,但如果您真的按时间可能会跳过除非您自上次apt-get update更改了存储库或PPA。

您需要在安装新软件包之前运行apt-get update ,因为这会更新本地存储库信息。 如果您要在彼此之后不久安装多个软件包,则无需运行apt-get update 。 此外,如果键入sudo apt-get install package1 package2... ,则可以一次安装多个包sudo apt-get install package1 package2...

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

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

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

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

 sudo apt-get upgrade 

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

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

  1. 什么包可用

  2. 它们的版本可用

  3. 应从中检索可用包的位置

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

使用GUI界面(Update Manager,软件中心或Synaptic Package Manager)安装软件包时, sudo apt-get update的工作将自动完成。 当你从命令行安装软件包时,它不是,你应该自己做,除非你最近这样做

由于运行sudo apt-get update (或sudo aptitude updatesudo apt-get update有关可用更新版本软件包的信息,因此建议在安装任何软件包之前运行此软件包,并运行它以安装最新更新, 即使您尚未添加或删除任何软件源(例如PPA)

请注意,如果要在大约相同的时间执行多个包管理操作,则不需要在每个操作之前运行sudo apt-get update 。 只有当信息暂时没有更新时,才应确保运行它。

正如上面提到的Eliah Kagan所说,你会期望 GUI应用程序在apt-get install / apt-get upgrade之前运行apt-get update ,但我刚刚在一个相对较新的攻击性安全VM机器上发现了一个有趣的错误404,让我难过了一分钟。

从命令行,我运行了apt-get update ,然后再次尝试了System Tools / Software-Update命令,这次它运行时没有404错误。

所以,我想你不能总是假设从GUI应用程序运行apt-get update

正如我之前的很多人所说,这会更新您的本地存储库(包列表)。

如果您尝试安装,可能会遇到麻烦

 apt-get install foobar 

和foobar或依赖项在存储库中没有最新版本。 如果手动安装.deb文件或从第三方安装ppa,这可能会特别成问题。

基本上它确保您的列表列表匹配。

让我们考虑在Ubuntu上安装VLC媒体播放器的例子:

 sudo apt-get update 

它将检查存储库以获取可用更新。

 sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc 

将从我们搜索的存储库安装VLC媒体播放器。

如果您以root用户(管理员)身份登录,则不必使用sudo ,因为您已拥有超级用户权限。