43

I have a debian (well technically ubuntu) source package, i.e. the .dsc, the .tar.gz, etc., I want to build this. The dpkg-buildpackage fails, since I don't have all the build dependencies.

Normally I'd use apt-get build-dep, but this package isn't in apt.

Is there a 'clean', 'proper' way to install all the build dependencies, given a source package. I know I could just open the debian/control file, but I'm curious if there's a 'proper' way.

I have installed build-essential, and have all the normal compilers etc., this package requires extra software.

32

Use mk-build-deps which is part of devscripts.

11

Here is an example workflow using ptman's suggestion.

Assuming you have downloaded the .dsc file, the .orig.*z file, and maybe also a .debian.*z file, then unpack the source package with:

dpkg-source -x [package_name]_[package_version].dsc

Move into the extracted source folder and run:

sudo mk-build-deps -i

This will create the file [package_name]-build-deps_[version].deb and install it, and also install all the dependencies it suggests.

Now you should be able to build your package from source:

debuild

When you are finished, you can easily remove the dependencies that were pulled in, by removing the build-deps package which you generated:

sudo apt-get purge --auto-remove [package_name]-build-deps
  • 2
    You can also pass -r to sudo mk-build-deps -i to remove the package after installing it. Also, instead of building as root, you can install as root using --root-cmd sudo. In the end, use mk-build-deps --install --root-cmd sudo --remove – Lucas Nov 8 '17 at 19:17
  • Also, you may need to sudo apt install devscripts equivs first. – Alba Mendez May 31 at 10:03
8

Actually I can use dpkg-checkbuilddeps which shows the build dependencies. That gets me 99% of what I need

  • 2
    oddly enough, the packagename-version.dsc file contains the build dependencies in the line that begins with the string Build-Depends – quack quixote Mar 30 '10 at 13:46
6

I usually use debuild from devscripts to build packages, and if relevent it prints a line of the missing build-deps.

The "proper" way is to use pbuilder or similar which will build the package in a minimal chroot, and just install any additional build-deps as specified by the package, this also removes a bunch of other potential issues (local installations of non-packaged libraries for example).

-6

Try:

apt-get install build-essential
  • I have install build-essential. This package requires extra software. – Rory Mar 30 '10 at 11:15
  • And it doesn't explain what requires? maybe libncurses-dev also. – Lanselot Mar 30 '10 at 11:33
  • 1
    That's not the point; of course it does. The point is to have a command that actually installs the dependencies, not one that just displays them. – Matthias Urlichs Sep 27 '15 at 17:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.