#!/usr/bin/env bash # ZION TERMINAL - Atualizacao segura do sistema # Cyberdeck criado por Pablo Murad em 2026 export LC_ALL=C . /opt/zion-terminal/bin/zion-lib.sh 2>/dev/null LOG=/opt/zion-terminal/logs/update.log [ "$1" = "--help" ] && { echo "Uso: zion atualizar — atualiza indices, mostra o que sera atualizado, pede confirmacao e aplica (respeitando o hold do kernel). Registra em $LOG."; exit 0; } printf '%b ZION TERMINAL — Atualizacao%b\n' "$ZP$ZB" "$ZR"; zion_regua 50 echo " Atualizando indices (apt update)..." sudo apt-get update -qq 2>/dev/null mapfile -t ups < <(apt list --upgradable 2>/dev/null | grep -v Listing) n=${#ups[@]} if [ "$n" -eq 0 ]; then printf ' %bSistema ja atualizado. Nada a fazer.%b\n' "$ZOK" "$ZR"; exit 0; fi printf ' %b%d pacote(s) a atualizar:%b\n' "$ZWARN" "$n" "$ZR" printf ' • %s\n' "${ups[@]:0:20}" [ "$n" -gt 20 ] && echo " ... e mais $((n-20))" echo " (kernel/BSP em hold NAO serao tocados: $(apt-mark showhold | tr '\n' ' '))" read -r -p "$(printf '%b Aplicar atualizacoes? [s/N]:%b ' "$ZWARN" "$ZR")" r [ "$r" = s ] || [ "$r" = S ] || { echo " Cancelado."; exit 0; } echo " Aplicando..." sudo DEBIAN_FRONTEND=noninteractive apt-get -y full-upgrade 2>&1 | tee -a "$LOG" | grep -iE "Setting up|Removing|newly" | sed 's/^/ /' printf '[%s] update aplicado (%d pacotes)\n' "$(date '+%F %T')" "$n" >> "$LOG" if [ -f /var/run/reboot-required ]; then printf ' %b● Reinicializacao recomendada.%b\n' "$ZWARN" "$ZR"; else printf ' %b● Concluido. Reboot nao necessario.%b\n' "$ZOK" "$ZR"; fi