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.
Target audience and prerequisites
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
highlightedfont. -
Commands that we can enter in our shell are prefixed by a dollar sign
$, and the output it produces is not:$ dpkg --print-architectureHere 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.