How to Install eza on Debian

Install eza on Debian 11, 12, or 13 with apt install eza, the deb.gierens.de APT repository for newer releases, or cargo install eza with rustup. Verify with eza --version, set ls aliases, use tree and Git listings, and uninstall cleanly.

Published

Updated

Read time 8 min read

Reviewed byDeepak Prasad

Install eza on Debian hero with DEBIAN GUIDE badge, colorful ls replacement graphics, and terminal listing highlights

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.

NOTE
eza lists files; it does not delete or move them. Pick one packaging channel (Debian or gierens or cargo) so /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 apt installs.
  • curl or wget and gpg for the gierens repository.
  • Optional: Git repositories for eza --git to show meaningful status.
  • Optional: rustup (rustup.rs) for cargo install—Debian’s rustc alone may be too old for the newest crate (see Troubleshooting).

Check whether Debian already offers a package:

bash
. /etc/os-release && echo "$PRETTY_NAME"
apt-cache policy eza
text
Debian 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 Packages

On Bullseye and Bookworm, Candidate: (none) is common—use gierens or cargo instead.


The eza package is built from rust-eza in main:

bash
sudo apt update
sudo apt install -y eza
eza --version
text
eza - A modern, maintained replacement for ls
v0.21.0 [+git]
https://github.com/eza-community/eza

Dependencies pulled on the test host included libgit2 for Git integration:

bash
dpkg -l eza libgit2-1.9 | grep ^ii
text
ii  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 library

Upgrade with the rest of the system:

bash
sudo apt update && sudo apt install --only-upgrade eza

Install 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

bash
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 -12
text
eza:
  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 Packages

Install or upgrade

bash
sudo apt install -y eza
eza --version
text
eza - A modern, maintained replacement for ls
v0.23.4 [+git]
https://github.com/eza-community/eza
IMPORTANT
deb.gierens.de is maintained separately from the Debian project—verify you trust the publisher before adding the repository, the same way you would for any third-party sources.list entry.

Install eza with Cargo

For a user-local install, use crates.io via Cargo:

Install Rust with rustup

bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
rustc --version
text
rustc 1.90.0 (1159e78c4 2025-09-14)

Install the eza crate

With rustup on PATH:

bash
cargo install eza --locked
~/.cargo/bin/eza --version
text
Finished `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/eza

On Debian 13 you can also compile from crates.io using only apt install rustc cargo—no rustup required if you accept a longer build:

bash
sudo apt install -y rustc cargo
cargo install eza --locked
text
Finished `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+:

bash
git clone https://github.com/eza-community/eza.git
cd eza
cargo install --path . --locked
text
error: 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.90

After 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.

HINT
crates.io with --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

bash
which -a eza
~/.cargo/bin/eza --icons --grid /tmp | head -5
~/.cargo/bin/eza -la --hyperlink ~ | head -4
text
/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

bash
which eza
eza --help | head -12
MANPAGER=cat man eza 2>/dev/null | head -6
text
/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 ls

Replace ls for interactive shells

Add to ~/.bashrc or ~/.zshrc:

bash
alias ls='eza'
alias ll='eza -l'
alias la='eza -la'
alias lt='eza --tree'
alias lg='eza -l --git'

Reload:

bash
source ~/.bashrc

Useful listings

Long format with Git status inside a repository:

bash
cd /root/golinuxcloud-static
eza -l --git | head -8
text
drwxrwxr-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 content

Shallow tree:

bash
eza --tree --level=2 content/posts/linux/debian | head -12
text
content/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-debian

Grid with icons (terminal font permitting):

bash
eza --icons --grid /tmp | head -5

Other 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

bash
sudo apt remove eza

Remove the gierens repository when you no longer need it:

bash
sudo rm -f /etc/apt/sources.list.d/gierens.list /etc/apt/keyrings/gierens.gpg
sudo apt update

Cargo install

bash
cargo uninstall eza
rm -f ~/.cargo/bin/eza

Remove 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


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.


Frequently Asked Questions

1. How do I install eza on Debian?

On Debian 13 run sudo apt install eza. For newer upstream builds add the deb.gierens.de repository documented on eza.rocks, then sudo apt install eza. Developers can also run cargo install eza after installing Rust with rustup.

2. Is eza in the Debian apt repositories?

Yes on Debian 13 (trixie)—the eza package is in main (0.21.0 on the test host). Older releases may not ship it; run apt-cache policy eza or use deb.gierens.de when the candidate is empty.

3. What is the difference between eza and ls?

eza is a modern file lister with colors, optional icons, tree view, Git status columns, and human-readable dates. ls remains the POSIX default on Debian; eza is a drop-in alternative you invoke as eza or via shell aliases.

4. Which eza install method should I use on Debian?

Use apt when the Debian version in your suite is new enough. Add deb.gierens.de when you want the latest stable .deb without compiling. Use cargo install when you already manage Rust with rustup and want crates.io releases.

5. Why did cargo install eza fail with a rustc version error?

Building from a Git checkout often needs rustc 1.90+ (apt rustc 1.85 failed here). cargo install eza --locked from crates.io compiled on trixie with apt rustc 1.85 in about seven minutes. For git builds or newer Rust, install rustup from rustup.rs and run rustup update stable.

6. How do I make eza my default ls command?

Add aliases to ~/.bashrc or ~/.zshrc: alias ls="eza" and alias ll="eza -l". Reload the shell with source ~/.bashrc. Scripts that call /bin/ls directly are unchanged.

7. Do I need a Nerd Font for eza icons?

Icons with --icons render best when your terminal uses a Nerd Font or another font with the required glyphs. Listings still work without icons—omit --icons or install a compatible font.

8. How do I uninstall eza from Debian?

For apt or gierens packages: sudo apt remove eza. Remove /etc/apt/sources.list.d/gierens.list and /etc/apt/keyrings/gierens.gpg if you added that repo. For cargo: rm ~/.cargo/bin/eza or cargo uninstall eza.
Omer Cakmak

Linux Administrator

Highly skilled at managing Debian, Ubuntu, CentOS, Oracle Linux, and Red Hat servers. Proficient in bash scripting, Ansible, and AWX central server management, he handles server operations on …