#!/bin/bash set -uo pipefail NAPLO=/var/log/raveos-telepito-frissites.log CSOMAGOK=(calamares raveos-calamares-module raveos-calamares-theme) MENTES=/tmp/calamares-elozo.tar LISTA=/tmp/calamares-elozo.lista REPOCONF=/tmp/raveos-csak-repo.conf exec > >(tee -a "$NAPLO") 2>&1 echo "== RaveOS telepito frissites: $(date)" van_net() { curl -fsI --max-time 6 https://page.rp1.hu/x86_64/ >/dev/null || curl -fsI --max-time 6 https://rp1.hu/ >/dev/null } for _ in $(seq 1 10); do van_net && break sleep 2 done if ! van_net; then echo "Nincs internet. Valassz wifi halozatot a listabol (Esc: kihagyas)." sleep 2 nmtui-connect /dev/tty 2>&1 for _ in $(seq 1 10); do van_net && break sleep 2 done fi if ! van_net; then echo "Nincs internet, a telepito a meglevo verzioval indul." sleep 2 exit 0 fi for _ in $(seq 1 60); do systemctl is-active --quiet pacman-init.service && break sleep 1 done sed -n '1,/^\[core\]/p' /etc/pacman.conf | sed '$d' > "$REPOCONF" if ! timeout 60 pacman --config "$REPOCONF" -Sy; then echo "A RaveOS repo nem erheto el, a telepito a meglevo verzioval indul." sleep 2 exit 0 fi FRISS=$(pacman --config "$REPOCONF" -Qu "${CSOMAGOK[@]}" 2>/dev/null) if [ -z "$FRISS" ]; then echo "A telepito naprakesz." exit 0 fi echo "Elerheto frissites:" echo "$FRISS" { pacman -Qlq "${CSOMAGOK[@]}" | grep -v '/$' for cs in "${CSOMAGOK[@]}"; do ls -d /var/lib/pacman/local/"$cs"-[0-9]* 2>/dev/null done } | sed 's#^/##' | sort > "$LISTA" tar -cf "$MENTES" -C / -T "$LISTA" 2>/dev/null visszaallit() { echo "$1" rm -f /var/lib/pacman/db.lck pacman -Qlq "${CSOMAGOK[@]}" 2>/dev/null | grep -v '/$' | sed 's#^/##' | sort > "$LISTA.uj" comm -13 "$LISTA" "$LISTA.uj" | while IFS= read -r f; do rm -f "/$f"; done for cs in "${CSOMAGOK[@]}"; do rm -rf /var/lib/pacman/local/"$cs"-[0-9]* done tar -xf "$MENTES" -C / sleep 3 exit 0 } if ! timeout 180 pacman --config "$REPOCONF" -S --needed --noconfirm "${CSOMAGOK[@]}"; then visszaallit "A frissites nem sikerult, visszaallitas." fi if ldd /usr/bin/calamares /usr/lib/libcalamares*.so* /usr/lib/calamares/modules/*/*.so 2>&1 | grep -q "not found"; then visszaallit "Az uj telepito hianyzo konyvtarat igenyel, visszaallitas a regi verziora." fi echo "A telepito frissitve." sleep 1