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

Howto Connect To Windows Share Network (Connect To Server) Easily in PCManFM

In Nautilus 3.4, Nemo, or Caja, there is a very useful menu called "Connect to Server". This menu allow us to connect to a Windows Share network via Samba. If you are using another desktop environment such as LXDE, there aren't such menu, and we need to install third party tool called Gigolo . But apparently, PCManFM (the default file manager of LXDE) already has such function. We could connect to a Windows Share network in PCManFM easily. Here are the simple steps : 1. Open PCManFM and go to adress bar, and type this command : smb://username@server/folder example : smb://staff@192.168.1.69/document then press Enter 2. Once you will be asked to input the Windows Share Network password (if exists), select Remember Forever option. 3. You are connected to Windows Share Network ;)