Package: bash-completion Version: 1:2.8-1 Severity: normal File: /usr/share/bash-completion/completions/dpkg Tags: patch
The completion for dpkg -L/--listfiles does not list held packages when grep-status (from dctrl-tools) is installed. This is because the grep-status _comp_dpkg_purgeable_packages cares about the dpkg package selection states (install/hold/deinstall/purge) while the other version only cares about the dpkg package states (installed/unpacked/etc). There is a similar issue for the _comp_dpkg_installed_packages function. The fix for this is quite simple, just remove install/deinstall from the arguments to the -FStatus options. $ dpkg --get-selections | grep ^una unace install unar install unattended-upgrades hold $ dpkg --listfiles una unace unar $ dpkg -L una unace unar $ grep -A1 listfiles /usr/share/bash-completion/completions/dpkg -L|-P|--listfiles|--purge) COMPREPLY=( $( _comp_dpkg_purgeable_packages "$cur" ) ) $ grep -B1 -A8 ^_comp_dpkg_purgeable_packages /usr/share/bash-completion/completions/dpkg _have grep-status && { _comp_dpkg_purgeable_packages() { grep-status -P -e "^$1" -a -FStatus 'install ok installed' -o -FStatus 'deinstall ok config-files' -n -s Package } } || { _comp_dpkg_purgeable_packages() { command grep -A 1 "Package: $1" /var/lib/dpkg/status 2>/dev/null | \ command grep -B 1 -Ee "ok installed|half-installed|unpacked| \ half-configured|config-files" \ -Ee "^Essential: yes" | \ awk "/Package: $1/ { print \$2 }" 2>/dev/null } } $ diff -u /usr/share/bash-completion/completions/dpkg* --- /usr/share/bash-completion/completions/dpkg 2018-03-31 07:07:32.000000000 +0800 +++ /usr/share/bash-completion/completions/dpkg.fixed 2018-08-26 12:02:49.488857999 +0800 @@ -3,7 +3,7 @@ _have grep-status && { _comp_dpkg_installed_packages() { - grep-status -P -e "^$1" -a -FStatus 'install ok installed' -n -s Package + grep-status -P -e "^$1" -a -FStatus 'ok installed' -n -s Package } } || { _comp_dpkg_installed_packages() @@ -19,7 +19,7 @@ _have grep-status && { _comp_dpkg_purgeable_packages() { - grep-status -P -e "^$1" -a -FStatus 'install ok installed' -o -FStatus 'deinstall ok config-files' -n -s Package + grep-status -P -e "^$1" -a -FStatus 'ok installed' -o -FStatus 'ok config-files' -n -s Package } } || { _comp_dpkg_purgeable_packages() -- System Information: Debian Release: buster/sid APT prefers testing-debug APT policy: (900, 'testing-debug'), (900, 'testing'), (800, 'unstable-debug'), (800, 'unstable'), (790, 'buildd-unstable'), (700, 'experimental-debug'), (700, 'experimental'), (690, 'buildd-experimental') Architecture: amd64 (x86_64) Kernel: Linux 4.17.0-2-amd64 (SMP w/4 CPU cores) Locale: LANG=en_AU.utf8, LC_CTYPE=en_AU.utf8 (charmap=UTF-8), LANGUAGE=en_AU.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) -- no debconf information -- bye, pabs https://wiki.debian.org/PaulWise
signature.asc
Description: This is a digitally signed message part