Install eza on a remote Linux server without sudo, apt, or Rust
This guide installs the modern ls replacement eza entirely in your home directory, using a prebuilt release tarball. Works on shared servers where you can’t use sudo and don’t have apt or Rust.
TL;DR: download a prebuilt tarball → put
ezain~/.local/bin→ add toPATH→ (optional) completions + man page. Use the musl build if the glibc-linked binary won’t run.
0) Check your CPU and pick the right tarball
uname -m # x86_64 (aka amd64) or aarch64 (aka arm64)
- For x86_64: use
eza_x86_64-unknown-linux-gnu.tar.gz(glibc) oreza_x86_64-unknown-linux-musl.tar.gz(static, safest). - For aarch64: use
eza_aarch64-unknown-linux-gnu.tar.gzor the musl variant if available.
If you see “No such file or directory” when running
~/.../ezaeven though it exists, your system’s dynamic loader/glibcdoesn’t match. Use the musl build for maximum portability.
1) Create user-local bin + PATH
mkdir -p ~/.local/bin ~/.local/share/man/man1 ~/.local/share/bash-completion/completions ~/.local/share/zsh/site-functions ~/.config/fish/completions
# Add to PATH (append to BOTH if you use different shells)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
# (optional) show user manuals stored under ~/.local
echo 'export MANPATH="$HOME/.local/share/man:$MANPATH"' >> ~/.bashrc
echo 'export MANPATH="$HOME/.local/share/man:$MANPATH"' >> ~/.zshrc
# reload your shell config (pick your shell)
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null
2) Download and install eza (no sudo)
If outbound downloads are blocked, download on your laptop and
scpthe file to the server, then continue from step 2.2.
2.1 Pick a release URL
Example for x86_64 glibc (you provided this link):
https://github.com/eza-community/eza/releases/download/v0.23.4/eza_x86_64-unknown-linux-gnu.tar.gz
Safer fallback (musl, static) for x86_64 (change to the matching version tag if needed):
https://github.com/eza-community/eza/releases/download/v0.23.4/eza_x86_64-unknown-linux-musl.tar.gz
2.2 Fetch & extract
cd /tmp
# Use curl (or wget)
curl -L -o eza.tgz "https://github.com/eza-community/eza/releases/download/v0.23.4/eza_x86_64-unknown-linux-gnu.tar.gz"
tar -xzf eza.tgz
# The archive usually contains a single 'eza' binary and optional folders like completions/man
# Move the binary into your local bin:
cp -f eza ~/.local/bin/
chmod 0755 ~/.local/bin/eza
# Make sure your shell sees it
hash -r 2>/dev/null || true
~/.local/bin/eza --version
If the command fails to execute, repeat the
curlstep with the musl tarball and copy that binary instead.
3) (Optional) Shell completions & man page
If the extracted archive includes these files, install them locally.
3.1 Bash
# Copy completion
if [ -f completions/eza.bash ]; then
cp -f completions/eza.bash ~/.local/share/bash-completion/completions/eza
# Ensure bash loads local completions (add once to ~/.bashrc)
grep -q 'bash-completion' ~/.bashrc || cat >> ~/.bashrc <<'EOF'
# Load user bash-completion if available
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
fi
for f in "$HOME/.local/share/bash-completion/completions/"*; do
[ -f "$f" ] && . "$f"
done
EOF
source ~/.bashrc
fi
3.2 Zsh
# Copy completion
if [ -f completions/_eza ]; then
cp -f completions/_eza ~/.local/share/zsh/site-functions/_eza
# Ensure zsh searches our local site-functions (add once to ~/.zshrc)
grep -q 'zsh/site-functions' ~/.zshrc || cat >> ~/.zshrc <<'EOF'
fpath+=("$HOME/.local/share/zsh/site-functions")
autoload -Uz compinit
compinit
EOF
source ~/.zshrc
fi
3.3 Fish
if [ -f completions/eza.fish ]; then
cp -f completions/eza.fish ~/.config/fish/completions/eza.fish
fi
3.4 Man page
if [ -f man/eza.1 ]; then
cp -f man/eza.1 ~/.local/share/man/man1/
# some systems don’t have user mandb; you can always:
man -l ~/.local/share/man/man1/eza.1
fi
4) Nice aliases (optional)
Add to ~/.bashrc or ~/.zshrc:
alias ls='eza -al --group-directories-first --icons=auto'
alias ll='eza -l --group-directories-first --icons=auto'
alias lt='eza --tree --level=2 --icons=auto'
Icons show only if your terminal font supports them (e.g., a Nerd Font). If you see weird boxes, drop
--iconsor install a Nerd Font locally.
5) Uninstall (user-local)
rm -f ~/.local/bin/eza
rm -f ~/.local/share/bash-completion/completions/eza
rm -f ~/.local/share/zsh/site-functions/_eza
rm -f ~/.config/fish/completions/eza.fish
rm -f ~/.local/share/man/man1/eza.1
sed -i.bak '/eza -al/d;/eza -l/d;/eza --tree/d' ~/.bashrc ~/.zshrc 2>/dev/null || true
6) Troubleshooting
- Binary won’t run; “No such file or directory”: switch from the
-unknown-linux-gnutarball to the-unknown-linux-musltarball (static, no glibc mismatch). ~/.local/binnot found onPATH: re-runsource ~/.bashrcorsource ~/.zshrc; echo$PATHto confirm.- Completions not appearing: ensure the completion files exist at the paths above and your shell init includes the loading snippets.
- No curl/wget: download the tarball on your laptop and
scpit to the server:scp eza_x86_64-unknown-linux-musl.tar.gz user@server:~
One‑liner (x86_64, musl, safest)
mkdir -p ~/.local/bin && cd /tmp && curl -L -o eza.tgz https://github.com/eza-community/eza/releases/download/v0.23.4/eza_x86_64-unknown-linux-musl.tar.gz && tar -xzf eza.tgz && chmod +x eza && mv -f eza ~/.local/bin/ && echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && . ~/.bashrc && ~/.local/bin/eza --version