mirror of
https://github.com/buanet/ioBroker.docker.git
synced 2025-12-17 10:29:00 +02:00
84 lines
2.9 KiB
Bash
84 lines
2.9 KiB
Bash
#!/bin/bash
|
|
|
|
# bash strict mode
|
|
set -euo pipefail
|
|
|
|
# Reading ENV
|
|
set +u
|
|
packages=$PACKAGES
|
|
debug=$DEBUG
|
|
set -u
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
check_package_preq() {
|
|
# check for influx packages
|
|
if [[ "$i" == "influxdb" || "$i" == "influxdb2-cli" ]]; then
|
|
# add influxdata repo keys
|
|
wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
|
|
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main" | sudo tee /etc/apt/sources.list.d/influxdata.list
|
|
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
|
|
fi
|
|
}
|
|
check_package_validity() {
|
|
# check string for double spaces
|
|
while echo "$packages" | grep -q ' '; do
|
|
packages=$(echo "$packages" | sed 's/ / /g')
|
|
done
|
|
# remove packages when "influxdb" AND "influxdb2-cli"
|
|
if echo "$packages" | grep -qw "influxdb" && echo "$packages" | grep -qw "influxdb2-cli"; then
|
|
echo "PACKAGES includes influxdb AND influxdb2-cli."
|
|
echo "As installing both packages together is not possible, they will be skipped."
|
|
packages=$(echo "$packages" | sed 's/influxdb2-cli//g;s/influxdb//g')
|
|
# check string for double spaces again
|
|
while echo "$packages" | grep -q ' '; do
|
|
packages=$(echo "$packages" | sed 's/ / /g')
|
|
done
|
|
if [[ $debug == "true" ]]; then echo "[DEBUG] New list of packages: ""$packages"; fi
|
|
echo " "
|
|
fi
|
|
}
|
|
|
|
if [[ "$1" == "-install" ]]; then
|
|
echo " "
|
|
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
|
|
check_package_validity
|
|
for i in $packages; do
|
|
if ! dpkg -s "$i" >/dev/null 2>&1; then
|
|
echo -n "$i is not installed. Installing... "
|
|
check_package_preq >> /opt/scripts/setup_packages.log 2>&1
|
|
if ! apt-get -q -y --no-install-recommends install "$i" >> /opt/scripts/setup_packages.log 2>&1; then
|
|
echo "Failed."
|
|
echo "For more details see \"/opt/scripts/setup_packages.log\"."
|
|
else
|
|
echo "Done."
|
|
fi
|
|
else
|
|
echo "$i is already installed."
|
|
fi
|
|
done
|
|
elif [[ "$1" == "-update" ]]; then
|
|
echo -n "Updating Linux packages on first run... "
|
|
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
|
|
return1=$?
|
|
apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1
|
|
return2=$?
|
|
if [[ "$return1" -ne 0 || "$return2" -ne 0 ]]; then
|
|
echo "Failed."
|
|
echo "For more details see \"/opt/scripts/setup_packages.log\"."
|
|
echo "Make sure the container has internet access to get the latest package updates."
|
|
echo "This has no impact to the setup process. The script will continue."
|
|
else
|
|
echo "Done."
|
|
fi
|
|
else
|
|
echo "No paramerter found!"
|
|
exit 1
|
|
fi
|
|
|
|
# Silent Cleanup
|
|
apt-get -qq autoclean -y && apt-get -qq autoremove && apt-get -qq clean
|
|
rm -rf /tmp/* /var/tmp/* /root/.cache/* /var/lib/apt/lists/*
|
|
rm -f /opt/scripts/.packages /opt/scripts/.docker_config/.packages
|
|
|
|
exit 0 |