dpkg-buildpackage(1)            dpkg utilities            dpkg-buildpackage(1)

       dpkg-buildpackage - build binary or source packages from sources

       dpkg-buildpackage [option...]

       dpkg-buildpackage is a program that automates the process of building a
       Debian package. It consists of the following steps:

       1. It prepares the build environment  by  setting  various  environment
          variables   (see   ENVIRONMENT),  runs  the  init  hook,  and  calls
          dpkg-source --before-build (unless -T or --target has been used).

       2. It checks that the build-dependencies and build-conflicts are satis-
          fied (unless -d is specified).

       3. If  a  specific  target  has  been  selected with the -T or --target
          option, it calls that target and stops here. Otherwise it  runs  the
          preclean  hook  and  calls  fakeroot debian/rules clean to clean the
          build-tree (unless -nc is specified).

       4. It runs the source hook and calls dpkg-source  -b  to  generate  the
          source  package  (unless a binary-only build has been requested with
          -b, -B or -A).

       5. It runs the build hook and  calls  debian/rules  build-target,  then
          runs the binary hook followed by fakeroot debian/rules binary-target
          (unless a source-only build has been requested with -S).  Note  that
          build-target  and binary-target are either build and binary (default
          case, or if -b is specified), or build-arch and binary-arch  (if  -B
          or  -G  are specified), or build-indep and binary-indep (if -A or -g
          are specified).

       6. It runs the changes hook and calls  dpkg-genchanges  to  generate  a
          .changes  file.   Many  dpkg-buildpackage  options  are forwarded to

       7. It runs the postclean hook and if -tc is  specified,  it  will  call
          fakeroot debian/rules clean again.

       8. It calls dpkg-source --after-build.

       9. It  runs the check hook and calls a package checker for the .changes
          file (if  a  command  is  specified  in  DEB_CHECK_COMMAND  or  with

          It  runs  the  sign hook and calls gpg2 or gpg to sign the .dsc file
          (if any, unless -us is specified or on UNRELEASED builds),  and  the
          .changes file (unless -uc is specified or on UNRELEASED builds).

          It runs the done hook.

       -g     Specifies a build limited to source and architecture independent
              packages (since dpkg 1.17.11).  Passed to dpkg-genchanges.

       -G     Specifies a build limited to source  and  architecture  specific
              packages (since dpkg 1.17.11).  Passed to dpkg-genchanges.

       -b     Specifies  a  binary-only build, no source files are to be built
              and/or distributed. Passed to dpkg-genchanges.

       -B     Specifies a binary-only build, limited to architecture dependent
              packages.  Passed to dpkg-genchanges.

       -A     Specifies  a binary-only build, limited to architecture indepen-
              dent packages. Passed to dpkg-genchanges.

       -S     Specifies a source-only build, no binary  packages  need  to  be
              made.   Passed  to  dpkg-genchanges.   Note: if what you want is
              simply to (re-)build the source package,  using  dpkg-source  is
              always  better  as it does not require any build dependencies to
              be installed to be able to call the clean target.

       -F     Specifies a normal full build, binary and source  packages  will
              be  built  (since dpkg 1.15.8).  This is the same as the default
              case when no build option is specified.

       --target target
              Calls debian/rules target after having setup the build  environ-
              ment  and  stops  the  package  build  process  here (since dpkg
              1.15.0).  If --as-root is also given, then the command  is  exe-
              cuted  as  root  (see  -r).  Note that official targets that are
              required to be run as root by the Debian policy do not need this

              Only  meaningful  together  with  --target  (since dpkg 1.15.0).
              Requires that the target be run with root rights.

              Passed unchanged to dpkg-genchanges. See its manual page.

       -a, --host-arch architecture
              Specify the Debian architecture we build for (long option  since
              dpkg  1.17.17).   The architecture of the machine we build on is
              determined automatically, and is also the default for  the  host

       -t, --host-type gnu-system-type
              Specify the GNU system type we build for (long option since dpkg
              1.17.17).  It can be used in place of --host-arch or as  a  com-
              plement  to  override  the  default  GNU system type of the host
              Debian architecture.

       --target-arch architecture
              Specify the Debian architecture the binaries  built  will  build
              for  (since  dpkg  1.17.17).   The  default  value  is  the host

       --target-type gnu-system-type
              Specify the GNU system type the binaries built  will  build  for
              (since  dpkg 1.17.17).  It can be used in place of --target-arch
              or as a complement to override the default GNU  system  type  of
              the target Debian architecture.

              Specify  the  profile(s)  we  build,  as  a comma-separated list
              (since dpkg 1.17.2).  The default behavior is to  build  for  no
              specific  profile. Also sets them (as a space separated list) as
              the DEB_BUILD_PROFILES environment variable  which  allows,  for
              example,  debian/rules  files to use this information for condi-
              tional builds.

              Number of jobs allowed to be run simultaneously, number of  jobs
              matching  the  number  of online processors if auto is specified
              (since dpkg 1.17.10), or unlimited number if jobs is not  speci-
              fied,  equivalent  to the make(1) option of the same name (since
              dpkg 1.14.7).  Will add  itself  to  the  MAKEFLAGS  environment
              variable,  which should cause all subsequent make invocations to
              inherit the option, thus forcing the  parallel  setting  on  the
              packaging  (and  possibly the upstream build system if that uses
              make) regardless of their support  for  parallel  builds,  which
              might cause build failures.  Also adds parallel=jobs or parallel
              to  the  DEB_BUILD_OPTIONS  environment  variable  which  allows
              debian/rules  files  to  use this information for their own pur-
              poses.  The -j value will override the parallel=jobs or parallel
              option in the DEB_BUILD_OPTIONS environment variable.  Note that
              the auto value will get replaced by the actual  number  of  cur-
              rently active processors, and as such will not get propagated to
              any child process. If the number of online processors cannot  be
              inferred  then the code will fallback to using an unlimited num-

              This option (since dpkg 1.18.2) is equivalent to the  -j  option
              except  that it does not set the MAKEFLAGS environment variable,
              and as such it is safer to use with any package including  those
              that are not parallel-build safe.

       -D     Check  build  dependencies  and conflicts; abort if unsatisfied.
              This is the default behavior.

       -d     Do not check build dependencies and conflicts.

              Do not check built-in build dependencies  and  conflicts  (since
              dpkg  1.18.2).   These  are  the  distribution specific implicit
              build dependencies usually required in a build environment,  the
              so called Build-Essential package set.

       -nc    Do  not  clean  the source tree.  Implies -b if nothing else has
              been selected among -F, -g, -G, -B, -A or -S.  Implies  -d  with
              -S (since dpkg 1.18.0).

       -tc    Clean  the  source  tree  (using  gain-root-command debian/rules
              clean) after the package has been built.

              When dpkg-buildpackage  needs  to  execute  part  of  the  build
              process  as root, it prefixes the command it executes with gain-
              root-command if one has been specified. Otherwise, if  none  has
              been specified, fakeroot will be used by default, if the command
              is present.  gain-root-command should start with the name  of  a
              program  on  the  PATH and will get as arguments the name of the
              real command to run and the arguments  it  should  take.   gain-
              root-command  can  include  parameters (they must be space-sepa-
              rated) but no  shell  metacharacters.   gain-root-command  might
              typically  be  fakeroot, sudo, super or really.  su is not suit-
              able, since it can only invoke the user's shell with -c  instead
              of passing arguments individually to the command to be run.

              Building a Debian package usually involves invoking debian/rules
              as a  command  with  several  standard  parameters  (since  dpkg
              1.14.17).  With this option it's possible to use another program
              invocation to build the package (it can include space  separated
              parameters).   Alternatively it can be used to execute the stan-
              dard rules file with another make program (for example by  using
              /usr/local/bin/make -f debian/rules as rules-file).

              Command  used to check the .changes file itself and any artifact
              built referenced in the file (since dpkg 1.17.6).   The  command
              should  take  the .changes pathname as an argument. This command
              will usually be lintian.

              Pass  option   opt   to   the   check-command   specified   with
              DEB_CHECK_COMMAND  or  --check-command (since dpkg 1.17.6).  Can
              be used multiple times.

              Set the specified shell code hook-command as the hook hook-name,
              which  will  run  at the times specified in the run steps (since
              dpkg 1.17.6).  The hooks will always be  executed  even  if  the
              following action is not performed (except for the binary hook).

              Note:  Hooks can affect the build process, and cause build fail-
              ures if their commands fail, so watch out for unintended  conse-

              The current hook-name supported are:

              init  preclean  source build binary changes postclean check sign

              The hook-command  supports  the  following  substitution  format
              string, which will get applied to it before execution:

              %%     A single % character.

              %a     A  boolean  value (0 or 1), representing whether the fol-
                     lowing action is being performed.

              %p     The source package name.

              %v     The source package version.

              %s     The source package version (without the epoch).

              %u     The upstream version.

              When dpkg-buildpackage needs to execute GPG  to  sign  a  source
              control  (.dsc) file or a .changes file it will run sign-command
              (searching the PATH if necessary) instead of gpg2 or gpg.  sign-
              command  will  get all the arguments that gpg2 or gpg would have
              gotten. sign-command should not  contain  spaces  or  any  other
              shell metacharacters.

              Specify a key-ID to use when signing packages.

       -us    Do not sign the source package.

       -uc    Do not sign the .changes file.

              Force  the  signing  of the resulting files (since dpkg 1.17.0),
              regardless of -us or -uc or other internal heuristics.

       -z, -Z Passed unchanged to dpkg-source. See its manual page.

              Pass option opt to dpkg-source (since dpkg 1.15.6).  Can be used
              multiple times.

              Pass  option opt to dpkg-genchanges (since dpkg 1.15.6).  Can be
              used multiple times.

       --admindir dir
              Change the location of the dpkg database  (since  dpkg  1.14.0).
              The default location is /var/lib/dpkg.

       -?, --help
              Show the usage message and exit.

              Show the version and exit.

              If  set,  it  will  be used as the command to check the .changes
              file (since dpkg 1.17.6).   Overridden  by  the  --check-command

              If  set,  it  will  be  used to sign the .changes and .dsc files
              (since dpkg 1.17.2).  Overridden by the -k option.

              If set, and containing nocheck  the  DEB_CHECK_COMMAND  variable
              will be ignored.

              If  set,  it will be used as the active build profile(s) for the
              package being built (since dpkg 1.17.2).  It is  a  space  sepa-
              rated list of profile names.  Overridden by the -P option.

   Reliance on exported environment flags
       Even  if  dpkg-buildpackage exports some variables, debian/rules should
       not rely on their presence and should instead use the respective inter-
       face to retrieve the needed values.

   Variables set by dpkg-architecture
       dpkg-architecture  is  called  with the -a and -t parameters forwarded.
       Any variable that is output by its -s option is integrated in the build

   Compiler flags are no longer exported
       Between  dpkg  1.14.17  and 1.16.1, dpkg-buildpackage exported compiler
       flags (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS and LDFLAGS) with  values  as
       returned by dpkg-buildflags. This is no longer the case.

   Default build targets
       dpkg-buildpackage is using the build-arch and build-indep targets since
       dpkg 1.16.2. Those targets are thus mandatory. But to  avoid  breakages
       of  existing  packages,  and  ease  the transition, it will fallback to
       using the build target if make -f debian/rules -qn build-target returns
       2 as exit code.

       It  should  be  possible to specify spaces and shell metacharacters and
       initial arguments for gain-root-command and sign-command.

       dpkg-source(1), dpkg-architecture(1), dpkg-buildflags(1),
       dpkg-genchanges(1), fakeroot(1), lintian(1), gpg2(1), gpg(1).

Debian Project                    2015-07-05              dpkg-buildpackage(1)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2021 Hurricane Electric. All Rights Reserved.