fix(installer): Haenger nach "bereits installiert" behoben (VERSION 1.5.0)
x14 blieb nach der letzten Erfolgsmeldung stehen (Abbruch per ^C, kein Fehler). Ursache: grant_apache_log_access() ruft apt-get install acl auf — OHNE apt-get update davor und OHNE Timeout. Bei veralteten Paketlisten kann apt in eine Rueckfrage laufen und unbegrenzt warten. Direkt danach haette der naechste fetch gehangen: fetch() hatte ueberhaupt kein curl-Timeout. Fix: - apt-get update vor dem acl-Install, timeout 180 auf allen Paketmanager-Aufrufen - fetch() mit -m 30 + 3 Versuchen statt unbegrenztem Warten - alle weiteren curl-Aufrufe (keyring, Binary, Re-Exec) mit -m/--connect-timeout - Fortschrittsmeldung vor der ACL-Phase: ein Haenger sah wie ein Absturz aus
This commit is contained in:
1 parent
d11849b6d9
commit
f5b98d2807
2 files changed
+34
-10
No files matched your search
+33
-9
@@ -33,10 +33,10 @@ if [ -z "${NETBIRD_TG_REEXEC:-}" ] && [ ! -t 0 ] && [ -p /dev/stdin ]; then
|
||||
# ausfuehren wie bisher (dann bleibt das Risiko, aber es laeuft).
|
||||
_dl=0
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
curl -fsSL "$_src/install.sh" -o "$_self" 2>/dev/null && [ -s "$_self" ] && _dl=1
|
||||
curl -fsSL -m 30 --connect-timeout 10 "$_src/install.sh" -o "$_self" 2>/dev/null && [ -s "$_self" ] && _dl=1
|
||||
fi
|
||||
if [ "$_dl" -eq 0 ] && command -v wget >/dev/null 2>&1; then
|
||||
wget -q -O "$_self" "$_src/install.sh" 2>/dev/null && [ -s "$_self" ] && _dl=1
|
||||
timeout 30 wget -q -O "$_self" "$_src/install.sh" 2>/dev/null && [ -s "$_self" ] && _dl=1
|
||||
fi
|
||||
if [ "$_dl" -eq 0 ] && command -v busybox >/dev/null 2>&1; then
|
||||
busybox wget -q -O "$_self" "$_src/install.sh" 2>/dev/null && [ -s "$_self" ] && _dl=1
|
||||
@@ -497,7 +497,7 @@ install_apt() {
|
||||
command -v gpg >/dev/null || { apt-get update -qq; apt-get install $APT_OPTS gnupg >/dev/null; }
|
||||
command -v curl >/dev/null || apt-get install $APT_OPTS curl >/dev/null
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://repos.influxdata.com/influxdata-archive.key | gpg --dearmor --yes -o /etc/apt/keyrings/influxdata-archive.gpg
|
||||
curl -fsSL -m 30 --connect-timeout 10 https://repos.influxdata.com/influxdata-archive.key | gpg --dearmor --yes -o /etc/apt/keyrings/influxdata-archive.gpg
|
||||
echo "deb [signed-by=/etc/apt/keyrings/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main" > /etc/apt/sources.list.d/influxdata.list
|
||||
apt-get update -qq
|
||||
apt-get install $APT_OPTS telegraf >/dev/null
|
||||
@@ -524,7 +524,7 @@ install_static() {
|
||||
TB="telegraf-${TELEGRAF_VERSION}_linux_${ARCH}.tar.gz"
|
||||
log "Statisches Binary $TB …"
|
||||
TMP="$(mktemp -d)"
|
||||
curl -fsSL "https://dl.influxdata.com/telegraf/releases/$TB" -o "$TMP/t.tgz"
|
||||
curl -fsSL -m 120 --connect-timeout 10 "https://dl.influxdata.com/telegraf/releases/$TB" -o "$TMP/t.tgz"
|
||||
tar -xzf "$TMP/t.tgz" -C "$TMP"
|
||||
install -m 0755 "$TMP"/telegraf-*/usr/bin/telegraf /usr/local/bin/telegraf
|
||||
rm -rf "$TMP"
|
||||
@@ -595,17 +595,28 @@ fi
|
||||
# Domain-Ordner erben das Recht automatisch.
|
||||
grant_apache_log_access() {
|
||||
[ "$HAS_APACHE" -eq 1 ] || return 0
|
||||
# Fortschritt melden: ohne diese Zeile sah der Lauf wie ein Haenger aus,
|
||||
# weil zwischen "Telegraf bereits installiert" und der naechsten Meldung
|
||||
# ein apt-Aufruf mit Netzwerkzugriff liegt (kann bis zu 3 Minuten dauern).
|
||||
log "Log-Leserechte: pruefe/ergaenze ACL fuer 'telegraf' (kann etwas dauern) …"
|
||||
_u="telegraf"
|
||||
id "$_u" >/dev/null 2>&1 || return 0
|
||||
if ! command -v setfacl >/dev/null 2>&1; then
|
||||
# acl-Paket nachziehen, sonst ist die Rechtevergabe nicht moeglich.
|
||||
# Alle Paketmanager mit </dev/null: sie duerfen nichts aus stdin lesen.
|
||||
# `timeout` ist PFLICHT: ohne Paketlisten kann apt in eine Rueckfrage laufen
|
||||
# und unbegrenzt warten — der Installer haengt dann nach der letzten
|
||||
# Erfolgsmeldung, ohne Fehler. Real passiert (x14): Abbruch per ^C.
|
||||
if command -v apt-get >/dev/null; then
|
||||
NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get update -qq </dev/null >/dev/null 2>&1 || true
|
||||
timeout 180 env NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y -qq acl </dev/null >/dev/null 2>&1 || true
|
||||
elif command -v dnf >/dev/null; then dnf install -y -q acl </dev/null >/dev/null 2>&1 || true
|
||||
elif command -v yum >/dev/null; then yum install -y -q acl </dev/null >/dev/null 2>&1 || true
|
||||
elif command -v apk >/dev/null; then apk add --no-cache -q acl </dev/null >/dev/null 2>&1 || true
|
||||
elif command -v dnf >/dev/null; then
|
||||
timeout 180 dnf install -y -q acl </dev/null >/dev/null 2>&1 || true
|
||||
elif command -v yum >/dev/null; then
|
||||
timeout 180 yum install -y -q acl </dev/null >/dev/null 2>&1 || true
|
||||
elif command -v apk >/dev/null; then
|
||||
timeout 180 apk add --no-cache -q acl </dev/null >/dev/null 2>&1 || true
|
||||
fi
|
||||
fi
|
||||
if ! command -v setfacl >/dev/null 2>&1; then
|
||||
@@ -704,7 +715,20 @@ APACHE_LOG='$APACHE_LOG'
|
||||
EOF
|
||||
umask 022
|
||||
|
||||
fetch() { curl -fsSL "$REPO_RAW/$1" -o "$2" || die "Download $1 fehlgeschlagen."; }
|
||||
# Jeder Download MIT Timeout: ohne -m wartet curl unbegrenzt, wenn das Netz
|
||||
# haengt (NetBird-Tunnel, DNS). Der Installer bliebe dann nach der letzten
|
||||
# Erfolgsmeldung stehen — ohne Fehler, ohne Ende. Genau das passierte auf x14.
|
||||
fetch() {
|
||||
_tries=3
|
||||
while [ "$_tries" -gt 0 ]; do
|
||||
if curl -fsSL -m 30 --connect-timeout 10 "$REPO_RAW/$1" -o "$2" 2>/dev/null; then
|
||||
return 0
|
||||
fi
|
||||
_tries=$((_tries - 1))
|
||||
[ "$_tries" -gt 0 ] && sleep 2
|
||||
done
|
||||
die "Download $1 fehlgeschlagen nach 3 Versuchen ($REPO_RAW/$1)."
|
||||
}
|
||||
|
||||
# Ersatz fuer envsubst, falls gettext fehlt (Minimal-Container, schlanke
|
||||
# Alpine-/Rocky-Installationen). Ersetzt nur die uebergebenen Variablennamen —
|
||||
|
||||
Reference in new issue
Block a user