您如何看待哪些软件包可以更新


72

FreeBSD用户加入您的行列。我被要求照顾运行10.04 LTS的Ubuntu Server。

从中/usr/lib/update-notifier/update-motd-updates-available可以看到服务器上有许多更新,但是我看不出有哪种方法可以告诉您将要更新的内容。

任何人都可以为我指明正确的方向,以便我可以查看运行时将更新哪些软件包apt-get upgrade

更新:

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

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


如果需要进一步的帮助,欢迎您进入网站,使用和滥用该网站;
布鲁诺·佩雷拉

1
现在您应该可以回答自己的问题,因为您有足够的代表来删除新的用户限制
jokerdino

看起来需要100rep或等待8个小时才能回答您自己的问题。
Jan Geep 2012年

在2016年,@ doru给出的答案已经出现。askubuntu.com/a/788049/560610
jeremysawesome

Answers:


62

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).

通过这种方式将选项添加到命令

apt upgrade --dry-run

5
我毁了你的答案,希望你不要介意。
布鲁诺·佩雷拉

2
有趣的apt-get upgrade --dry-run是,不需要sudo,这使其非常适合自动显示所需的软件包更新。
dshepherd 2015年

更有趣的是,在我的Ubuntu 14.04 LTS上,“ apt-get -s update”不接受“ -s” ...也不接受“ --dry-run”,“-no-act” ...为什么那会是吗?
mBardos

@mBardos您是否apt-get使用“辅助”脚本替换了路径中的?检查which apt-get以确保它是/usr/bin/apt-get
Oli

martonb @ martonb-ubu:〜/ work / qt $ apt-get / usr / bin / apt-get在Ubuntu 14.04 LTS上对您有用吗?martonb @ martonb-ubu:〜/ work / qt $ apt-get -s update E:未知命令行选项's'[from -s]。
mBardos

67

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

sudo apt update
apt list --upgradable

您将获得包含所有可升级软件包的列表。


1
优秀的!那正是我想看到的:)
jeremysawesome

apt在12.04中是未知命令
confiq '16

1
@confiq “ APT 1.0已于2014年4月1日发布”,因此可能无法在您的系统上升级。尝试查看apt已运行的版本sudo apt-cache policy apt
doru

解释了……
confiq

10

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

aptitude search '~U'

(请注意大写的“ U”)

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

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

aptitude search -F '%p' --disable-columns '~U'

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


8

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

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

1
这是命令行魔术的好地方!
Teemu Leisti 2015年

1
很好,但是@sierrasdetandil和@doru的答案却以一种非常简洁的方式完全相同……
朱塞佩
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.