web-dev-qa-db-ja.com

Linux-aptのみを使用してセキュリティ更新を表示またはアップグレードする

aptのみを使用してセキュリティアップグレードをリストまたはインストールする方法はありますか?

私がアップグレードをリストすると:

apt list --upgradable

知らずにアップグレードが関連するパッケージとライブラリsecurity upgradesも確認できますか?.

さらに、他のものをスキップしてそれらを適用するだけのオプションがあるため、次回apt upgradeを実行するときに、非セキュリティ関連のアップグレードが再度要求されます?

11
nath

aptは、あなたが求めている情報を(まだ)提供することはできません。多少混乱するかもしれませんが、aptitudeはできます。

aptitude search '~U ~ODebian' -F "%p %O"|awk '/Debian-Security/ {print $1}'

これは、すべてのアップグレード可能な(~U)公式Debianリポジトリのパッケージ(~ODebian)、およびそれらのパッケージ名(%p)および "Origin"(%O)。後者は実際にはリポジトリlabelを表示します。これは、Debian 9セキュリティリポジトリの「Debian-Security:9/stable」です。セキュリティリポジトリからのアップグレード可能なパッケージ名のリストが表示されます。

セキュリティアップグレードのみをインストールする方法はさまざまですが、理想的な方法はありません。

  • aptitudeのテキストインターフェイスでは、「セキュリティアップデート」ヘッダー(最初のヘッダー)までスクロールして、 +

  • 上記で抽出したパッケージのリストをaptにフィードして、アップグレードをインストールできます。

    aptitude search '~U ~ODebian' -F "%p %O" |
    awk '/Debian-Security/ {print $1}' |
    xargs apt-get install --only-upgrade
    

    これには、アップグレードされたパッケージの「自動的にインストールされた」マーカーをクリアするという残念な副作用があります。

  • unattended-upgrades 、デフォルトのアクションはセキュリティアップグレードのみを適用することです:

    unattended-upgrades -v
    

    アップグレードを自動的にインストールしたくない場合は、無効にする必要がありますunattended-upgradesの毎日のcronジョブ。

7
Stephen Kitt

セキュリティ更新プログラムを表示するには、以下を使用できます。

apt-get --just-print upgrade | grep -i security | awk '{print $2}' | awk '!seen[$0]++'

1つのパッケージのセキュリティ更新のみを適用するには:

apt-get install --only-upgrade pckg_name

リストのセキュリティ更新のみを適用するには:

list=$(apt-get --just-print upgrade | grep -i security | awk '{print $2}' | awk '!seen[$0]++')
apt-get install --only-upgrade $list
5
GAD3R