RPM/DNF를 사용하여 패키지를 다운로드하거나 설치하기 전에 명령을 실행하세요.

RPM/DNF를 사용하여 패키지를 다운로드하거나 설치하기 전에 명령을 실행하세요.

apt-get을 사용하면 다음을 사용할 수 있습니다.전화하기 전이나 후

전화하기 전, 전화한 후
dpkg(1) 호출 전/후에 실행되는 쉘 명령 목록입니다. 옵션과 마찬가지로 목록 표기법으로 지정해야 합니다. 명령을 순차적으로 호출하려면 /bin/sh를 사용하십시오. APT는 실패할 경우 중단됩니다.

당신은 또한 볼 수 있습니다스크립트를 apt-get에 연결합니다.

설치 전후에 명령을 실행하는 비슷한 방법이 있습니까?모든RPM 또는 DNF가 포함된 패키지?

물론 rpm이나 dnf 명령을 다른 스크립트로 래핑하는 것도 하나의 방법이지만, 저는 몇 가지 구성 옵션을 갖고 싶습니다.

답변1

yum(RHEL/CentOS 7 이하)의 경우 yum-plugin-pre-transaction-actionsyum-plugin-post-transaction-actions패키지가 있습니다. 사용 방법에 대한 예사전 거래그리고거래 후그러나 이는 샘플 파일이기도 합니다.

#action_key:transaction_state:command
# action_key can be: pkgglob, /path/to/file (wildcards allowed)
# transaction_state can be: install,update,remove,any
# command can be: any shell command
#  the following variables are allowed to be passed to any command:
#   $name - package name
#   $arch - package arch
#   $ver - package version
#   $rel - package release
#   $epoch - package epoch
#   $repoid - package repository id
#   $state - text string of state of the package in the transaction set
#
# file matches cannot be used with removes b/c we don't have the info available

*:install:touch /tmp/$name-installed
zsh:remove:touch /tmp/zsh-removed
zsh:install:touch /tmp/zsh-installed-also
/bin/z*h:install:touch /tmp/bin-zsh-installed
z*h:any:touch /tmp/bin-zsh-any

# each action is expanded once for each matching package, and no action is
# executed twice per transaction, for example
*:install:echo $repoid >>/tmp/repos
# will write each repo only once to /tmp/repos, even if multiple packages from
# the same repo were installed

dnf(RHEL/CentOS 8 이상)의 경우 다음 위치에 플러그인이 있습니다.https://github.com/rpm-software-management/dnf-plugins-core/blob/master/plugins/post-transaction-actions.py거래 후에는 적용되지만 거래 전에는 영향을 미치지 않습니다.https://bugzilla.redhat.com/show_bug.cgi?id=967264그리고https://bugzilla.redhat.com/show_bug.cgi?id=1788574더 많은 정보가 있습니다. RHEL 8.2에는 트랜잭션 후 기능이 있어야 합니다. 사전 거래가 정말로 필요한 경우 거래 후 코드를 수정하여 자신만의 사전 거래 플러그인을 생성하고 이를 PR로 제출할 수 있습니다.

답변2

RPM에서 %pretrans를 정의할 수 있습니다.작은 스크립트패키지를 설치하기 전에 실행하십시오. 외부 패키지가 아닌 패키지 자체의 일부이기 때문에 데비안 패키지와 완전히 동일하지는 않습니다.

관련 정보