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.
Use
mk-build-deps
which is part ofdevscripts
.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:Move into the extracted source folder and run:
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:
When you are finished, you can easily remove the dependencies that were pulled in, by removing the
build-deps
package which you generated:Actually I can use
dpkg-checkbuilddeps
which shows the build dependencies. That gets me 99% of what I needI usually use
debuild
fromdevscripts
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 minimalchroot
, 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).The file debian/control lists all the packages that should be installed as build-dependencies. If (for whatever reason) you have installed some of the required software without the apt system, then just remove respective lines from the debian/control file, so dpkg-buildpackage will not know about these packages and not check on them.
Another trick is to execute the build instructions directly, which also circumvents any extra checks by dpkg-buildpackage and that also does not perform the cleaning of the build files (helps with incremental local fixes) by executing
fakeroot ./debian/rules binary
instead of dpkg-buildpackage.Try: