---
name: "repro-env"
section: "1"
platform: "linux"
package: "repro-env"
version: "0.4.5-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/repro-env"
---

# repro-env(1)

Dependency lockfiles for reproducible build environments

## NAME

repro-env - Dependency lockfiles for reproducible build environments

## SYNOPSIS

**repro-env** update

**repro-env** build -- \[*COMMAND*\]

## DESCRIPTION

Tracks a description of a desired state in **repro-env.toml**, for example, the latest version of some official container image, with the latest patch level and the latest version of some additional packages. It also tracks a resolved variant in **repro-env.lock** that tracks the specific versions and checksums of the packages needed to set up the described environment (at the patch-level available at the time of writing).

The purpose of **repro-env.toml** is to make it trivial to re-resolve the specification if new patches become available. This file is read by **repro-env update**.

The purpose of **repro-env.lock** is to document which compiler versions have been used for the release binary associated with a given release. Recording this information is essential for reproducible builds and allows future forensic investigation of the build environment. It can be either committed into the source-code repository or attached to a release as an artifact, along with the compiled binary. This file is read by **repro-env build**.

## GLOBAL OPTIONS

- **-v**, **--verbose**

  Increase logging output (can be used multiple times)

- **-C** *path*, **--context** *path*

  Change the current directory to this path before executing the subcommand

## UPDATE

This command resolves the environment described in **repro-env.toml** with the latest available updates and writes a **repro-env.lock**. You would use this command similar to how you would use **cargo update**.

**--no-pull**

Do not attempt to pull the container tag from registry before resolving it

**-k**, **--keep**

Do not delete the build container, wait for ctrl-c

## BUILD

This command loads a **repro-env.lock**, sets up the environment it describes in a container and mounts the current directory to **/build** inside of the container. It then runs the given *COMMAND* inside of this container.

**-f** *path*, --file *path*

The dependency lockfile to use

**-k**, **--keep**

Do not delete the build container, wait for ctrl-c

**-e** *env*, --env *env*

Pass environment variables into the build container (FOO=bar or just FOO to lookup the value)

## PACKAGES: ARCH LINUX

Arch Linux hosts a comprehensive collection of recent compilers at https://archive.archlinux.org. You can create a **\[packages\]** section in your **repro-env.toml** with **system = "archlinux"** to install additional packages with pacman.

```
# repro-env.toml
[container]
image = "docker.io/library/archlinux"
[packages]
system = "archlinux"
dependencies = ["rust-musl", "lua"]
```

## PACKAGES: DEBIAN

Debian is a widely accepted choice and hosts an archive of all their packages at https://snapshot.debian.org/. You can create a **\[packages\]** section in your **repro-env.toml** with **system = "debian"** to install additional packages with apt-get.

```
# repro-env.toml
[container]
image = "debian:bookworm"
[packages]
system = "debian"
dependencies = ["gcc", "libc6-dev"]
```

## AUTHORS

repro-env is developed on github at https://github.com/kpcyrd/repro-env
