## Prerequisiti

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. Below is a quick overview or review of some of the requisite knowledge.

### make

Descrizione:

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.

References:

GNU Make has a well-written man page and extensive info documentation. Documentation is also available at the GNU website.

### ./configure

Descrizione:

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. You do not need to know how to create a `configure` script yourself, as the software author (or autoconf will do that. However, you may have to adjust it at some point to get a Ubuntu package to build correctly.

Quick Howto:

Per prima cosa procurarsi il sorgente di GNU Hello. Da un terminale:

    wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz # get the package
    tar -xzf hello-2.1.1.tar.gz # unpack it
    cd hello-2.1.1/

Now, with ./configure you can run the `configure` script to generate a Makefile that is customized to your system.

You can also give `./configure` command line options. For instance, by default GNU Hello will install to the `/usr/local/` directory. You could instead install it somewhere else (a personal binary directory, `~/programs/`, for example)

    ./configure --prefix="$HOME/programs/"   # specify install directory.

Si possono visualizzare tutte le opzioni di `./configure` eseguendo ./configure --help.

References:

Informazioni su `./configure` possono essere trovate nella documentazione di make.

### 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 - elenca il contenuto dei pacchetti binari. E' utile per assicurarsi che un file è installato nel posto giusto.

- 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.

Capitolo 1. Introduzione |  | Capitolo 2. Per iniziare