About the Course
Look at an overview of the course and its target audience.
We'll cover the following
Many Linux distributions offer a large variety of software that is prepackaged for convenient installation, usually just a click (or a line on the command line) away.
Creating such software packages for the Debian and Ubuntu family of Linux operating systems is the topic of this course.
If you are a software developer, it might be the software you are writing yourself that you want to package. System administrators often need to package third-party software they distribute to their users and customers.
This course targets people who have basic familiarity with the Linux command line (cd
, ls
, mkdir
, cp
, and mv
) and know how to edit and
create text files.
Basic software development knowledge and familiarity with common build systems such as GNU Make are advantageous but not necessary.
Typographic conventions
-
Command names, input, and output appearing in the text are printed in a
highlighted
font. -
Commands that we can enter in our shell are prefixed by a dollar sign
$
, and the output it produces is not:$ dpkg --print-architecture
Here is the output of the above command:
amd64
-
Placeholders that we are supposed to replace ourselves are indicated with angle brackets. In the file name
<package-name>.postinst
, replace<package-name>
with your actual package name.
Overview of the course
We start with an overview of the ecosystem the Debian packages live in and then explore what files and metadata a Debian package is made of.
-
The next chapters explore two ways to build Debian packages: with
fpm
, a quick (but sometimes a bit dirty) approach, and the standard Debian build system based on debhelper. -
Then, we cover a quick way to get started with creating a Debian package and later dive into more advanced topics, like building multiple binary packages from a single source package.
-
At the end of the course, we briefly touch on Debian repositories and security aspects around the life cycle of a package.
sudo
privilege
Note that we give you access to most of our code editors as a non-root user. Occasionally, you may need root privileges, say, to install a package that you built.
Note: When using
sudo
, please use the passworduser
.