diff --git a/conf/manifest/init b/conf/manifest/init index 81b8061c..30037481 100755 --- a/conf/manifest/init +++ b/conf/manifest/init @@ -28,5 +28,6 @@ case "$__target_host" in # Real machines ikq*) __package_apt zsh --state installed + __package_apt apache2 --state deinstalled ;; esac diff --git a/conf/type/__package_apt/explorer/pkg_status b/conf/type/__package_apt/explorer/pkg_status index e13f8f5c..86b94825 100755 --- a/conf/type/__package_apt/explorer/pkg_status +++ b/conf/type/__package_apt/explorer/pkg_status @@ -27,4 +27,5 @@ else name="$__object_id" fi -dpkg -l "$name" 2>/dev/null | awk '{ print $1 }' +# Except dpkg failing, if package is not known / installed +dpkg -s "$name" 2>/dev/null || exit 0 diff --git a/conf/type/__package_apt/gencode b/conf/type/__package_apt/gencode index cfb7a9d6..b451eb9f 100755 --- a/conf/type/__package_apt/gencode +++ b/conf/type/__package_apt/gencode @@ -29,15 +29,18 @@ fi state="$(cat "$__object/parameter/state")" +is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status")" + case "$state" in installed) - pkg_status="$(cat "$__object/explorer/pkg_status")" - if [ "$pkg_status" != "ii" ]; then + # Install only if non-existent + if [ -z "$is_installed" ]; then echo apt-get --quiet --yes install \"$name\" fi ;; deinstalled) - if [ "$pkg_status" != "un" ]; then + # Remove only if existent + if [ -n "$is_installed" ]; then echo apt-get --quiet --yes remove \"$name\" fi ;;