1
0
Fork 0

Fix neovim symlink target: was basename(tarball), now explicit NVIM_EXTRACT_DIR

The tarball filename is nvim-linux-arm64.tar.gz but the extracted
directory inside it is also named nvim-linux-arm64. However, my
original code did $(basename nvim.tar.gz .tar.gz) which returns 'nvim'
(strips both the directory and the suffix), creating a symlink to
/opt/nvim/bin/nvim that pointed to a non-existent path.

Discovered on rye after the bootstrap appeared to succeed but nvim
wasn't findable. Fixed by hardcoding the extracted directory name
based on the arch case:

  x86_64:   nvim-linux64.tar.gz  ->  nvim-linux64
  aarch64:  nvim-linux-arm64.tar.gz -> nvim-linux-arm64

Same fix applied to:
- run_once_20-install-user-packages.sh.tmpl (initial install)
- dot_local/bin/update-neovim.sh (topgrade-time updates)

Verified on rye: /usr/local/bin/nvim -> /opt/nvim-linux-arm64/bin/nvim,
'nvim --version' returns 'NVIM v0.11.4'.
This commit is contained in:
Rain 2026-06-21 21:31:44 -04:00
parent a07596ebf7
commit 5ce06f98de
2 changed files with 18 additions and 6 deletions

View file

@ -14,8 +14,14 @@ NVIM_TARGET_VERSION="v0.11.4"
ARCH="$(uname -m)"
case "$ARCH" in
x86_64) NVIM_TARBALL="nvim-linux64.tar.gz" ;;
aarch64|arm64) NVIM_TARBALL="nvim-linux-arm64.tar.gz" ;;
x86_64)
NVIM_TARBALL="nvim-linux64.tar.gz"
NVIM_EXTRACT_DIR="nvim-linux64"
;;
aarch64|arm64)
NVIM_TARBALL="nvim-linux-arm64.tar.gz"
NVIM_EXTRACT_DIR="nvim-linux-arm64"
;;
*)
echo "unsupported arch: $ARCH" >&2
exit 1
@ -46,7 +52,7 @@ fi
sudo rm -rf /opt/nvim-linux* /usr/local/bin/nvim
sudo tar -xzf "$TMP_TARBALL" -C /opt/
sudo ln -sf "/opt/$(basename "$TMP_TARBALL" .tar.gz)/bin/nvim" /usr/local/bin/nvim
sudo ln -sf "/opt/${NVIM_EXTRACT_DIR}/bin/nvim" /usr/local/bin/nvim
echo "neovim $NVIM_TARGET_VERSION installed"
nvim --version | head -1

View file

@ -68,8 +68,14 @@ fi
NVIM_TARGET_VERSION="v0.11.4"
ARCH="$(uname -m)"
case "$ARCH" in
x86_64) NVIM_TARBALL="nvim-linux64.tar.gz" ;;
aarch64|arm64) NVIM_TARBALL="nvim-linux-arm64.tar.gz" ;;
x86_64)
NVIM_TARBALL="nvim-linux64.tar.gz"
NVIM_EXTRACT_DIR="nvim-linux64"
;;
aarch64|arm64)
NVIM_TARBALL="nvim-linux-arm64.tar.gz"
NVIM_EXTRACT_DIR="nvim-linux-arm64"
;;
*)
die "unsupported arch for neovim tarball: $ARCH"
;;
@ -95,7 +101,7 @@ if [[ -n "$NVIM_TARBALL" ]]; then
fi
sudo rm -rf /opt/nvim-linux* /usr/local/bin/nvim
sudo tar -xzf nvim.tar.gz -C /opt/
sudo ln -sf "/opt/$(basename nvim.tar.gz .tar.gz)/bin/nvim" /usr/local/bin/nvim
sudo ln -sf "/opt/${NVIM_EXTRACT_DIR}/bin/nvim" /usr/local/bin/nvim
rm -f nvim.tar.gz
fi