How to Install uv on Debian: The Blazing-Fast Python Package Manager

uv is an extremely fast Python package and project manager written in Rust by Astral, the team behind Ruff. It sets out to replace a whole drawer of tools, pip, pip-tools, pipx, poetry, pyenv, virtualenv and twine among them, behind a single unified command that is routinely 10 to 100 times faster than the tools it stands in for.

uv is being adopted rapidly across the Python ecosystem, but it is not part of the official Debian archive. Installing it usually means running a shell installer or pulling a binary by hand, then arranging your own updates.

The unofficial deb.griffo.io repository removes that friction: it packages uv as a standard Debian .deb served over APT, so installation and updates use the tooling you already run for the rest of your system.

Install the Latest uv on Debian: The Short Version

If you only came for the commands, this adds the repository and installs the latest uv .deb package on Debian:

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
sudo apt install uv

The rest of this guide explains what each command does, how to verify the install, how to keep uv up to date, and what to check when something goes wrong.

What Makes uv Special?

  • ๐Ÿš€ One tool, many jobs - Replaces pip, pipx, poetry, pyenv, virtualenv and more behind a single command.
  • โšก Rust-grade speed - Dependency resolution and installs run 10-100x faster than pip.
  • ๐Ÿ—‚๏ธ Real project management - Universal lockfiles, workspaces and reproducible dependency resolution.
  • โ‡๏ธ Inline-script running - Execute scripts with PEP 723 inline dependency metadata in isolated environments.
  • ๐Ÿ Python version management - Download and pin CPython builds without pyenv.
  • ๐Ÿ› ๏ธ Tool runner - Install and run Python CLIs globally or ephemerally, pipx-style.
  • ๐Ÿ”ฉ pip-compatible interface - uv pip mirrors familiar commands for an easy migration.
  • ๐Ÿ’พ Space-efficient cache - A global cache deduplicates packages across environments.

Why Use the deb.griffo.io Repository?

  • Easy installation and updates through APT, no curl-to-shell installer.
  • Automatic dependency management handled by Debian packaging.
  • Always tracks upstream releases so you stay close to the latest uv.
  • No compiling from source and no Rust toolchain to maintain.
  • Works across supported Debian releases, with the codename detected automatically.

Prerequisites

Before you start, make sure you have:

  • A Debian-based system (Bookworm 12, Trixie 13, or Sid)
  • sudo privileges
  • curl installed (sudo apt install curl if needed)

Step 1: Add the deb.griffo.io Repository

Add the signing key and repository source:

# Create the keyrings directory
sudo install -d -m 0755 /etc/apt/keyrings

# Download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg

# Add the repository (auto-detects your distro codename)
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null

# Update the package list
sudo apt update

What each command does:

  1. Create the keyrings directory - ensures /etc/apt/keyrings exists with proper permissions.
  2. Install the GPG key - downloads the repository key and de-armours it into a dedicated keyring for verification.
  3. Add the repository - writes a signed-by source line, with lsb_release -sc supplying your Debian codename.
  4. Update the package list - refreshes APT so it knows about the new packages.

Step 2: Update the Package List

If you skipped the last line, run the update now:

sudo apt update

Step 3: Install uv

Install uv with APT:

sudo apt install uv

APT downloads uv and any dependencies and installs it system-wide.

Step 4: Verify the Installation

The binary is simply uv. Confirm the version:

uv --version

You should see output similar to:

uv 0.8.4

Explore everything it offers with uv --help.

Getting Started with uv

Creating and Managing a Project

Spin up a new project and manage its dependencies entirely through uv:

# Initialise a new project
uv init my-app
cd my-app

# Add runtime and dev dependencies
uv add httpx
uv add --dev pytest

# Run code inside the managed environment
uv run python main.py

# Refresh the lockfile and sync the environment
uv lock
uv sync

uv maintains pyproject.toml and a uv.lock file for you, so environments stay reproducible across machines.

Running Single-File Scripts

uv understands PEP 723 inline metadata, so a script can declare its own dependencies:

# Add an inline dependency block to a script
echo 'import httpx; print(httpx.get("https://example.com").status_code)' > check.py
uv add --script check.py httpx

# uv builds an ephemeral environment and runs it
uv run check.py

Managing Python Versions

uv can fetch and pin CPython builds without any external version manager:

# Install specific interpreters
uv python install 3.11 3.12

# List what is installed and available
uv python list

# Pin the project to a version
uv python pin 3.12

Installing and Running Tools

Treat uv like pipx for Python-based command-line tools:

# Run a tool without installing it permanently
uvx ruff check .

# Install a tool onto your PATH
uv tool install ruff

# List and upgrade installed tools
uv tool list
uv tool upgrade --all

The pip-Compatible Interface

If you prefer explicit environments, uv venv and uv pip mirror the classic workflow at much higher speed:

# Create a virtual environment
uv venv

# Install into it with pip-style commands
uv pip install django

# Compile and sync pinned requirements
uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txt

Keeping uv Updated

Because uv arrived via APT, updates come with the rest of the system:

sudo apt update && sudo apt upgrade

Whenever deb.griffo.io ships a newer uv, apt upgrade installs it automatically.

Other Tools from deb.griffo.io

The repository packages plenty of tools that fit naturally alongside uv:

  • Ruff - the equally fast Python linter and formatter from the same team.
  • just - a command runner for scripting project tasks like tests and builds.
  • Deno - a secure runtime for JavaScript and TypeScript.
  • Bun - a fast all-in-one JavaScript runtime and toolkit.

Troubleshooting

GPG or Key Errors

If APT reports an unsigned repository or an invalid key, import it again:

curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update

Package Not Found

If APT cannot see the uv package:

  1. Re-run sudo apt update after adding the repository.
  2. Confirm your release is supported (Bookworm, Trixie, or Sid).
  3. Inspect the source list: cat /etc/apt/sources.list.d/deb.griffo.io.list.

Conflicting uv Installations

If you previously installed uv with its own installer, an older copy in ~/.local/bin or ~/.cargo/bin may take precedence:

which -a uv

Remove the stray binary, or let the APT-managed uv in /usr/bin win by adjusting your PATH. Note that the packaged uv is best updated via APT, so uv self update is unnecessary here.

Uninstalling

Remove uv with:

sudo apt remove uv

To also drop the repository and key:

sudo rm /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update

Conclusion

Installing uv from deb.griffo.io gives Debian users a fast, unified Python workflow without a bespoke installer or manual updates. Project management, lockfiles, Python versions and tool running all live behind one command, and keeping it current is just another apt upgrade.

Whether you are a Python developer chasing quicker installs, a DevOps engineer streamlining CI, or simply tired of stitching several tools together, uv is a strong default, and APT makes it painless to maintain.

Frequently Asked Questions

How do I install the latest uv on Debian?

Add the deb.griffo.io APT repository and its signing key, then run sudo apt install uv. The repository tracks upstream uv releases, so you get the latest packaged version rather than a build frozen when your distribution was released.

Is there a .deb package for uv?

Yes. deb.griffo.io publishes uv as a signed .deb for Debian. You could download that .deb and install it by hand, but adding the repository is the better option: APT then resolves dependencies and picks up new versions on its own.

How do I update uv to the latest version?

Run sudo apt update && sudo apt upgrade. Once uv is installed from APT there is no separate updater to remember, since new releases arrive with the rest of your system updates.

How do I install uv on Ubuntu?

Exactly the same way; lsb_release -sc simply resolves to a different codename. There is a companion guide with the Ubuntu specifics: How to install uv on Ubuntu.

Which Debian releases are supported?

Bookworm 12, Trixie 13 and Sid. Because the repository line is built from lsb_release -sc, the matching suite is selected for you.

Resources


Disclaimer: The deb.griffo.io repository is an unofficial community project and is not affiliated with the official Debian or Ubuntu projects, or with the upstream uv project.