How to Recompile/Repack a .deb Program.
By: Zeb Carnell
Ok so you have a program you like on your Debian GNU/Linux based system and would like to edit a menu or option or even recompile the .deb source with a new option or config. You may wonder how you can do this. Well here goes.
Build the basic development environment:
apt-get install devscripts build-essential fakeroot
This installs the necessary packages needed for most development builds in GNU/Linux.
Now you need the source code for the package you wish to repack:
apt-get source packagename
This will download the source code for the package into the directory you are currently in. So please Change Directory (cd) to the directory you want to work in. The above command also unpacks the tar file for you into that directory, so now for you to edit the source code you need to cd into the source folder:
cd packagename-version
Now make your changes. You can adjust which flags are passed to the configure script by looking at the file inside the debian/ directory called "rules". This is where "./configure" and "make" are called from.
So once your changes are made we need to setup the dependencies to repack the package:
apt-get build-dep packagename
Now you can actually rebuild the package. You perform a rebuild by using the debuild command. If you are not the maintainer of the package you will need to add two flags to this telling the build process not to sign the package. In most cases -us -uc are the switches you wish to use. (make sure you are in the source main directory of packagename-version):
debuild -us -uc
Now if you look in the parent directory you will find your recompiled .deb file.
You can install it using:
dpkg –i packagename.deb
If you store your packages inside an Apt repository then you can use "pinning" to make your local package have a higher priority than others.
This doesn't work if you're just using "dpkg --install packagename.deb" to install the file though. In that case you can either:
*Put the package "on hold", so it is never upgraded.
*Rebuild your package with a higher version number, e.g: packagename-version.01
Zeb
Bookmarks