The software package format for Debian-based Linux distributions and their associated derivatives can easily be identified by the .deb
extension. Debian packages are also attributed to two tar archives. The first archive file contains control information and the second one installable data.
This article will walk us through the creation of a simple Debian package and later demonstrate its installation on any Debian-based system. To cover all the basics needed in creating a Debian package, we will create and package a simple trivial application from scratch.
Creating a Binary Executable in Linux
We are going to come up with a simple C++ program that prints a text string on the standard output. To be certain that this program works, we will have to compile and test it.
So open your terminal editor and create the following file using nano editor.
$ nano debpackage.cc
add the following code snippet.
#include <iostream> int main() { using namespace std; cout << "LinuxShellTip's Simple Debian Package! \n"; }
The g++ compiler needed to compile the above program can be found in the build-essentials package.
$ sudo apt install build-essential
Let us now compile our C++ program and test the program for the anticipated output:
$ g++ debpackage.cc -o debpackage $ ./debpackage
The above screen capture reveals that we have compiled our C++ code to an executable called debpackage which now prints the string “LinuxShellTip’s Simple Debian Package!” on demand.
Creating a Debian Package in Linux
The executable binary (debpackage) created from compiling the above C++ program is all we need to start creating our Debian package.
Firstly, we need a Debian package structure. The necessary package files need to be hosted under a root package directory:
$ mkdir mypackage $ mkdir mypackage/DEBIAN
Create a control file inside the DEBIAN directory.
$ nano mypackage/DEBIAN/control
Populate it with the following info:
Package: debpackage Version: 0.1 Section: custom Priority: optional Architecture: amd64 Essential: no Installed-Size: 1024 Maintainer: ubuntumint.com Description: Acknowledge ubuntumint.com tutorials
The Debian package structure is almost complete. Let us create the following final directories:
$ mkdir -p mypackage/usr/bin
The created mypackage/usr/bin directory is the installation directory for the executable binary program debpackage we created earlier. This program executable needs to be copied to this directory:
$ cp debpackage mypackage/usr/bin
The dpkg-deb tool is needed to create a Debian package, we, therefore, need to point it to the above-created directory structure in the following manner:
$ dpkg-deb --build mypackage
We can confirm that the .deb
package was created:
$ ls -l mypackage.deb
Please note that the steps followed to create the above .deb
package reference a simplified approach as creating an official package will require a more detailed workaround.
Now that our .deb
package is created, and we can attempt to install it using the dpkg command.
$ sudo dpkg -i mypackage.deb
We can also run the Debian package from our terminal to make sure it is executing as per its functional objective.
$ debpackage
We have successfully created and tested a simple Debian package. This article should serve as the perfect reference template for exploring the creation of more detailed and sophisticated Debian packages.