| Tested on | Debian 13 (trixie) |
|---|---|
| Package | eza |
| Applies to | Debian |
| Privilege | sudo or root |
| Scope | Install eza on Debian, including Verify, ls aliases, tree, Git listings, and uninstall cleanly. |
| Related guides | Add Apt Repository Command Not Found Apt Install Specific Version Backup Brave Browser Session Ubuntu Check Ubuntu Version Configure Vnc Server Ubuntu |
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.
/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 |
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 — see apt command. - 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.
- For broader CLI reference beyond the
aptandsudosteps below, see the Linux commands.
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:
List files shipped by a package with dpkg -L; the dpkg command shows how to locate binaries and configuration paths.
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:
eza@0.23.4 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.
List every PATH match with which -a; the which command compares which to type -a and command -v.
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 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
- , ,
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.

