From 5dab8b0ccec5af58e0034c7600177c61ee93d0b3 Mon Sep 17 00:00:00 2001 From: oxpoe Date: Fri, 16 Oct 2026 08:27:17 +0700 Subject: [PATCH] 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` --- README.md | 6 +++++- install.sh | 26 ++++++++++++++------------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 4ad8917..c12ec7c 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,10 @@ curl -fsSL https://gitea.oxpoe.qzz.io/oxpoe/temp-own/raw/branch/main/install.sh | mediainfo | metadata media (yazi) | repo distro | | ouch | arsip zip/tar/7z/… (yazi) | repo distro / release GitHub | +Paket dasar yang selalu dipasang: `curl`, `unzip`, `tar`, `gzip`, `bash`, `ca-certificates`, `ncurses`, `git` +(NCurses menyediakan `clear`, `tput`, dan utilitas terminal lain — tanpa itu `clear` tidak ada di image minimal. +`git` dibutuhkan `ya pkg add` untuk meng-clone plugin Yazi.) + Yang tak tersedia di repo distro dipasang ke `/usr/local/bin`. ## Yang diubah di sistem @@ -38,7 +42,7 @@ Yang tak tersedia di repo distro dipasang ke `/usr/local/bin`. `EDITOR`/`VISUAL=micro`, `starship init fish`, dan **greeting `fastfetch`**. - default shell user (SUDO_USER) & `root` → fish (`chsh`). - `~/.config/yazi/` (user + root) → `yazi.toml` (editor micro, previewer mediainfo/ouch, ekstrak ouch), `keymap.toml`, `init.lua` — file lama di-backup `.bak-`. -- Plugin Yazi: `full-border`, `smart-filter`, `chmod`, `ouch`, `mediainfo`, `fg`. +- Plugin Yazi: `full-border`, `smart-filter`, `chmod`, `ouch`, `mediainfo`, `fg` (`lpnh/fg`). ## Keybind Yazi diff --git a/install.sh b/install.sh index 7db5fd9..1a0954f 100644 --- a/install.sh +++ b/install.sh @@ -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"