Translations: English - Español - Português (Brasil) - (+)


Note: Taken from Software Freedom Camp.

Level 0: Basics of release process and setup a development environment

  1. How to Install a .Deb File via Command-Line

  2. Lifecycle of a Release (the journey of a package from first upload to reaching a user, included in a supported release)

  3. Manage repositories/sources.list (managing the list of websites that serve Deb packages)

  4. How to install packages from stable-backports (there is some extra steps required to get new upstream versions of popular software on a stable system)

  5. apt-file find command to find which package includes a file (usually to find a missing command or header file) - apt-file tutorial

  6. Different options for setting up a Debian Sid environment (hopefully you are now familiar with Lifecycle of a release from previous steps and know new packages or new upstream versions of existing packages are first uploaded to Sid or Unstable, so we do development on this branch of debian)

  7. Building existing packages from source (node-pretty-ms instructions is recent so fdupes example in the tutorial can be skipped). Learning to build from source is useful when you want to backport a package (for example you want to rebuild a new version of a package from unstable or testing on your stable system). This is also useful if you want to modify an existing package, for example to fix a bug or cherry pick a commit from upstream.

By this time you should be familiar with

  1. apt source/dget/debcheckout,

  2. dpkg-source -x,

  3. dpkg-buildpackage/debuild,

  4. apt build-dep,

  5. apt source -b

commands to rebuild an existing debian package from source.

Level 1: Learn basics of Packaging

Understand the basic concepts using debmake/dh_make (getting source tarballs, creating source package, building the binary package, making it lintian clean)

A high level overview of packaging involves,

  1. Downloading source code of the software to be packaged (commonly release tarballs)
  2. Creating a debian directory template (using tools like debmake, npm2deb or gem2deb depending on the programming language used)

  3. Building the .deb file, combining the above two (using dpkg-buildpackage)

Tutorials to follow,

  1. Abraham Raji's simple packaging tutorial

  2. Simple Packaging Tutorial

Once you understand the basic concepts, use npm2deb to automate some of those tasks like getting source tarball, a better debian directory template than the ones created by dh_make/debmake as npm2deb knows more details specific to node modules. You will still have to fix the remaining issues flagged by lintian.

1. npm2deb Tutorial

By this time you should know,

  1. creating lintian clean packages for simple modules and
  2. building it in a clean environment like sbuild.

  3. You should also know to import a dsc file to a git repo (gbp import-dsc --pristine-tar) and

  4. push your work to a public git hosting service like https://salsa.debian.org (git push -u --all --follow-tags)

Level 2: Update existing packages to new upstream minor or patch versions

Once you get a clear picture of packaging a simple module, we can move to the next stage of updating existing packages

  1. Understand Semantic Versioning scheme and know when a new upstream release can be a breaking change. Pay special attention to software with 0.x versions - there is no guarantee about compatibility for minor updates as well.

  2. Update packages to new upstream version

  3. Using Quilt in case you need to modify any patch or create a patch

  4. Start signing your git commits and upload your gpg public key to OpenPGP.org key server (this is default key server in gpg and thunderbird so people can easily search your keys using email address. You also need to verify your email address after you upload your public key for the discovery with email to work.)

By this time you should know,

  1. How to send RFS mails
  2. Using Quilt to modify upstream source if required
  3. Sign your git commits

Once you are comfortable with simple updates (say you have done 5-6 updates), ask someone to suggest more challenging updates, like a major update.

Level 3: Packaging more complicated modules

Next step is packaging more complicated modules that will involve things like, modifying some upstream files, removing some files from source tarball, generating some files from source, getting the source tarball from a git commit etc.

  1. Advanced tutorial for more complicated modules

By this time you should know,

  1. Creating patches with quilt
  2. Repacking orig.tar and exclude specific files
  3. Use pkg-js-tools options to build from source files

  4. Build packages with typescript sources

Level 4: Pick an unpackaged but useful module and upload to archive

  1. List of node dependencies for gitlab

  2. Join Packaging teams that you find interesting. join their mailing list/irc channels and tell them you like to help with packaging and follow their documentation.

By this time you should know,

  1. How to file ITP


CategoryPackaging