Skip to main content

How To Simply Build A Debian (.deb) Package?


Because of many reasons, Ubuntu now has became a very popular Linux Desktop Distribution (probably the most popular). As result, Debian package management (dpkg), also has grown very popular as well as Ubuntu. Now, many third party software developer (Adobe, Real Player, Foxit, etc), almost always, provides their software installer in Debian package (with .deb extension), alongside or even instead of RPM and other package managements in Linux.


Of course, this is not a sign that in the future, Debian package will be the only package management that will be used in every Linux distribution. Every Linux distribution has its own strength and weakness, so we must realize that all Linux distributions must live and grow bigger together, to pursue the ultimate advantage of the free and open source softwares (FOSS).


Now, I want to share a little tip to build a Debian package (.deb) using a basic element of Debian system called dpkg-dev. Dpkg-dev is a basic tool in Debian system to make simple modification, build and maintain Debian package management. This tip is useful (for me), to build an independent software or desktop themes or wallpapers to a .deb package, so in other time, we can simply and easily install and use them.


BASIC COMPREHENSION

In every Debian package, has a structure like this below :

  1. DEBIAN

    A folder including some files :

    a) control, is the package/software description (core file),

    b) md5sum (additional),

    c) postinst, a script of post/after install scripts (additional),

    d) postrm, a script of post/after remove scripts (additional) and other additional scripts (if necessary).

  2. Target Directory (Recrussive)

    A folder including the library, binary and core data files that used by the software. The files placed recrussively same as their destination. This folder might be consisted of more than one folder depending of the software/package structure. Usually, this folder consists of :

    a) usr

    Main directory that consists the binary, library and xdg standard desktop shortcut (with .desktop extension). Example : usr/share/lib/libk3blib.so etc; usr/bin/k3b; usr/share/applications/kde/k3b.desktop; usr/share/apps/k3b.

    b) opt

    Main directory if the software work directory is placed in opt

    c) etc

    Additional directory if necessary

    and other directories if necessary.


We has known the structure of dpkg. Now, what is the content of the software description file (DEBIAN/control)? This is the example :


Package: maknyus-wallpapers

Version: 0.1alwan1

Architecture: all

Maintainer: Alwan Rosyidi

Installed-Size: 8100

Replaces: ubuntu-wallpapers

Section: gnome

Priority: optional

Description: Wallpaper pengganti dan tambahan biar desktop Ubuntu terlihat lebih maknyus.

(one space)Wallpaper pengganti karo tambahan ben tampilane Ubuntu lewih maknyus.

(one space)A replacer and additional wallpapers to make Ubuntu desktop looks awesome :D

(one empty line)


There are few important notes we have to know in the control file :

Version must be started with number and then can be followed by characters (look at the example).

Replaces is a description if our package is another newer version of other package that has existed in the system, or, if our package has a file with the same name with another existing file in the system that is the part of a package. For example : I made a wallpaper to be the main wallpaper and replace the default Ubuntu wallpaper, so I have to replace the ubuntu-wallpapers package in this description file. If we miss this column, our package will not be able to be installed completely. Even, our package will contaminate our apt database an our apt and dpkg system will be error.

Description must be ended by an empty line. If we need sub-descriptions in the new line/paragraphs, we must put one space in the beginning of the paragraphs/line (look at the example).


BUILDING

As an example, now, I want to build a package called maknyus-wallpapers, an additional wallpaper set to eyecandize Ubuntu desktop. This is the folder structure and its files inside :


maknyus-wallpaper :

DEBIAN/control

usr/share/backgrounds/files.jpeg


Now, we just have to build the package by typing this simple magical command :


sudo folder-name folder-name_version_architecture.deb


sudo dpkg -b maknyus-wallpapers maknyus-wallpapers_0.1alwan1_all.deb


Important notes : we must confirm that the package name must be same as in the description in the control file. One different character will make our package recognized as another different package. Example : in the control file, I've written the package name as maknyus-wallpapers (with s), so in the package name I must type the same name (with s). If we miss this, our package will be actually installed, but will not be recognized well as an installed package.


Now I have a package called maknyus-wallpapers_0.1alwan1_all.deb and can be installed manually by terminal or graphically by gdebi (look at the screenshot above). Enjoy! :)

Comments

Popular posts from this blog

Q4OS 4.6 "Gemini" Review: A Real Hidden Gem

Distro hopping is a fun adventure. It's a pure joy you can only find in GNU/Linux world. It's a nature you want to escape from what I call 'comfort ecosystem'. You need to play, trying something new even for a few little differences. For a long time I've been using Ubuntu family as my daily driver. The main reason is probably just same as any other Ubuntu user: it's reliable. You can't go wrong with Ubuntu. It works almost in any device, even for the newest one. It is the ultimate Linux distro you can rely on. However, sometimes, you will feel bored. The temptation to flirt with other new distro is unbearable. There are a lot of hot new Linux distros waiting to try.  A Real Hidden Gem I've known this distro for a quite long time. At first, it offered Trinity Desktop as the main desktop, which brings me the sweet memories about KDE3. It is simply fast, stable, almost without any issue, and it is based on Debian. I install it on my old machine and I love t...

How To Install Mac OS X Lion Theme On Lubuntu / LXDE

Lubuntu 12.04 with Mac OS X Lion Theme, xcompmgr & cairo-dock [click to enlarge] Mac OS X is the special one in the Desktop market. So many people admire it because of its beauty, safety (yes, it is an UNIX) and its profesional image as “an OS for profesional modern art designer”. Yeah, Mac OS X has beautiful look and I do like its look-n-feel. And so, there are so many theme patcher to make our Microsoft Windows or Linux OS become Mac OS X in the appearance. In Linux Desktop, there are some project specialized in designing theme transformation pack to make our Linux desktop to be looked like Mac OS X. The most popular project probably is Mac4Lin. But, all of those projects was designed only for GNOME or sometimes support XFCE and how about LXDE? Our Star in the current lightweight Linux desktop? (Yes, LXDE is the most light-but-complete Linux desktop for now). Until now, there is no project that officially support LXDE. Basically, LXDE uses gtk (now still stay w...

QMMP Skins Pack for Ubuntu/Debian

QMMP is a great Winamp Like music player. For me, this is the greatest current living Winamp Like Music Player in Linux (Audacious seems to be more “gtk” interfaced music player than classic winamp). This is based on QT but works smooth and fast enough in gtk based desktops (lxde, xfce, gnome). For you that don't know yet what is QMMP, this is a popular app and installable easily by apt in Ubuntu and or Debian (squeeze, wheezy, sid) : sudo apt-get install qmmp Because of this, I decided to pack some cool Winamp classic skins to be a Debian package to fullfil the lack of additional skins in default QMMP installation. These are the skins : AmpBurger Bang & Olufsen DaizedAmp iTunesLeopard Kenwood-KDC-2019 Rapture s1-1.5d Winamp5-XMMS Winamp Classic And this is the file qmmp-skins-pack-0.1-all.deb you can download and install it to eyecandy your QMMP Player. Happy Linuxing !