I. Linux tips
8. Playing with Debian packages
First, let's take a look to a Debian package:
So, I think you guessed it but
.deb file are Debian package files. Now let's see a bit how they work (let's take libm.deb for this example):
> dpkg-deb -x libm.deb libm
This line will extract data from
libm.deb into a
libm folder. Now we need to extract Debian content as well:
> dpkg-deb -e libm.deb libm/DEBIAN
No we have access to all the content. First thing to know, folders (except DEBIAN) will be copy as-is in the system (from "/"). So if you have
./libm/usr/lib/libm.so, it means the
libm.so file will be copied into
/usr/lib/libm.so. Nothing complicated in here.
The interesting part is in
./libm/DEBIAN. You should have at least a
checksums and a
control files. The first one is just a file containing checksums of files provided by this package (but this isn't mandatory) whereas
control contains all information the package manager might need to know about this package. I let you take a look to this manual for more information about it.
The interesting thing in here is that you can totally merge different packages into one by just extracting other packages folders (except the
DEBIAN one!) into the first one. Don't forget to add
DEBIAN/control useful information like dependencies or conflicts!
The same goes if you want to add other libraries that aren't in the package. Just copy-paste them in the correct folder (the one into you want them to be installed) and that's all.
It's common to have an "original" package file and a Debian patch provided alongside. It's not very complicated to build it in order to then install it but it's always good to know! So let's start with
First, let's extract
> tar xzf libm_orig.tar.gz
Now let's extract
libm_debian.tar.gz into it:
> cd libm_orig > tar xzf libm_debian.tar.gz
Now you just need to build the package:
> dpkg-buildpackage -us -uc
uc options are for generating non-signed package. Read the manual if you want to build a signed package. :p