+# shellcheck disable=SC2154
+if ! [ -r "${target}/${PACKAGE_LIST}" ] ; then
+ echo "No ${target}/${PACKAGE_LIST} found, will not run package validation check."
+else
+ echo "Validating package list against dpkg state..."
+
+ TMPSTDOUT=$(mktemp)
+ TMPSTDERR=$(mktemp)
+
+ # 1) catch packages that aren't in state 'ii' (marked for installation
+ # and successfully instead) on stdout
+ # 2) catch error messages like 'dpkg-query: no packages found matching $package"
+ # for packages unknown to dpkg on stderr
+ # NOTE: 'grep -v -- '-$' ignores packages in FAI's package list that are
+ # marked for removal
+ # shellcheck disable=SC2046
+ ${ROOTCMD} dpkg --list $(grep -v '^#' "${target}/${PACKAGE_LIST}" | grep -v -- '-$') 2>"${TMPSTDERR}" | \
+ grep -e '^[urph][ncufhWt]' > "${TMPSTDOUT}" || true
+
+ # extract packages from stdout
+ awk '/^un/ {print $2 " not_installable"}' "${TMPSTDOUT}" >> "${LOGDIR}/package_errors.log"
+
+ # extract packages from stderr
+ grep 'packages found matching' "${TMPSTDERR}" | \
+ sed 's/dpkg-query: [Nn]o packages found matching \(.*\)/\1 not_installable/' >> "${LOGDIR}/package_errors.log"
+
+ rm -f "${TMPSTDOUT}" "${TMPSTDERR}"
+fi