summaryrefslogtreecommitdiff
path: root/bin/live-reconfigure
diff options
context:
space:
mode:
Diffstat (limited to 'bin/live-reconfigure')
-rwxr-xr-xbin/live-reconfigure52
1 files changed, 52 insertions, 0 deletions
diff --git a/bin/live-reconfigure b/bin/live-reconfigure
new file mode 100755
index 0000000..4e29768
--- /dev/null
+++ b/bin/live-reconfigure
@@ -0,0 +1,52 @@
+#! /bin/sh
+
+set -e
+export PATH=/usr/bin:/usr/sbin:/sbin:/bin
+
+frontend=noninteractive
+
+findcommandinroot() {
+ ROOT="$1/"
+ shift
+ while [ "$#" -ge 1 ]; do
+ P="$PATH"
+ while [ "$P" ]; do
+ D=${P%%:*}
+ P=${P#*:}
+ if [ "$D" = "$P" ]; then
+ P=
+ fi
+ if [ -z "$D" ]; then
+ D=.
+ fi
+ if [ -x "$ROOT$D/$1" ]; then
+ echo "$D/$1"
+ return 0
+ fi
+ done
+ shift
+ done
+ return 1
+}
+
+runcommandinroot() {
+ C=$(findcommandinroot "$1" "$2")
+ ROOT="$1"
+ shift
+ shift
+ [ -n "$C" ] && chroot "$ROOT" "$C" "$@"
+}
+
+root="$1"
+package="$2"
+
+version=$(runcommandinroot "$root" dpkg-query -W --showformat='${Version}' "$package" 2>/dev/null) || version=""
+
+if [ -z "$version" ]; then
+ echo >&2 "$0: package '$package' is not installed"
+ exit 0
+fi
+
+runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload "$package"
+
+exit 0