您如何查看可用于更新的软件包

Jan*_*eep 92 updates package-management

FreeBSD 用户加入您的行列。我被要求管理运行 10.04 LTS 的 Ubuntu 服务器。

我从中看到/usr/lib/update-notifier/update-motd-updates-available服务器上有许多更新,但是我没有看到一种方法来判断哪些将被更新。

有没有人能够指出我正确的方向,以便我可以看到运行时哪些包会得到更新apt-get upgrade

更新:

目前无法回答我自己的问题,因此暂时将其扔在这里:

连同apt-get upgrade --dry-run下面的建议, /usr/lib/update-notifier/apt-check -p将列出所有具有可用更新的软件包。

dor*_*oru 93

截至目前(Ubuntu 16.04),您可以使用apt list--upgradable标志;

sudo apt update
apt list --upgradable
Run Code Online (Sandbox Code Playgroud)

你会得到一个包含所有可升级包的列表。


Oli*_*Oli 69

aptitude如果尚未安装,您可以安装。这是在无头设置中管理包的好工具。

在此处输入图片说明

否则,如果您只想查看运行时会发生什么,请使用--dry-run参数,它实际上不会做任何事情,它只会告诉您它做什么:

apt-get 手册页

-s, --simulate, --just-print, --dry-run, --recon, --no-act
          No action; perform a simulation of events that would occur but do
          not actually change the system. Configuration Item:
          APT::Get::Simulate.

          Simulate prints out a series of lines each one representing a dpkg
          operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square
          brackets indicate broken packages with and empty set of square
          brackets meaning breaks that are of no consequence (rare).
Run Code Online (Sandbox Code Playgroud)

以这种方式将选项添加到命令中

apt upgrade --dry-run
Run Code Online (Sandbox Code Playgroud)

  • 我毁了你的答案,希望你不要介意。 (5认同)
  • 有趣的是 `apt-get upgrade --dry-run` 不需要 `sudo`,这使得它非常适合自动显示所需的包更新。 (2认同)

sie*_*dil 11

另一种选择是aptitude搜索词一起使用:

aptitude search '~U'
Run Code Online (Sandbox Code Playgroud)

(注意大写的“U”)

这意味着:“搜索所有已安装且可以升级的软件包”。参考:aptitude 用户手册

默认情况下,aptitude search显示每个包的名称、描述和一些标志,但您也可以根据需要调整输出。例如,要仅列出包名称,命令将是:

aptitude search -F '%p' --disable-columns '~U'
Run Code Online (Sandbox Code Playgroud)

--disable-columns避免在行尾填充空格)


Avi*_*Raj 10

下面的命令将向您显示已安装软件包的列表,这些软件包在存储库中有可用的更新。

dpkg --get-selections | xargs apt-cache policy {} | grep -1 Installed | sed -r 's/(:|Installed: |Candidate: )//' | uniq -u | tac | sed '/--/I,+1 d' | tac | sed '$d' | sed -n 1~2p
Run Code Online (Sandbox Code Playgroud)