在每次安装软件包之前都必须强制执行“ sudo apt-get更新”吗?


21

我知道update命令的用途是什么,我只是想知道在执行任何软件包安装之前是否必须使用它。如果我没有更新太长时间并安装了一些关键软件包该怎么办?另外,是否有没有必要这样做的情况?

Answers:


20

您的Ubuntu副本具有Ubuntu存储库中软件包列表的私有副本。安装软件包时,请apt-get阅读列表并确定要下载的软件包的URL(通常包含软件包的版本信息)。

apt-get update更新软件包列表。如果您在安装之前不执行此操作,则apt-get可能会抱怨它无法在存储库中找到该软件包,因为它是基于列表的旧版本(列出了旧版本的软件包)计算出URL的。

当然,apt-get update更改存储库后,这是必需的,因为系统需要下载新存储库的列表。

在升级已安装的软件包之前,这是必不可少的,因为除非存储库具有软件包列表的最新副本,否则系统无法知道该存储库是否具有软件包的新版本。

没有理由apt-get update在安装软件包之前不运行。但是,如果您知道自从last以来,镜像中没有提供该软件包及其依赖关系的新版本,则没有必要apt-get update。这种情况的一个特殊情况是,软件包列表是最新的,这是从上次以来的相当短的时间之后apt-get update;这意味着镜像上的所有软件包都与以前的版本相同。

每当在镜像上升级软件包时,软件包列表都会更改。通常,如果不参考特定问题或错误报告,或者不遵循该Ubuntu版本的开发,就无法预测更改的频率。


“软件包列表是最新的(自上次apt-get更新以来经过了相当短的时间”)-多长时间?软件包列表多久更改一次?可以更改软件包列表什么?
joshreesjones

@ mathguy54答案已更新。实际上,我在下载软件包时遇到404错误(“找不到文件”)时运行apt-get update。
ignis 2015年

“ Ubuntu在Ubuntu的存储库中有软件包列表的私有副本”-此列表在哪里?我想读。感谢您提供的宝贵信息。
joshreesjones

@ mathguy54您可以阅读结尾的文件*_Packages/var/lib/apt/lists/使用文本编辑器,但是一个通常不与包管理工具更高级的搜索,例如apt-cache show/policy/etc.
伊格尼斯

3

在安装软件包之前,您不必绝对使用update命令,但是如果不这样做,则可能会在安装软件包后立即升级。

另外,请记住,您需要定期更新系统。如果不这样做,您的计算机将面临风险(您将没有最新的安全补丁程序)。


3

如果您仅添加了软件存储库(PPA或Debian存储库),则必须运行apt-get update以轮询存储库,并从本质上将其中的所有软件包添加到APT的可用软件列表中。否则,APT将无法识别您要求安装的软件包的名称。

通过命令行安装新软件时,更新存储库信息是一个好主意,这样您就不会仅仅因为发现软件过时而安装软件。升级软件也是如此。

如果使用图形化方法分别安装或升级软件(例如Ubuntu Software Center或Update Manager),则这些客户端将自动检查软件包的绝对最新版本。

这就是说,如果您要安装一批软件并在几分钟甚至几小时之前运行了更新,则很可能会获得最新版本。但是,如果您要安装经常更新的软件类型(例如alpha / beta或最新型软件),则需要先运行更新,然后再从该软件的存储库中获取任何内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.