eza is a maintained Rust replacement for ls—colorized output, optional icons, tree view, Git status columns, and clearer dates. It is the successor to the unmaintained exa project and ships as a single binary (eza on GitHub).
This guide covers install eza on Debian for Debian 11 (Bullseye), 12 (Bookworm), and 13 (Trixie): install from Debian apt, add the deb.gierens.de repository listed on eza.rocks, build with cargo install, set aliases, try common flags, and uninstall. I ran every path on Debian 13 and kept real terminal output below.
Tested on: Debian 13 (trixie); kernel 6.12.94+deb13-amd64; amd64.
/usr/bin/eza is not overwritten unexpectedly when you upgrade.
Choose an install method
| Method | Best for | Version on test host |
|---|---|---|
apt install eza |
Simplest on Debian 13; security updates via Debian | 0.21.0 from trixie main |
| deb.gierens.de | Latest stable .deb without compiling (official install docs) |
0.23.4 |
cargo install eza |
Rust developers using rustup | 0.23.4 (crates.io) |
| Build from Git | Contributing or pinning a git revision | Matches checkout |
Most readers on Debian 13 can run sudo apt install eza; add gierens when you need a newer release than your suite ships.
eza vs ls
| Tool | On Debian | Highlights |
|---|---|---|
| ls | /bin/ls (coreutils) |
POSIX default, minimal colors |
| eza | apt, gierens, or ~/.cargo/bin |
Colors, --tree, --git, --icons, hyperlinks |
| exa | Obsolete package | Unmaintained; prefer eza |
Prerequisites
- Debian 11, 12, or 13 on amd64 (eza is also packaged for arm64 and other arches in Debian).
- sudo for
aptinstalls. - curl or wget and gpg for the gierens repository.
- Optional: Git repositories for
eza --gitto show meaningful status. - Optional: rustup (rustup.rs) for
cargo install—Debian’srustcalone may be too old for the newest crate (see Troubleshooting).
Check whether Debian already offers a package:
. /etc/os-release && echo "$PRETTY_NAME"
apt-cache policy ezaDebian GNU/Linux 13 (trixie)
eza:
Installed: (none)
Candidate: 0.21.0-1+b1
Version table:
0.21.0-1+b1 500
500 http://deb.debian.org/debian trixie/main amd64 PackagesOn Bullseye and Bookworm, Candidate: (none) is common—use gierens or cargo instead.
Install eza from Debian apt (recommended on Trixie)
The eza package is built from rust-eza in main:
sudo apt update
sudo apt install -y eza
eza --versioneza - A modern, maintained replacement for ls
v0.21.0 [+git]
https://github.com/eza-community/ezaDependencies pulled on the test host included libgit2 for Git integration:
dpkg -l eza libgit2-1.9 | grep ^iiii eza 0.21.0-1+b1 amd64 Modern replacement for ls
ii libgit2-1.9:amd64 1.9.0+ds-2 amd64 low-level Git libraryUpgrade with the rest of the system:
sudo apt update && sudo apt install --only-upgrade ezaInstall eza from deb.gierens.de
The eza installation page documents a third-party APT repository at deb.gierens.de with newer builds than many stable suites ship.
Add the signing key and source
sudo apt install -y gpg curl
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://raw.githubusercontent.com/eza-community/eza/main/deb.asc \
| sudo gpg --dearmor --yes -o /etc/apt/keyrings/gierens.gpg
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" \
| sudo tee /etc/apt/sources.list.d/gierens.list
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
sudo apt update
apt-cache policy eza | head -12eza:
Installed: 0.21.0-1+b1
Candidate: 0.23.4
Version table:
0.23.4 500
500 http://deb.gierens.de stable/main amd64 Packages
0.23.3 500
500 http://deb.gierens.de stable/main amd64 PackagesInstall or upgrade
sudo apt install -y eza
eza --versioneza - A modern, maintained replacement for ls
v0.23.4 [+git]
https://github.com/eza-community/ezasources.list entry.
Install eza with Cargo
For a user-local install, use crates.io via Cargo:
Install Rust with rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
rustc --versionrustc 1.90.0 (1159e78c4 2025-09-14)Install the eza crate
With rustup on PATH:
cargo install eza --locked
~/.cargo/bin/eza --versionFinished `release` profile [optimized] target(s) in 4m 55s
Installing /root/.cargo/bin/eza
Installed package `eza v0.23.4` (executable `eza`)
eza - A modern, maintained replacement for ls
v0.23.4 [+git]
https://github.com/eza-community/ezaOn Debian 13 you can also compile from crates.io using only apt install rustc cargo—no rustup required if you accept a longer build:
sudo apt install -y rustc cargo
cargo install eza --lockedFinished `release` profile [optimized] target(s) in 7m 11s
Installing /home/user/.cargo/bin/eza
Installed package `eza v0.23.4` (executable `eza`)Ensure ~/.cargo/bin is on your PATH (rustup usually appends this to ~/.profile).
Install from a Git checkout
The git tree tracks newer dependency pins than the published crate lockfile. On this host cargo install --path . failed with apt rustc 1.85 because the checkout requires rustc 1.90+:
git clone https://github.com/eza-community/eza.git
cd eza
cargo install --path . --lockederror: failed to compile `eza v0.23.4 (/path/to/eza)`
Caused by:
rustc 1.85.0 is not supported by the following packages:
[email protected] requires rustc 1.90After rustup (rustc 1.90.0 here), the same command succeeded in about 5m 26s and installed v0.23.4.
See the eza development section for cargo build --release and feature flags such as --no-default-features when you do not need Git support.
--locked built on trixie rustc 1.85 (~7 min). Git checkout builds need rustup stable (1.90+ on this run). Expect ~100 MB+ under ~/.cargo while dependencies compile.
Verify the cargo binary
which -a eza
~/.cargo/bin/eza --icons --grid /tmp | head -5
~/.cargo/bin/eza -la --hyperlink ~ | head -4/root/.cargo/bin/eza
/usr/bin/eza
/bin/eza
cargo-eza-verify
cargo-installNFal60
com.google.Chrome.scoped_dir.nsBkLO
.rw-r--r-- 878 root 29 Jun 08:14 .bashrc
drwxr-xr-x - root 29 Jun 08:15 .cargo--hyperlink emits OSC 8 links in terminals that support them; --icons needs a font with the right glyphs or you will see placeholder boxes.
Verify and daily usage
Quick checks
which eza
eza --help | head -12
MANPAGER=cat man eza 2>/dev/null | head -6/usr/bin/eza
Usage:
eza [options] [files...]
META OPTIONS
-?, --help show list of command-line options
-v, --version show version of eza
eza(1) General Commands Manual eza(1)
NAME
eza — a modern replacement for lsReplace ls for interactive shells
Add to ~/.bashrc or ~/.zshrc:
alias ls='eza'
alias ll='eza -l'
alias la='eza -la'
alias lt='eza --tree'
alias lg='eza -l --git'Reload:
source ~/.bashrcUseful listings
Long format with Git status inside a repository:
cd /root/golinuxcloud-static
eza -l --git | head -8drwxrwxr-x - root 29 Jun 02:50 -- _scripts
drwxrwxr-x - root 29 Jun 02:50 -- archetypes
drwxrwxr-x - root 29 Jun 02:50 -- assets
drwxrwxr-x - root 29 Jun 02:50 -- config
drwxrwxr-x - root 29 Jun 02:50 -N contentShallow tree:
eza --tree --level=2 content/posts/linux/debian | head -12content/posts/linux/debian
├── install-android-studio-debian
│ ├── index.md
│ └── install-android-studio-debian-hero.webp
├── install-apple-music-debian
│ ├── index.md
│ └── install-apple-music-debian-hero.webp
├── install-curl-debian
│ ├── index.md
│ └── install-curl-debian-hero.webp
├── install-deb-file-debianGrid with icons (terminal font permitting):
eza --icons --grid /tmp | head -5Other flags from eza --help: --hyperlink, --sort=size, -D (directories only), --time-style=relative.
Update eza
| Channel | Command |
|---|---|
| Debian apt | sudo apt update && sudo apt install --only-upgrade eza |
| deb.gierens.de | Same as apt after apt update |
| Cargo | cargo install eza --locked (reinstalls latest matching crate) |
Confirm with eza --version. To see what is installed, use list installed packages on Debian or which -a eza when both apt and cargo copies exist.
Uninstall eza
Debian or gierens package
sudo apt remove ezaRemove the gierens repository when you no longer need it:
sudo rm -f /etc/apt/sources.list.d/gierens.list /etc/apt/keyrings/gierens.gpg
sudo apt updateCargo install
cargo uninstall eza
rm -f ~/.cargo/bin/ezaRemove aliases from ~/.bashrc if you added them.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
Candidate: (none) for eza |
Older Debian suite without the package | Use deb.gierens.de or cargo install |
cargo install rustc version errors on git checkout |
Git tree needs rustc 1.90+ | Install rustup; cargo install eza --locked from crates.io may still work on apt rustc 1.85 |
| Cargo build runs many minutes / fills disk | Full Rust compile from source | Use apt or gierens instead; or keep ~/.cargo on a larger partition |
| Icons show as boxes | Terminal font lacks glyphs | Install a Nerd Font or drop --icons |
eza --git shows nothing |
Not inside a Git repo | cd into a project tracked by Git |
Two different eza --version outputs |
Both apt and cargo installs on PATH |
which -a eza; remove one channel |
| gierens apt update warnings | Unrelated broken third-party repos | Fix or remove other sources.list entries; gierens key install is independent |
References
- eza.rocks — official site and install notes
- eza-community/eza on GitHub
- eza package on Debian
- eza on crates.io
- rustup.rs
- On-site: apt command, install Git on Debian, list installed packages on Debian, install Yazi file manager
Summary
Install eza on Debian with sudo apt install eza when your suite ships it (0.21.0 on trixie here), add deb.gierens.de for 0.23.4 without compiling, or run cargo install eza --locked (crates.io on apt rustc 1.85 here, or rustup for git checkouts needing 1.90+). Verify with eza --version, alias ls to eza in your shell rc file, and use eza -l --git or eza --tree for richer listings than plain ls.

