Translation(s): English - Español - Português (Brasil) - Italiano - Svenska - Русский
Welcome to Debian's packaging portal.
This portal is about information relevant to developers wishing to package software for Debian. If you were looking for information on installing and removing packages from your Debian system, see the package management page.
Debian packages are maintained by a community of Debian Developers and volunteers.
If you're just starting out with Debian packaging, please read the official documentation first:
Guide for Debian Maintainers -- describes the building of a Debian package with many examples
Debian Packaging Tutorial -- slides-based overview of Debian packaging
Debian Policy -- guiding rules
Developers Reference -- advanced guide etc.
Introduction for maintainers: How will my package get into Debian?
Contents
Introduction to Debian Packaging
To get a good grounding in Debian packaging:
first read the excellent introduction to Debian Packaging to build a package from scratch,
you can also look at the building tutorial to apply changes to an existing package.
if you are new to debian, then setting up debian unstable system can help you setup a development environment.
Learn Debian Packaging in steps for new to advanced packaging levels (by ?JavaScript team).
Now that you have seen the basics, it is highly recommended that you read some real stuff:
Guide for Debian Maintainers describes the building of a Debian package with many examples (This replaces outdated the Debian New Maintainers' Guide )
the Debian Policy includes technical requirements that each package must satisfy.
- More than anything, please also check the source code of existing recently updated packages of similar kinds.
Then, if you are looking for answers, you can come back here or read:
the interesting pdf file included in the package packaging-tutorial or you can read it here.
The Developers Reference provides an overview of the recommended procedures and the available resources for Debian developers.
What not to do:
There are no shortcuts to learning good packaging practices. Avoid equivs which is only useful for building trivial metapackages and does not teach you anything about packaging.
Packaging Procedures
Types / Formats
AndroidTools - Android tools
Fonts/PackagingPolicy - Fonts
https://go-team.pages.debian.net/packaging.html - Golang libraries and applications
Teams/DebianHaskellGroup - Haskell environment and libraries
Java/Packaging - Java libraries and applications
Javascript/Policy - ?JavaScript libraries and applications
https://salsa.debian.org/lua-team - Lua modules
Teams/DebianMonoGroup/NewPackage - Mono libraries and applications
Teams/DebianMozExtTeam - Mozilla extensions
Teams/OCamlTaskForce - OCaml libraries
Python/Packaging - Python modules and applications
Teams/Ruby/Packaging - Ruby modules and applications
Teams/RustPackaging - Rust crates and applications
RPM - repackaging RPM packages as .deb packages
Tools
PackagingWithDarcs - Darcs version control
Packaging/debspawn - debspawn clean build tool
PbuilderTricks - Pbuilder clean build tool
SecurePbuilder - Secure Pbuilder builder tool
Packaging/ruby-team-meta-build - build scripts used by ruby team, helps testing reverse dependencies easily
Suggested tools to create an environment for packaging
To create a packaging environment, you will need to install and learn how to use the following tools:
Packaging/sbuild, clean build tool; install the sbuild package.
sbuild is used in the Debian build service (buildd). See also sbuild.
PackagingWithGit, for Git management packaging; install the git-buildpackage package.
piuparts, for .deb package installation, upgrading, and removal testing tool; install the piuparts package.
Lintian, a comprehensive package checker for Debian packages; install the lintian package.
Devscripts - scripts to make the life of a Debian Package maintainer easier; install the devscripts package.
Autopkgtest - run tests found in Debian source packages; install the autopkgtest package.
blhc - search for missing hardening flags; install the blhc package. See Debian: how to use blhc to solve hardening issues when packaging.
dh-make - converts source archives into Debian package source; install the dh-make package.
cowbuilder - really handy to build your project for many distributions at once; install the cowbuilder package.
Okay, now you have an environment ready to start learning how to package for Debian!
Advanced Procedures
AdvancedBuildingTips - Advanced building tips
Courses2005/BuildingWithoutHelper - How to make a Debian package without using a helper
/HackingDependencies - hacking dependencies
/ComplexWebApps - Create debian packages for complex web applications
Useful Pages
PackagingFAQ - Packaging FAQ
Mentors - sponsors/mentors for packages in specific areas of Debian
Renaming_a_Package - Renaming a Package
PackageTransition - Package Transition
?PkgSplit - How to split a package into smaller packages
Repackage_srcrpm - creating a proper Debian source package while referencing the src.rpm package
DebugPackage - Debug Package
PackageArchitectureAlmostAny - Creating package without some particular architectures for easy porting
ConfigPackages - Config Package
DpkgConffileHandling - Gracefully Handling conffiles
EditingBinaryPackageMetadata - Editing Binary Package Metadata
SoftwarePackaging - Software Packaging
SponsorChecklist - Sponsor Checklist
HowToPackageForDebian - How to package for Debian
AutomaticPackagingTools - Automatic Packaging Tools
DEX - improving Debian and its derivatives through cross-community teamwork
Repacking - Collecting information about repacking
PackageConfigUpgrade - propose a new way to smoothly handle configuration upgrades during package upgrades
Diagrams - packaging related diagrams and sketches
WNPP - Work-Needing and Prospective Packages list packages that have been requested for packaging, or need a new maintainer
Salsa - collaborative development server for Debian based on the GitLab software
CheckInstall - Build binary .deb packages from installation scripts (make install...)
SimpleBackportCreation - Backport a DebianUnstable package to DebianStable
SourceOnlyUpload - Source-only are uploads to the Debian archive that do not include a binary build of the Debian package
EmbeddedCopies - Debian packages should not use convenience copies.
LanguageVersionedDevPackages - Programming language-specific solutions for versioned -dev packages
Training Sessions
From Debian Women
DebianWomen organise training sessions.
External links
https://feeding.cloud.geek.nz/posts/whats-in-a-debian-directory/ - What's in a debian/ directory
https://github.com/dod38fr/config-model/wiki/Managing-Debian-packages-with-cme - Managing Debian package files with cme
https://packaging.ubuntu.com/ - Ubuntu Packaging Guide
https://www.debian.org/doc/manuals/apt-howto/ - APT HOWTO (Obsolete Documentation)
https://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Debian-Binary-Package-Building-HOWTO.html Debian Binary Package Building HOWTO (2005)
fpm can build .deb packages from various other package formats (rubygems, pip, pear, tar, npm, pacman...)
See also:
Debian adminstration - Rolling your own Debian packages (part 1)
Avoid a newbie packager mistake: don’t build your Debian packages with dpkg -b
Debuginfod eliminates the need for users to install debuginfo packages in order to debug programs using GDB, systemtap or other tools
Browse through the source code of the Debian operating system
Wiki pages
All pages related to packaging in Debian:
- AdvancedBuildingTips
- Alioth
- AndroidTools
- AutomakeTransition
- AutomaticPackagingTools
- BuildingFormalBackports
- BzrBuildpackage/DesignIdeas
- CheckInstall
- ConfigPackages
- CopyrightReviewTools
- Courses2005/BuildingWithoutHelper
- CreatePackageFromPPA
- Creating signed GitHub releases
- DEX
- DataPackages
- DebianAstro/AstropyPackagingTutorial/Packaging
- DebianAstro/AstropyPackagingTutorial/Preparation
- DebianDevelopment
- DebianGNUstep/TODO
- DebianMentorsFaq
- DebianPackageManagement
- DebianPackaging-FAQs
- DebianRepository/Setup
- DebugPackage
- DevelopersCorner
- Diagrams
- Distcc
- DpkgConffileHandling
- DpkgDiversions
- EditingBinaryPackageMetadata
- EmacspeakTestingGuide
- FTBFS
- FastTrack
- Fonts/PackagingPolicy
- Games
- Games/Sponsors/Queue
- GettingPorted
- GitPackaging
- GitPackagingSurvey
- GitPackagingSurvey/bare debian
- GitPackagingSurvey/bare debian monorepo
- GitPackagingSurvey/bare template
- GitPackagingSurvey/git-debcherry
- GitPackagingSurvey/git-debrebase
- GitPackagingSurvey/git-dpm
- GitPackagingSurvey/manually maintained applied
- GitPackagingSurvey/merging
- GitPackagingSurvey/modified orig plus further unapplied patches
- GitPackagingSurvey/rebasing
- GitPackagingSurvey/unapplied
- GitPackagingWorkflow
- GitPackagingWorkflow/DebConf11BOF
- GitSrc
- HardeningWalkthrough
- HowToPackageForDebian
- Java/Packaging
- Javascript/Policy
- Maintainers
- MediaWiki
- Mentors
- Mingw-W64
- NonMaintainerUpload
- PackageArchitectureAlmostAny
- PackageConfigUpgrade
- PackageTransition
- Packaging
- Packaging/BinaryPackage
- Packaging/HackingDependencies
- Packaging/Intro
- Packaging/Pre-Requisites
- Packaging/ruby-team-meta-build
- Packaging/sbuild
- PackagingFAQ
- PackagingWithDarcs
- PackagingWithDocker
- PackagingWithGit
- PbuilderTricks
- PkgExim4
- PkgExim4UserFAQ
- PkgQtKde/BookwormReleasePlans
- Projects/DebSrc3.0
- Python/DbgBuilds
- Python/LibraryStyleGuide
- Python/Policy
- RPM
- RenamingPackages
- Repackage_srcrpm
- Repacking
- ReproducibleBuilds
- Salsa
- SecurePbuilder
- ServiceSandboxing
- SimpleBackportCreation
- SimplePackagingTutorial
- SoftwarePackaging
- SponsorChecklist
- SystemBuildTools
- Teams
- Teams/CUPS
- Teams/DebianHaskellGroup
- Teams/DebianMonoGroup/NewPackage
- Teams/DebianMozExtTeam
- Teams/Dpkg/Spec/DeclarativePackaging
- Teams/Foo2zjs
- Teams/MySQL
- Teams/MySQL/MySQL-wsrep
- Teams/OCamlTaskForce
- Teams/Printing
- Teams/Ruby/Packaging
- UntrustedDebs
- UsingQuilt
- WNPP
- binNMU
- debian/patches
- debian/watch
- piuparts
- pt_BR/AdvancedBuildingTips
- pt_PT/Teams
- sbuild
- udeb