적절한 후크에서 패키지 이름을 얻는 방법은 무엇입니까?

적절한 후크에서 패키지 이름을 얻는 방법은 무엇입니까?

나는 다음 후크를 만들었습니다 /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에서이렇게 하면 상황이 더 명확해집니다.

관련 정보