適切なフックからパッケージ名を取得するには?

適切なフックからパッケージ名を取得するには?

私は次のフックを作りました/etc/apt/apt.conf.d

Dpkg::Pre-Invoke {"/etc/apt/log.sh";};

内容は/etc/apt/log.sh次のとおりです。

#!/bin/bash

echo "$@" | tee -a /etc/apt/my.log

一部のパッケージを(再)インストールすると、そのパッケージ名とコマンドがパラメータとして予想されますが、そのようなパラメータはフックスクリプトに渡されません。

フックスクリプトからインストールされたパッケージ名を取得するには?

ベストアンサー1

DPkg::Pre-Invoke特定のパッケージ操作に関連しない非常に一般的なフックなので、作業中のパッケージのリストを取得する方法を提供しません。

インストールされたパッケージのリストを取得するにはDPkg::Pre-Install-Pkg。いくつかの文書があります。aptマンページからしかし、実験が必要な場合があります。デフォルトでは、このフックによって実行されるコマンドは標準入力としてパッケージのリストを受け取り、使用されるプロトコルによって詳細なレベルが異なります。このフックはパッケージが削除されたときにも呼び出されるため、ハンドラは各パッケージに対応するアクションを確認する必要があります。

ドキュメントでプロトコルを設定することは明確ではありません。たとえば、私が追加した例をご覧ください。DPkg::Tools::options::cmd::Versioncmdapt-listbugs

DPkg::Tools::Options::/usr/sbin/apt-listbugs::Version "3";

プロトコルバージョン3を指定します。

ムル包括的な例を作成しました。AskUbuntuからこれにより、状況がより明確になります。

おすすめ記事