web-dev-qa-db-ja.com

Debian / Ubuntuのコマンドラインでセキュリティアップデートのリストを取得する方法

GUIツールでは、セキュリティ更新を含むリストパッケージを取得できます。これはDebianまたはUbuntuのコマンドラインで実行できますか?

通常、「apt-get upgrade」を使用すると、アップグレードされる内容が表示されますが、セキュリティアップデートであるものを知りたいです。

27
Stephen Paulger

無人アップグレードアプリケーションを使用します。

Sudo unattended-upgrade

これにより、セキュリティ更新のみを自動的にインストールできますが、必要に応じて手動で呼び出すこともできます。

5
Andy H
apt-get upgrade -s | grep -i security

...は、Nagios check-aptプラグインが保留中のセキュリティ更新をカウントするために使用するもので、探しているものと似ています。

41
smin

Ubuntuではapt-checkを使用できるはずです。これは、利用可能なセキュリティアップデートの数をmotdに入力するものです。

10
topdog

次のコマンドでリストを取得できます:

Sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'
5
Fabrizio Regini

追加のスイッチを取るupdate-notifierの変更バージョンがあります。セキュリティ関連のパッケージ名のみを出力する--security-package-namesです。私はそれを要旨として持っています(ランチパッドの関連プロジェクトでマージ要求を作成するまで)。それまでは、次のように実行できます。

実行

curl -s https://Gist.githubusercontent.com/ahmadnazir/c2444d6b09fd7bb4963a13bc577d92a3/raw/0231b94a4e46abe0a5959de5f84feda76ad2eb9d/apt-check.py \
  | python /dev/stdin --security-package-names \
  | column -t -s , \
  | sort

出力

これにより、フォーマットパッケージ名インストール済みバージョン、および候補バージョンの出力が得られます。

...
Thunderbird                          1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
Thunderbird-gnome-support            1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
Thunderbird-locale-en                1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
Thunderbird-locale-en-us             1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
...
3
mandark

上記のFabrizio Reginiの回答に基づく。

12.04 /正確:

Sudo unattended-upgrade --dry-run -d 2>&1 /dev/null | grep 'Checking' | grep security | awk '{ print $2 }'

14.04/Trustyの場合:

Sudo unattended-upgrade --dry-run -d | grep 'Checking' | grep security | awk '{ print $2 }'
3
blazerw

そして、他の応答を読んだ後、変種が一緒に破壊されました-これは誤検知の問題に対応し、かなり軽量であると私は信じています。

Sudo unattended-upgrade --dry-run -d 2>/dev/null  | awk '/Checking/ && /archive:..*-security. / {print $2}'
1
tink

@sminの答えは基本的には良いアプローチだと思いますが、@ Shnatselが指摘しているように、正規表現は少し緩いです。

これはどう:

apt-get upgrade -q --dry-run \
| Perl -ne 'm/^Inst (\S+) \S+ \(([^\)]+) Debian-Security:8/ && print "$1-$2\n"'

これにより、パッケージ名とインストールするバージョンが一覧表示されます。どうぞ -$2バージョンが必要ない場合は、printステートメントから削除します。

[これは、Perlの代わりにawkを使用することで、おそらく少しだけ軽量にすることができます]

0
mc0e

Ubuntuシステムでのapt-checkスクリプトの変更を解決しました。 -pフラグが指定されている場合は、パッケージ名も表示して、セキュリティ更新のみを処理します。

Gistはここにあります: https://Gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b

0
Paolo Perego

OPが尋ねる質問に答えることは、パッケージのListを表示する方法であり、セキュリティパッケージのみをインストールする方法ではないと考えています。 @topdogの答えに基づいて構築する次を使用する必要があります:/usr/lib/update-notifier/apt-check -p どこ -pフラグはパッケージを表します

0
alonisser

これらの2つのコマンドはリストを吐き出します。 wc -lにパイプして、遅れている数を確認します。 ;-)

grep security /etc/apt/sources.list > /tmp/security.list
Sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s

古いディストリビューションや、更新リポジトリがオフになっているが、セキュリティがオンの場合は引き続き有効です。

Sudo apt-get upgrade -s| grep ^Inst |grep Security 
0
flickerfly