diff --git a/cdist/conf/type/__apt_mark/explorer/apt_version b/cdist/conf/type/__apt_mark/explorer/apt_version
new file mode 100644
index 00000000..32a0a58f
--- /dev/null
+++ b/cdist/conf/type/__apt_mark/explorer/apt_version
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# 2016 Ander Punnar (cdist at kvlt.ee)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+
+apt_version_is=$(dpkg-query --show --showformat '${Version}' apt)
+
+# from APT changelog:
+# apt (0.8.14.2) UNRELEASED; urgency=low
+# provide a 'dpkg --set-selections' wrapper to set/release holds
+
+apt_version_should=0.8.14.2
+
+dpkg --compare-versions $apt_version_should le $apt_version_is \
+ && echo 0 \
+ || echo 1
diff --git a/cdist/conf/type/__apt_mark/explorer/package_installed b/cdist/conf/type/__apt_mark/explorer/package_installed
new file mode 100644
index 00000000..c78ac3a9
--- /dev/null
+++ b/cdist/conf/type/__apt_mark/explorer/package_installed
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# 2016 Ander Punnar (cdist at kvlt.ee)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+
+if [ -f "$__object/parameter/name" ]; then
+ name="$(cat "$__object/parameter/name")"
+else
+ name="$__object_id"
+fi
+
+dpkg-query --show --showformat '${Status}' $name 2>/dev/null \
+ | grep -q 'ok installed' \
+ && echo 0 \
+ || echo 1
diff --git a/cdist/conf/type/__apt_mark/gencode-remote b/cdist/conf/type/__apt_mark/gencode-remote
index 14505809..c1ac58b3 100644
--- a/cdist/conf/type/__apt_mark/gencode-remote
+++ b/cdist/conf/type/__apt_mark/gencode-remote
@@ -24,6 +24,19 @@ else
name="$__object_id"
fi
+apt_version="$(cat "$__object/explorer/apt_version")"
+
+if [ "$apt_version" != '0' ]; then
+ echo 'APT version not supported' >&2
+ exit 1
+fi
+
+package_installed="$(cat "$__object/explorer/package_installed")"
+
+if [ "$package_installed" != '0' ]; then
+ exit 0
+fi
+
state_should="$(cat "$__object/parameter/state")"
state_is="$(cat "$__object/explorer/state")"
diff --git a/docs/changelog b/docs/changelog
index ea3c74c2..41fc1ca9 100644
--- a/docs/changelog
+++ b/docs/changelog
@@ -2,6 +2,7 @@ Changelog
---------
next:
+ * Type __apt_mark: check supported apt version and if package is installed (Ander Punnar)
* New type: __docker (Steven Armstrong)
* New type: __package_dpkg (Tomas Pospisek)