web-dev-qa-db-ja.com

apt-getを使用してアップグレードするパッケージのリストを取得するにはどうすればよいですか?

apt list --upgradeableに相当するものを計算するスクリプトフレンドリーな方法があるかどうか、私は興味があります。これにより、1行に1つだけアップグレード候補があり、非常に解析可能なNice出力が生成されます。しかし、aptも警告します:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

だから代わりに由緒あるapt-getを使うべきだと思います。残念ながら、その出力は次のようになります。

apt-get -s --no-download dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  dbus libdbus-1-3
The following packages will be upgraded:
  bash gcc-8-base gpgv libedit2 libgcc1 libprocps7 libpsl5 libselinux1 libsemanage-common libsemanage1 libsepol1 libsqlite3-0 libstdc++6 Perl-base
  procps publicsuffix rsyslog twigpilot-core
18 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
...

これは、あまり解析可能ではありません。そのため、aptのように、より簡潔なリストを出力するためにapt-getの更新を取得する方法を期待していました。

4
Travis Griggs

私はUbuntuを定期的に使用していませんが、これはどうですか?

$ apt-get -s --no-download dist-upgrade -V | grep '=>' | awk '{print$1}'

1行に1つのパッケージを印刷します。 man apt-get

   -V, --verbose-versions
       Show full versions for upgraded and installed packages. Configuration Item: APT::Get::Show-Versions.
4

apt-show-versions -u何をお探しですか? manpage から:

-u--upgradeable

    アップグレード可能なパッケージのみを印刷する

アップグレード可能なすべてのパッケージをテキストファイルにリストし、列形式で表示します。

apt-show-versions -u | column -t > debupdlist-$(date '+%Y%m%d').txt

アップグレード可能なパッケージの名前を一覧表示します。

apt-show-versions -u | cut -d: -f1 
1
xaa

aptapt-getではない)はこれを提供します:

user@Host:~$ Sudo apt list --upgradable
Listing... Done
ifupdown/xenial-updates 0.8.10ubuntu1.4 AMD64 [upgradable from: 0.8.10ubuntu1.3]
libldap-2.4-2/xenial-updates 2.4.42+dfsg-2ubuntu3.3 AMD64 [upgradable from: 2.4.42+dfsg-2ubuntu3.2]
[etc]

パッケージ名だけを取得するには、次の方法があります。

user@Host:~$ Sudo apt list 2> /dev/null --upgradable | awk -F/ 'NF>1 { print $1 }'
ifupdown
libldap-2.4-2
[etc]
0
DopeGhoti