This guide assumes that the reader has a reasonable knowledge of building and installing software from source on Linux distributions. The guide also uses the Command Line Interface (CLI) throughout, so you should be comfortable using a terminal. You should be able to at least use the following:
make: GNU Make is a very important software building tool. It is used to transform a complex compilation task into a trivial one. It is important that you know how to use it, because we will store most of the information about the packaging process in a Makefile. Documentation is available at the GNU website.
./configure:This script is
included in almost all Linux source, especially for
software written in compiled languages such as C and
C++. It is used to generate a Makefile (file used
by make) that is properly
configured for your system. Standard Debian packaging
tools use it, so it is important that you know what
the configure
script
does. Information on ./configure
can be found in the make
documentation.
Apt/Dpkg: Beyond the basic use of installing programs, apt and dpkg have many features that are useful for packaging.
apt-cache dump - lists every package in the cache. This command is especially helpful in combination with a grep pipe such as apt-cache dump | grep foo to search for packages whose names or dependencies include “foo”.
apt-cache policy - lists the repositories (main/restricted/universe/multiverse) in which a package exists.
apt-cache show - displays information about a binary package.
apt-cache showsrc - displays information about a source package.
apt-cache rdepends - shows reverse dependencies for a package (which packages require the queried one.
dpkg -S - lists the binary package to which a particular file belongs.
dpkg -l - lists currently installed packages. This is similar to apt-cache dump but for installed packages.
dpkg -c - lists the contents of a binary package. It is useful for ensuring that files are installed to the right places.
dpkg -f - shows the control file for a binary package. It is useful for ensuring that the dependencies are correct.
grep-dctrl - searches for specialized information in packages. It is a specific use of the grep package (but not installed by default).
diff and patch: The diff program can be used to compare two files and to make patches. A typical example might be diff -ruN file.old file.new > file.diff. This command will create a diff (recursively if directories are used) that shows the changes, or “delta”, between the two files.
The patch program is used to apply a patch (usually created by diff or another similar program) to a file or directory. To apply the patch created above, we can invoke patch -p0 < file.diff. The -p tells patch how much it should strip from the paths for the file names in the patch. -p0 means to strip nothing, or leave the path intact.