forked from ungleich-public/cdist
__package_apt ignores --version parameter #615
This commit is contained in:
parent
fe8004eca2
commit
d6ff077156
2 changed files with 21 additions and 2 deletions
|
@ -31,7 +31,8 @@ fi
|
||||||
packages="$(apt-cache showpkg "$name" | sed -e "1,/Reverse Provides:/d" | cut -d ' ' -f 1) $name"
|
packages="$(apt-cache showpkg "$name" | sed -e "1,/Reverse Provides:/d" | cut -d ' ' -f 1) $name"
|
||||||
for p in $packages; do
|
for p in $packages; do
|
||||||
if [ -n "$(dpkg -s "$p" 2>/dev/null | grep "^Status: install ok installed$")" ]; then
|
if [ -n "$(dpkg -s "$p" 2>/dev/null | grep "^Status: install ok installed$")" ]; then
|
||||||
echo "present $p"
|
version=$(dpkg -s "$p" 2>/dev/null | grep "^Version:" | cut -d ' ' -f 2)
|
||||||
|
echo "present $p $version"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
|
@ -29,6 +29,13 @@ fi
|
||||||
|
|
||||||
state_should="$(cat "$__object/parameter/state")"
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
|
||||||
|
version_param="$__object/parameter/version"
|
||||||
|
|
||||||
|
version=""
|
||||||
|
if [ -f "$version_param" ]; then
|
||||||
|
version="$(cat "$version_param")"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -f "$__object/parameter/target-release" ]; then
|
if [ -f "$__object/parameter/target-release" ]; then
|
||||||
target_release="--target-release $(cat "$__object/parameter/target-release")"
|
target_release="--target-release $(cat "$__object/parameter/target-release")"
|
||||||
else
|
else
|
||||||
|
@ -47,18 +54,29 @@ state_is="$(cat "$__object/explorer/state")"
|
||||||
case "$state_is" in
|
case "$state_is" in
|
||||||
present*)
|
present*)
|
||||||
name="$(echo "$state_is" | cut -d ' ' -f 2)"
|
name="$(echo "$state_is" | cut -d ' ' -f 2)"
|
||||||
|
version_is="$(echo "$state_is" | cut -d ' ' -f 3)"
|
||||||
state_is="present"
|
state_is="present"
|
||||||
;;
|
;;
|
||||||
|
*)
|
||||||
|
version_is=""
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Hint if we need to avoid questions at some point:
|
# Hint if we need to avoid questions at some point:
|
||||||
# DEBIAN_PRIORITY=critical can reduce the number of questions
|
# DEBIAN_PRIORITY=critical can reduce the number of questions
|
||||||
aptget="DEBIAN_FRONTEND=noninteractive apt-get --quiet --yes --no-install-recommends -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\""
|
aptget="DEBIAN_FRONTEND=noninteractive apt-get --quiet --yes --no-install-recommends -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\""
|
||||||
|
|
||||||
[ "$state_is" = "$state_should" ] && exit 0
|
if [ "$state_is" = "$state_should" ]; then
|
||||||
|
if [ -z "$version" ] || [ "$version" = "$version_is" ]; then
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
case "$state_should" in
|
case "$state_should" in
|
||||||
present)
|
present)
|
||||||
|
if [ -n "$version" ]; then
|
||||||
|
name="${name}=${version}"
|
||||||
|
fi
|
||||||
echo $aptget install $target_release \"$name\"
|
echo $aptget install $target_release \"$name\"
|
||||||
;;
|
;;
|
||||||
absent)
|
absent)
|
||||||
|
|
Loading…
Reference in a new issue