私は次のフックを作りました/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::Version
cmd
apt-listbugs
DPkg::Tools::Options::/usr/sbin/apt-listbugs::Version "3";
プロトコルバージョン3を指定します。
ムル包括的な例を作成しました。AskUbuntuからこれにより、状況がより明確になります。