2020-04-28 17:29:52 +02:00
|
|
|
---
|
|
|
|
title: "etc-update script for alpine linux"
|
|
|
|
date: 2019-04-02
|
2021-03-11 23:15:31 +01:00
|
|
|
description: etc-update script for alpine linux
|
|
|
|
tags:
|
2021-09-13 00:48:07 +02:00
|
|
|
- Alpine
|
|
|
|
- linux
|
2020-04-28 17:29:52 +02:00
|
|
|
---
|
|
|
|
|
2021-03-11 23:15:31 +01:00
|
|
|
## The script
|
|
|
|
|
|
|
|
Alpine linux doesn't seem to have a tool to merge pending configuration changes, so I wrote one :
|
2020-04-28 17:29:52 +02:00
|
|
|
{{< highlight sh >}}
|
|
|
|
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
|
|
|
|
for new_file in $(find /etc -iname '*.apk-new'); do
|
|
|
|
current_file=${new_file%.apk-new}
|
|
|
|
echo "===== New config file version for $current_file ====="
|
|
|
|
diff ${current_file} ${new_file} || true
|
|
|
|
while true; do
|
|
|
|
echo "===== (r)eplace file with update? (d)iscard update? (m)erge files? (i)gnore ====="
|
|
|
|
PS2="k/d/m/i? "
|
|
|
|
read choice
|
|
|
|
case ${choice} in
|
|
|
|
r)
|
|
|
|
mv ${new_file} ${current_file}
|
|
|
|
break;;
|
|
|
|
d)
|
|
|
|
rm -f ${new_file}
|
|
|
|
break;;
|
|
|
|
m)
|
|
|
|
vimdiff ${new_file} ${current_file}
|
|
|
|
break;;
|
|
|
|
i)
|
|
|
|
break;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
done
|
|
|
|
{{< /highlight >}}
|