# Ubuntu Packaging Guide

Welcome to the Ubuntu Packaging and Development Guide! This is the official place for learning all about Ubuntu Development and packaging. After reading this guide you will have:

- heard about the most important players, processes and tools in Ubuntu development,
- your development environment set up correctly,
- a better idea of how to join our community,
- fixed an actual Ubuntu bug as part of the tutorials.

Ubuntu is not only a free and open source operating system, its platform is also open and developed in a transparent fashion. The source code for every single component can be obtained easily and every single change to the Ubuntu platform can be reviewed.

This means you can actively get involved in improving it and the community of Ubuntu platform developers is always interested in helping peers getting started.

Ubuntu is also a community of great people who believe in free software and that it should be accessible for everyone. Its members are welcoming and want you to be involved as well. We want you to get involved, to ask questions, to make Ubuntu better together with us.

If you run into problems: don’t panic! Check out the communication article and you will find out how to most easily get in touch with other developers.

The guide is split up into two sections:

- A list of articles based on tasks, things you want to get done.
- A set of knowledge-base articles that dig deeper into specific bits of our tools and workflows.

This guide focuses on the Ubuntu Distributed Development packaging method. This is a new way of packaging which uses Distributed Revision Control branches. It currently has some limitations which mean many teams in Ubuntu use traditional packaging methods. See the UDD Introduction page for an introduction to the differences.

## Articles

- 1. Introduction to Ubuntu Development
- 2. Getting Set Up
- 3. Ubuntu Distributed Development — Introduction
- 4. Fixing a bug in Ubuntu
- 5. Tutorial: Fixing a bug in Ubuntu
- 6. Packaging New Software
- 7. Security and Stable Release Updates
- 8. Patches to Packages
- 9. Fixing FTBFS packages
- 10. Shared Libraries
- 11. Backporting software updates

## Knowledge Base

- 1. Communication in Ubuntu Development
- 2. Basic Overview of the `debian/` Directory
- 3. autopkgtest: Automatic testing for packages
- 4. Getting the Source
- 5. Working on a Package
- 6. Seeking Review and Sponsorship
- 7. Uploading a package
- 8. Getting The Latest
- 9. Merging — Updating from Debian and Upstream
- 10. Using Chroots
- 11. Traditional Packaging
- 12. KDE Packaging

## Further Reading

You can read this guide offline in different formats, if you install one of the binary packages.

If you want to learn more about building Debian packages, here are some Debian resources you may find useful:

- How to package for Debian;
- Debian Policy Manual;
- Debian New Maintainers’ Guide — available in many languages;
- Packaging tutorial (also available as a package);
- Guide for Packaging Python Modules.

We are always looking to improve this guide. If you find any problems or have some suggestions, please report a bug on Launchpad. If you’d like to help work on the guide, grab the source there as well.