apt 以编程方式检测更新后的可升级软件包

apt 以编程方式检测更新后的可升级软件包

运行时apt-get update,它会下载软件包列表,如果有可升级的软件包,它会输出类似

1 package can be upgraded. Run 'apt list --upgradable' to see it.

我可以解析输出以查找“可以升级”或类似内容,但必须有一种更优雅的方法来知道更新后是否有可以升级的软件包。

我注意到,apt-get update下载数据后,它几乎立即输出这些信息,而如果我运行apt list --upgradeable它,则需要很长时间,大概是因为它不只是告诉我有多少个包,而是继续生成一个完整的包列表,而我并不需要这个列表。我只需要快速知道是否有任何包需要更新。

注意:需要使用编程接口来执行此操作的答案是可以接受的

答案1

完成sudo apt update... 之后,列出项目所需的时间很短。

例子: (我忘了在第一个中添加“时间”)...

$ apt 列表--可升级
列表...完成
libpython2.7/xenial-security 2.7.12-1ubuntu0~16.04.9 amd64 [可从 2.7.12-1ubuntu0~16.04.8 升级]
libpython2.7-dev/xenial-security 2.7.12-1ubuntu0~16.04.9 amd64 [可从 2.7.12-1ubuntu0~16.04.8 升级]
libpython2.7-minimal/xenial-security 2.7.12-1ubuntu0~16.04.9 amd64 [可从 2.7.12-1ubuntu0~16.04.8 升级]
libpython2.7-stdlib/xenial-security 2.7.12-1ubuntu0~16.04.9 amd64 [可从 2.7.12-1ubuntu0~16.04.8 升级]
libpython3.5/xenial-security 3.5.2-2ubuntu0~16.04.9 amd64 [可从 3.5.2-2ubuntu0~16.04.8 升级]
libpython3.5-dev/xenial-security 3.5.2-2ubuntu0~16.04.9 amd64 [可从 3.5.2-2ubuntu0~16.04.8 升级]
libpython3.5-minimal/xenial-security 3.5.2-2ubuntu0~16.04.9 amd64 [可从 3.5.2-2ubuntu0~16.04.8 升级]
libpython3.5-stdlib/xenial-security 3.5.2-2ubuntu0~16.04.9 amd64 [可从 3.5.2-2ubuntu0~16.04.8 升级]
python2.7/xenial-security 2.7.12-1ubuntu0~16.04.9 amd64 [可从 2.7.12-1ubuntu0~16.04.8 升级]
python2.7-dev/xenial-security 2.7.12-1ubuntu0~16.04.9 amd64 [可从 2.7.12-1ubuntu0~16.04.8 升级]
python2.7-minimal/xenial-security 2.7.12-1ubuntu0~16.04.9 amd64 [可从 2.7.12-1ubuntu0~16.04.8 升级]
python3.5/xenial-security 3.5.2-2ubuntu0~16.04.9 amd64 [可从 3.5.2-2ubuntu0~16.04.8 升级]
python3.5-dev/xenial-security 3.5.2-2ubuntu0~16.04.9 amd64 [可从 3.5.2-2ubuntu0~16.04.8 升级]
python3.5-minimal/xenial-security 3.5.2-2ubuntu0~16.04.9 amd64 [可从 3.5.2-2ubuntu0~16.04.8 升级]
hannu@wkbx ~ bash (P)PID=(19384)23069, s=0

$ time apt 列表--可升级
列表...完成
已过去 0.326 秒,p=100.03,0.326 实际,0.318 用户,0.008 系统。

所以...这将为你$items设置可用更新的数量:

$ items="$(( $(apt list --upgradable 2>/dev/null | grep upgradable | wc -l) - 1 ))" ; 回显 $items
0

现在,使用 bash 条件来确定根据它执行哪些命令。

相关内容