fix: pasang ncurses + git, dan pakai lpnh/fg untuk plugin Yazi

Tiga sebab "Lua runtime failed" tiap kali yazi dibuka:

- ncurses tidak ada di daftar paket dasar, jadi `clear` tidak ada di image
  minimal (Fedora/Debian container).
- git tidak ada, sehingga `ya pkg add` gagal. Kegagalan itu tersembunyi
  karena run_as_user memakai `2>/dev/null` + `|| true`, jadi script tetap
  melaporkan "selesai" padahal init.lua memanggil plugin yang tak pernah ada.
- fg.yazi di-clone dari github.com/DreamMaoMao/fg.yazi, padahal repo itu
  hanya ada di Gitee sehingga 404 lalu meminta kredensial.

- tambah ncurses + git pada kelima package manager
- hapus 2>/dev/null di run_as_user supaya kegagalan kelihatan
- ganti clone manual fg.yazi -> `ya pkg add lpnh/fg`
This commit is contained in:
oxpoe committed 2026-10-16 08:27:17 +07:00
1 parent 2541e539b1
commit 5dab8b0cce
2 files changed
+19 -13

No files matched your search

+14 -12
View File
@@ -44,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 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 ;;
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq curl unzip tar gzip bash ca-certificates ncurses git ;;
dnf) dnf install -y -q curl unzip tar gzip bash ca-certificates ncurses git ;;
pacman) pacman -S --needed --noconfirm curl unzip tar gzip bash ca-certificates ncurses git ;;
zypper) zypper --non-interactive install curl unzip tar gzip bash ca-certificates ncurses git ;;
apk) apk add --no-cache curl unzip tar gzip bash ca-certificates ncurses git ;;
*) warn "Paket manager tak dikenal — lewati paket dasar." ;;
esac
}
@@ -157,9 +157,12 @@ has mediainfo || warn "mediainfo tak ada di repo distro (metadata media Yazi dil
# ---------------------------------------------------------------- config yazi
run_as_user() { # jalankan perintah sebagai user target (HOME-nya benar)
# Jangan sembunyikan stderr: dulu `2>/dev/null` membuat kegagalan `ya pkg add`
# (mis. git belum terpasang) tidak terlihat, lalu init.lua memanggil plugin yang
# tidak pernah ada -> "Lua runtime failed" saat yazi dibuka.
local u="$1"; shift
if [ "$u" = root ]; then bash -lc "$*" 2>/dev/null
else su -l "$u" -c "$*" 2>/dev/null; fi
if [ "$u" = root ]; then bash -lc "$*"
else su -l "$u" -c "$*"; fi
}
write_yazi() {
@@ -250,13 +253,12 @@ install_yazi_plugins() {
local home="$1" user="$2" ya p cmd
ya="$(command -v ya || command -v yazi || true)"
[ -n "$ya" ] || { warn "ya/yazi tak ada — plugin Yazi dilewati"; return 0; }
for p in yazi-rs/plugins:full-border yazi-rs/plugins:smart-filter yazi-rs/plugins:chmod ndtoan96/ouch boydaihungst/mediainfo; do
# fg: pakai lpnh/fg (ada di GitHub). Repo DreamMaoMao/fg.yazi hanya ada di
# Gitee, jadi URL GitHub lama selalu 404 -> init.lua memanggil plugin yang
# tidak pernah ada -> "Lua runtime failed" tiap kali yazi dibuka.
for p in yazi-rs/plugins:full-border yazi-rs/plugins:smart-filter yazi-rs/plugins:chmod ndtoan96/ouch boydaihungst/mediainfo lpnh/fg; do
run_as_user "$user" "'$ya' pkg add '$p'" || true
done
# fg.yazi: nama tak kebab-case -> clone manual
if [ ! -d "$home/.config/yazi/plugins/fg.yazi" ]; then
run_as_user "$user" "git clone --depth 1 https://github.com/DreamMaoMao/fg.yazi.git '$home/.config/yazi/plugins/fg.yazi'" || true
fi
}
log "Config Yazi (editor=micro, metadata media, arsip) untuk $TARGET_USER"