{
    "mode": "man",
    "parameter": "debrepro",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/debrepro/1/json",
    "generated": "2026-06-15T14:39:21Z",
    "synopsis": "debrepro [OPTIONS] [SOURCEDIR]",
    "sections": {
        "NAME": {
            "content": "debrepro - reproducibility tester for Debian packages\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "debrepro [OPTIONS] [SOURCEDIR]\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "debrepro will build a given source directory twice, with a set of variations between the\nfirst and the second build, and compare the produced binary packages. If diffoscope is\ninstalled, it is used to compare non-matching binaries. If disorderfs is installed, it is\nused during the build to inject non-determinism in filesystem listing operations.\n\nSOURCEDIR must be a directory containing an unpacked Debian source package. If SOURCEDIR is\nomitted, the current directory is assumed.\n",
            "subsections": []
        },
        "OUTPUT DIRECTORY": {
            "content": "At the very end of a build, debrepro will inform the location of the output directory where\nthe build artifacts can be found. In that directory, you will find:\n\n$OUTPUTDIR/first\nContains the results of the first build, including a copy of the source tree, and the\nresulting binary packages.\n\n$OUTPUTDIR/first/build.sh\nContains the exact build script that was used in the first build.\n\n$OUTPUTDIR/second\nContains the results of the second build, including a copy of the source tree, and the\nresulting binary packages.\n\n$OUTPUTDIR/second/build.sh\nContains the exact build script that was used in the second build.\n\nTaking a diff(1) between $OUTPUTDIR/first/build.sh and $OUTPUTDIR/second/build.sh is an\nexcellent way of figuring out exactly what changed between the two builds.\n",
            "subsections": []
        },
        "SUPPORTED VARIATIONS": {
            "content": "",
            "subsections": [
                {
                    "name": "user",
                    "content": "The $USER environment variable will contain different values between the first and second\nbuilds.\n"
                },
                {
                    "name": "path",
                    "content": "During the second build, a fake, non-existing directory will be appended to the $PATH\nenvironment variable.\n"
                },
                {
                    "name": "umask",
                    "content": "The builds will use different umask settings.\n"
                },
                {
                    "name": "locale",
                    "content": "Both $LCALL and $LANG will be different across the two builds.\n"
                },
                {
                    "name": "timezone",
                    "content": "$TZ will be different across builds.\n"
                },
                {
                    "name": "filesystem-ordering",
                    "content": "If disorderfs is installed, both builds will be done under a disorderfs overlay\ndirectory. This will cause filesystem listing operations to be return items in a non-\ndeterministic order.\n"
                },
                {
                    "name": "time",
                    "content": "The second build will be executed 213 days, 7 hours and 13 minutes in the future with\nregards to the current time (using faketime(1)).\n"
                }
            ]
        },
        "OPTIONS": {
            "content": "-s VARIATION, --skip VARIATION\nDon't perform the named VARIATION. Variation names are the ones used in their description\nin section SUPPORTED VARIATIONS.\n\n-b COMMAND, --before-second-build COMMAND\nRun COMMAND before performing the second build. This can be used for example to apply a\npatch to a source tree for the second build, and check whether (or how) the resulting\nbinaries are affected.\n\nExamples:\n\n$ debrepro --before-second-build \"git checkout branch-with-changes\"\n\n$ debrepro --before-second-build \"patch -p1 < /path/to/patch\"\n\n-t TIME, --timeout TIME\nApply a timeout to all builds. TIME must be a time specification compatible with GNU\ntimeout(1).\n",
            "subsections": [
                {
                    "name": "-h, --help",
                    "content": "Display this help message and exit.\n",
                    "flag": "-h",
                    "long": "--help"
                }
            ]
        },
        "EXIT STATUS": {
            "content": "0   Package is reproducible.\n\nReproducible here means that the two builds produced the exactly the same binaries, under\nthe set of variations that debrepro tests. Other sources of non-determinism in builds\nthat are not yet tested might still affect builds in the wild.\n\n1   Package is not reproducible.\n\n2   The given input is not a valid Debian source package.\n\n3   Required programs are missing.\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "diffoscope (1), disorderfs (1), timeout(1)\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Antonio Terceiro <terceiro@debian.org>.\n\n\n\nDebian Utilities                             2026-03-04                                  DEBREPRO(1)",
            "subsections": []
        }
    },
    "summary": "debrepro - reproducibility tester for Debian packages",
    "flags": [
        {
            "flag": "-h",
            "long": "--help",
            "arg": null,
            "description": "Display this help message and exit."
        }
    ],
    "examples": [],
    "see_also": [
        {
            "name": "timeout",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/timeout/1/json"
        }
    ]
}