From 23f51898f12dd1dd68b173b9521ef88caee528c6 Mon Sep 17 00:00:00 2001 From: oxpoe Date: Thu, 15 Oct 2026 02:10:36 +0700 Subject: [PATCH] fix: pasang paket distro per-paket (apk/pacman/zypper), fallback $HOME tanpa getent, yazi cp+chmod --- install.sh | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index 3ca11ab..ac6707a 100644 --- a/install.sh +++ b/install.sh @@ -19,8 +19,10 @@ die() { printf "${RED} x${NC} %s\n" "$*" >&2; exit 1; } [ "${EUID:-$(id -u)}" -eq 0 ] || die "Jalankan dengan sudo: curl -fsSL | sudo bash" TARGET_USER="${SUDO_USER:-root}" -TARGET_HOME="$(getent passwd "$TARGET_USER" | cut -d: -f6 || true)" -[ -n "${TARGET_HOME:-}" ] && [ -d "$TARGET_HOME" ] || die "Home untuk '${TARGET_USER}' tidak ditemukan." +TARGET_HOME="$(getent passwd "$TARGET_USER" 2>/dev/null | cut -d: -f6 || true)" +[ -n "${TARGET_HOME:-}" ] || TARGET_HOME="$(awk -F: -v u="$TARGET_USER" '$1==u{print $6}' /etc/passwd 2>/dev/null || true)" +[ -n "${TARGET_HOME:-}" ] || TARGET_HOME="${HOME:-/root}" +[ -d "$TARGET_HOME" ] || die "Home untuk '${TARGET_USER}' tidak ditemukan." [ "$TARGET_USER" = root ] && warn "SUDO_USER tak terdeteksi — config user ditulis untuk root." case "$(uname -m)" in @@ -42,11 +44,11 @@ log "User=${TARGET_USER} Arch=${ARCH} PkgMgr=${PM:-none}" install_base() { case "$PM" in apt-get) DEBIAN_FRONTEND=noninteractive apt-get update -qq - DEBIAN_FRONTEND=noninteractive apt-get install -y -qq curl unzip tar ca-certificates ;; - dnf) dnf install -y -q curl unzip tar ca-certificates ;; - pacman) pacman -S --needed --noconfirm curl unzip tar ca-certificates ;; - zypper) zypper --non-interactive install curl unzip tar ca-certificates ;; - apk) apk add --no-cache curl unzip tar ca-certificates ;; + DEBIAN_FRONTEND=noninteractive apt-get install -y -qq curl unzip tar gzip bash ca-certificates ;; + dnf) dnf install -y -q curl unzip tar gzip bash ca-certificates ;; + pacman) pacman -S --needed --noconfirm curl unzip tar gzip bash ca-certificates ;; + zypper) zypper --non-interactive install curl unzip tar gzip bash ca-certificates ;; + apk) apk add --no-cache curl unzip tar gzip bash ca-certificates ;; *) warn "Paket manager tak dikenal — lewati paket dasar." ;; esac } @@ -64,9 +66,9 @@ distro_install() { for p in "${want[@]}"; do dnf -q list --available "$p" >/dev/null 2>&1 && got+=("$p"); done [ ${#got[@]} -eq 0 ] && return 0 dnf install -y "${got[@]}" ;; - pacman) pacman -S --needed --noconfirm "${want[@]}" ;; + pacman) for p in "${want[@]}"; do pacman -S --needed --noconfirm "$p" >/dev/null 2>&1 || true; done ;; zypper) for p in "${want[@]}"; do zypper --non-interactive install "$p" >/dev/null 2>&1 || true; done ;; - apk) apk add --no-cache "${want[@]}" 2>/dev/null || true ;; + apk) for p in "${want[@]}"; do apk add --no-cache "$p" >/dev/null 2>&1 || true; done ;; esac } [ -n "$PM" ] && { log "Coba paket distro"; distro_install || warn "sebagian paket distro gagal (lanjut upstream)"; } @@ -108,8 +110,8 @@ ensure_yazi() { tmp="$(mktemp -d)" curl -fsSL "$url" -o "$tmp/yazi.zip" || die "gagal unduh $url" unzip -q "$tmp/yazi.zip" -d "$tmp" - install -m0755 "$tmp/yazi-${target}/yazi" "$BIN/yazi" - install -m0755 "$tmp/yazi-${target}/ya" "$BIN/ya" + cp -f "$tmp/yazi-${target}/yazi" "$BIN/yazi"; chmod 0755 "$BIN/yazi" + cp -f "$tmp/yazi-${target}/ya" "$BIN/ya"; chmod 0755 "$BIN/ya" rm -rf "$tmp" has yazi || die "yazi gagal dipasang" }