{
    "mode": "man",
    "parameter": "DEBREPRO",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/DEBREPRO/1/json",
    "generated": "2026-10-09T17:14:29Z",
    "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-B COMMAND, --build-command COMMAND\nUse custom build command. Default: dpkg-buildpackage -b -us -uc.\n\nIf a custom build command is specified, the restriction of only running against a  Debian\nsource tree is relaxed and you can run debrepro against any source directory.\n\n-a PATTERN, --artifact-pattern PATTERN\nDefine  a  file  glob pattern to determine which artifacts need to be compared across the\nbuilds. Default: ../*.deb.\n",
            "subsections": [
                {
                    "name": "-n, --no-copy",
                    "content": "Do not copy the source directory to the temporary work directory before each  build.  Use\nthis to run debrepro against the source directory directly.\n\n-t TIME, --timeout TIME\nApply  a  timeout  to  all  builds. TIME must be a time specification compatible with GNU\ntimeout(1).\n",
                    "flag": "-n",
                    "long": "--no-copy"
                },
                {
                    "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\nDebian Utilities                             2026-02-25                                  DEBREPRO(1)",
            "subsections": []
        }
    },
    "summary": "debrepro - reproducibility tester for Debian packages",
    "flags": [
        {
            "flag": "-n",
            "long": "--no-copy",
            "arg": null,
            "description": "Do not copy the source directory to the temporary work directory before each build. Use this to run debrepro against the source directory directly. -t TIME, --timeout TIME Apply a timeout to all builds. TIME must be a time specification compatible with GNU timeout(1)."
        },
        {
            "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"
        }
    ]
}