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

+5 -1
View File
@@ -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-<ts>`.
- Plugin Yazi: `full-border`, `smart-filter`, `chmod`, `ouch`, `mediainfo`, `fg`.
- Plugin Yazi: `full-border`, `smart-filter`, `chmod`, `ouch`, `mediainfo`, `fg` (`lpnh/fg`).
## Keybind Yazi
+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"