Debian
Dpkg env 變數 DPKG_HOOK_ACTION 未在鉤子腳本中設置
根據
man dpkg
我可以DPKG_HOOK_ACTION
用來獲取在我的 dpkg 掛鉤腳本中執行的目前 dpkg 操作--pre-invoke=command --post-invoke=command Set an invoke hook command to be run via “sh -c” before or after the dpkg run for the unpack, configure, install, triggers-only, remove and purge dpkg actions. This option can be specified multiple times. The order the options are specified is preserved, with the ones from the configuration files taking precedence. The environment variable DPKG_HOOK_ACTION is set for the hooks to the current dpkg action. Note: front-ends might call dpkg several times per invocation, which might run the hooks more times than expected.
但它似乎在這個鉤子命令中不起作用。知道這裡有什麼問題嗎?
$ cat /etc/apt/apt.conf.d/99testhook DPkg::Pre-Invoke {"echo This is testhook. Current action is $DPKG_HOOK_ACTION; exit 0";}; $ sudo apt-get install screen ... Fetched 628 kB in 0s (4,366 kB/s) This is testhook. Current action is Selecting previously unselected package screen.
這僅適用於由
--pre-invoke
and--post-invoke
選項指定的命令,不適用於在配置中設置命令時。這可以通過將 echo 命令放入腳本來展示:
# cat > /tmp/pre-invoke.sh <<'EOF' #!/bin/sh echo This is testhook. Current action is $DPKG_HOOK_ACTION; exit 0 EOF # chmod +x /tmp/pre-invoke.sh # dpkg --pre-invoke=/tmp/pre-invoke.sh -i /var/cache/apt/archives/rsync_3.1.1-2+b1_amd64.deb This is testhook. Current action is install (Reading database ... 113857 files and directories currently installed.) Preparing to unpack .../rsync_3.1.1-2+b1_amd64.deb ... Unpacking rsync (3.1.1-2+b1) over (3.1.1-2+b1) ... Setting up rsync (3.1.1-2+b1) ... Restarting rsync daemon: rsync. Processing triggers for man-db (2.6.7.1-1) ...