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:
1 parent
2541e539b1
commit
5dab8b0cce
2 files changed
+19
-13
No files matched your search
@@ -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
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user