我为什么要经常运行’apt-get update’和类似的命令?

我是Ubuntu的新手。 一位朋友建议我经常运行以下命令:

sudo apt-get upgrade sudo apt-get update sudo apt-get autoremove sudo apt-get autoclean 

他说,这将以某种方式保持我的系统清洁和更新。 我不知道这些命令到底是做什么的。 定期运行它们真的很有用吗?

在所有当前支持的Ubuntu版本上,我们可以使用apt而不是apt-get 。 如果要捕获文件中的输出,请使用apt-get ,否则使用apt作为其输出更具可读性(谁喜欢键入?)。

 sudo apt update 

从存储库下载信息1 APT配置为检查并更新可用,已安装和已卸载软件包的dpkg数据库,以反映存储库中的更改。 这意味着当您使用类似命令查询系统上的数据库时

 apt policy package-name apt show package-name apt search package-name 

他们会打印准确的信息,当你运行命令时

 sudo apt install package-name 

他们将获取最新的可用版本。

当您运行sudo apt update您可能会看到某些软件包是可升级的,这意味着已将新版本添加到存储库。 较新的版本通常有错误修复和安全更新,因此您应该安装它们。 这可以通过升级具有该命令可用的新版本的所有软件包来完成

 sudo apt upgrade 

如果内核已升级(像linux-image-4.15.0-20-generic这样的软件包),那么你应该运行一个命令来删除旧的内核版本(除了第二个最新版本,保留为备用版本,以防新内核版本)是马车)。 您可以使用此命令:

 sudo apt autoremove 

要做到这一点。 此命令还删除了孤立的包。 这些通常仅在您使用类似命令时才存在

 sudo apt remove package-name 

package-name具有自动安装的依赖项,但任何其他软件包都不需要。

对于autoclean ,我推荐你使用man apt-get

 autoclean (and the auto-clean alias since 1.1) Like clean, autoclean clears out the local repository of retrieved package files. The difference is that it only removes package files that can no longer be downloaded, and are largely useless. 

其他三个命令非常重要,通常应定期运行以保持系统安全和更新,并避免使用旧内核文件填充磁盘,但运行autoclean后可能看不出太多差异。 偶尔可能删除的少数文件不太可能。


1 这些存储库默认配置,因此您通常不需要对它们执行任何操作。 它们列在文件/etc/apt/sources.list/etc/apt/sources.list中的文件中。 APT对这些文件的格式严格(出于安全原因),如果语法错误则会抛出错误。 如果您的系统具有图形环境,则可以选择在设置中配置存储库。 您需要root权限才能完成这项工作。

虽然Zanna的回答涵盖了这些命令的目的,但我想重点关注第二部分:

定期运行它们真的很有用吗?

虽然经常运行它们很好 ,但我没有看到按字面定期运行它们的理由(实时基础上,例如每天一次,每周一次,每月一次)。

  • 这些命令实现的更新和清理任务不是基于时间创建的。 当在存储库中找到新版本的已安装软件包时,它们开始变得有用。

  • 默认情况下,系统会定期运行apt-get update命令(请参阅自动包更新 , AutomaticSecurityUpdates )。 由apt-get upgrade安装的安全更新也将由无人值守升级自动安装。

  • 自动update适用于所有包。 一旦APT知道未自动安装的更新,系统将提醒您手动安装它们(使用apt install apt upgrade来升级所有这些),例如:

    • 在CLI登录屏幕上:

       Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.113-rt128+ x86_64) ... 29 packages can be updated. 6 updates are security updates. 
    • 在APT命令的输出中:

       $ sudo apt update ... 5 packages can be upgraded. Run 'apt list --upgradable' to see them. 
  • 系统会提醒您运行autoremove

     $ sudo apt update ... The following packages were automatically installed and are no longer required: devilspie libturbojpeg:i386 libxrandr-ltsr2 language-pack-kde-en Use 'apt-get autoremove' to remove them. 

如果您仍希望按时间运行命令,则可以为它们创建cron任务 。