Differences between revisions 54 and 92 (spanning 38 versions)
Revision 54 as of 2016-05-01 09:32:40
Size: 7797
Comment: Move the official documentation box futher down the page to the introduction to packaging bit
Revision 92 as of 2020-03-06 15:26:58
Size: 8089
Comment: I don't think Quilt is Ruby specific
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[it/Packaging|Italiano]] - [[sv/Packaging|Svenska]] -~ ~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[it/Packaging|Italiano]] - [[sv/Packaging|Svenska]] - [[ru/Packaging|Русский]]-~
<<BR>>
||<tablestyle="width: 100%; text-align: center; border: 0px hidden"> {{https://www.debian.org/logos/openlogo-nd-50.png}} {{https://www.debian.org/Pics/debian.png}}||
||<style="border: 0px hidden">~+{{attachment:Portal/IDB/logo_portal.png}} Welcome to [[Debian]] '''packaging portal'''+~||
Line 5: Line 8:
Debian packages are maintained by a community of Debian Developers and volunteers. This page contains information relevant to packaging software for Debian. {{attachment:Portal/IDB/icon-template-32x32.png}} This portal is about ''' information relevant to developers wishing to package [[Software|software]] for Debian.''' If you were looking for information on installing and removing packages from your Debian system, see the [[PackageManagement|package management]] page.

Debian [[Software|packages]] are maintained by a community of Debian Developers and volunteers.


{{{#!wiki debian
If you're just starting out with Debian packaging, please read the official documentation first:<<BR>>
[[https://www.debian.org/doc/manuals/maint-guide/index.en.html|the Debian New Maintainers' Guide]] -- tutorial for simple package<<BR>>
[[https://www.debian.org/doc/devel-manuals#packaging-tutorial|Debian Packaging Tutorial]] -- slides-based overview of Debian packaging<<BR>>
[[https://www.debian.org/doc/debian-policy/|Debian Policy]] -- guiding rules
[[https://www.debian.org/doc/manuals/developers-reference/|Developers Reference]] -- advanced guide etc.<<BR>>
}}}
Line 9: Line 23:
== What is a "package"? ==
Line 11: Line 24:
A Debian package is a collection of files that allow for applications or libraries to be distributed via the Debian package management system. The aim of packaging is to allow the automation of installing, upgrading, configuring, and removing computer programs for Debian in a consistent manner. ----
Line 13: Line 26:
A Debian package consists of one source package component and one or more binary package components. Debian Policy requires that these package files are built with a particular structure and format but there are many methods of arriving at these files.

{{{#!wiki warning
Only packages that are compliant with Debian policy will be accepted into the archive. Manually constructed binary packages (.deb) that are not built from a source package will never be accepted.
}}}

Source packages not only contain the upstream source distribution and options for the Debian package build system but also lists of run-time dependencies and conflicting packages, a machine-readable description of copyright and license information, initial configurations, etc.

While the goal of packaging is to produce these files, for the most part, you will be working with the unpacked source in a directory. The source package (.dsc) and binary packages (.deb) will be built for you by tools such as dpkg-buildpackage.

You can read more about the anatomy of [[DebianPackage|binary packages]] or [[SourcePackage|source packages]] on their wiki pages.
Line 26: Line 28:

{{{#!wiki debian
If you're just starting out with Debian packaging, please read the official documentation first:

 * [[http://www.debian.org/doc/manuals/maint-guide/index.en.html|the Debian New Maintainers' Guide]] -- tutorial for simple package
 * [[http://www.debian.org/doc/devel-manuals#packaging-tutorial|Debian Packaging Tutorial]] -- slides-based overview of Debian packaging
 * [[http://www.debian.org/doc/debian-policy/|Debian Policy]] -- guiding rules
 * [[http://www.debian.org/doc/manuals/developers-reference/|Developers Reference]] -- advanced guide etc.

}}}
Line 40: Line 32:
  * if you are new to debian, then [[/Pre-Requisites|setting up debian unstable system]] can help you setup a development environment.
Line 42: Line 35:
 * [[http://www.debian.org/doc/manuals/maint-guide/index.en.html|the Debian New Maintainers' Guide]] describes the building of a Debian package to ordinary Debian users.
 * [[http://www.debian.org/doc/debian-policy/|the Debian Policy]] includes technical requirements that each package must satisfy.
 * [[https://www.debian.org/doc/manuals/maint-guide/index.en.html|the Debian New Maintainers' Guide]] describes the building of a Debian package to ordinary Debian users.
 * [[https://www.debian.org/doc/debian-policy/|the Debian Policy]] includes technical requirements that each package must satisfy.
Line 47: Line 40:
  * [[http://www.debian.org/doc/manuals/developers-reference/|The Developers Reference]] provides an overview of the recommended procedures and the available resources for Debian developers.   * [[https://www.debian.org/doc/manuals/developers-reference/|The Developers Reference]] provides an overview of the recommended procedures and the available resources for Debian developers.
Line 51: Line 44:
Line 56: Line 50:
 * [[AndroidTools]] - android tools
 * [[Fonts/PackagingPolicy|Fonts]] - packages
 * [[http://pkg-go.alioth.debian.org/packaging.html|Go]] - libraries and applications
 * [[http://pkg-haskell.alioth.debian.org/haskell-policy/|Haskell]] - libraries (outdated, updating is listed as TODO item on [[Haskell]])
 * [[Java/Packaging|Java]] - libraries and applications
 * [[Javascript/Policy|JavaScript]] - libraries and applications
 * [[http://pkg-lua.alioth.debian.org/policy.html|Lua]] - modules
 * [[Teams/DebianMonoGroup/NewPackage|Mono]] - libraries and applications
 * [[Teams/DebianMozExtTeam#Common_practices|Mozilla Extensions]] - XUL extensions
 * [[http://pkg-ocaml-maint.alioth.debian.org/ocaml_packaging_policy.html/index.html|OCaml]] - libraries
 * [[Python/Packaging|Python]] - modules and applications
 * [[Teams/Ruby/Packaging|Ruby]] - modules and applications
 * [[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
Line 69: Line 63:
Line 72: Line 67:
 * [[UsingQuilt|Quilt]] - patch management
 * [[PackagingWithDarcs|Darcs]] - version control
 * [[PackagingWithGit|Git]] - version control
 * [[PbuilderTricks|Pbuilder]] - build tool
 * [[SecurePbuilder|Secure Pbuilder]] - builder tool
 * [[UsingQuilt]] - Patch management
 * [[PackagingWithDarcs]] - Darcs version control
 * [[PackagingWithGit]] - Git version control
 * [[Packaging/sbuild]] - sbuild clean build tool
 * [[P
builderTricks]] - 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
Line 80: Line 78:
 * [[AdvancedBuildingTips|some advanced building tips]]
 * [[Courses2005/BuildingWithoutHelper|How to make a Debian package without using a helper]]
 * [[/HackingDependencies|hacking dependencies]]
 * [[AdvancedBuildingTips]] - Advanced building tips
 * [[Courses2005/BuildingWithoutHelper]] - How to make a Debian package without using a helper
 * [[/HackingDependencies]] - hacking dependencies
Line 86: Line 85:
 * [[PackagingFAQ|Packaging FAQ]]
 * [[Renaming_a_Package|Renaming a Package]]
 * [[PackageTransition|Package Transition]]
 * [[Adding and remo
ving diversions]]
 * [[PackagingFAQ]] - Packaging FAQ
 * [[Mentors]] - sponsors/mentors for packages in specific areas of Debian

 * [[Renaming_a_Package]] - Renaming a Package
 * [[PackageTransition]] - Package Transition
 * [[DpkgDi
versions]]
Line 91: Line 91:
 * [[PkgSplit|How to split a package into smaller packages]]  * [[PkgSplit]] - How to split a package into smaller packages
Line 93: Line 93:
 * [[DebugPackage|Debug Package]]
 * [[PackageArchitectureAlmostAny|Creating package without some particular architectures]] - for easy porting
 * [[ConfigPackages|Config Package]]
 * [[EditingBinaryPackageMetadata|Editing Binary Package Metadata]]
 * [[SoftwarePackaging|Software Packaging]]
 * [[SponsorChecklist|Sponsor Checklist]]
 * [[HowToPackageForDebian|How to package for Debian]]
 * [[Package]]
 * [[AutomaticPackagingTools|Automatic Packaging Tools]]
 * [[DEX|DEX]] - improving Debian and its derivatives through cross-community teamwork
 * [[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
 * AutomakeTransition
 * [[PackageConfigUpgrade]] - propose a new way to smoothly handle configuration upgrades during package upgrades
 * DataPackages
 * [[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
Line 111: Line 120:
== Other Information == == External links ==
Line 113: Line 122:
=== External useful links ===
 * http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Debian-Binary-Package-Building-HOWTO.html
 * http://qref.sourceforge.net/Debian/reference/ch-package.en.html
 * http://www.debian.org/doc/manuals/apt-howto/ and package apt-howto
 * http://www.debian.org/devel/wnpp/prospective - requested packages, and packages being worked on.
 * [[http://people.connexer.com/~roberto/howtos/debcustomize|Debian Package Customization HOWTO]]
 * [[http://feeding.cloud.geek.nz/posts/whats-in-a-debian-directory/|What's in a debian/ directory]] - detailed worked example
 * [[https://github.com/dod38fr/config-model/wiki/Managing-Debian-packages-with-cme|Managing Debian package files with cme]]
 * [[http://packaging.ubuntu.com/|Ubuntu Packaging Guide]]
 * 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)
 * [[https://about.gitlab.com/blog/2016/10/12/automated-debian-package-build-with-gitlab-ci/|How to build and deploy a Debian Package with GitLab CI]]
 * [[https://github.com/jordansissel/fpm|fpm]] can build .deb packages from various other package formats ([[https://github.com/jordansissel/fpm/wiki/ConvertingGems|rubygems]], [[https://github.com/jordansissel/fpm/wiki/ConvertingPython|pip]], pear, tar, npm, pacman...)
Line 124: Line 132:
 * http://www-128.ibm.com/developerworks/linux/library/l-debpkg.html : creating debian packages - high-level description of debian packaging .
 * WikiPedia:List_of_open-source_software_packages
 * [[http://www.debian-administration.org/articles/336]] Rolling your own debian packages.
 * [[http://vcs-pkg.org/|VCSPackaging]]
 * Autobuilding non-free packages: http://article.gmane.org/gmane.linux.debian.devel.announce/997
Line 130: Line 133:
 * AutomakeTransition
 * PackageConfigUpgrade : propose a new way to smoothly handle configuration upgrades during package upgrades
 * DataPackages
 * [[https://www.debian-administration.org/articles/336|Debian adminstration - Rolling your own Debian packages (part 1)]]
 * [[https://lists.debian.org/msgid-search/20061129152824.GT2560@mails.so.argh.org|Autobuilding non-free packages]]
 * [[https://www.strangeparty.com/2010/06/17/a-debian-packaging-howto/|A Debian packaging howto (2010)]]
 * [[https://raphaelhertzog.com/2010/12/17/do-not-build-a-debian-package-with-dpkg-b/|Avoid a newbie packager mistake: don’t build your Debian packages with dpkg -b]]


== Wiki pages ==

All pages related to packaging in Debian:

<<FullSearch(language:en category:CategoryPackaging)>>

Line 134: Line 147:
CategoryPackageManagement CategoryPackaging
----

CategoryPackaging | CategoryPortal

Translation(s): English - Italiano - Svenska - Русский

https://www.debian.org/logos/openlogo-nd-50.png https://www.debian.org/Pics/debian.png

Portal/IDB/logo_portal.png Welcome to Debian packaging portal


Portal/IDB/icon-template-32x32.png 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:
the Debian New Maintainers' Guide -- tutorial for simple package
Debian Packaging Tutorial -- slides-based overview of Debian packaging
Debian Policy -- guiding rules Developers Reference -- advanced guide etc.


Introduction to Debian Packaging

To get a good grounding in Debian packaging:

Now that you have seen the basics, it is highly recommended that you read some real stuff:

Then, if you are looking for answers, you can come back here or read:

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

Tools

Advanced Procedures

Useful Pages

Training Sessions

From Debian Women

DebianWomen organise interesting training sessions.

See also:

Wiki pages

All pages related to packaging in Debian:

  1. AdvancedBuildingTips
  2. Alioth
  3. AndroidTools
  4. AutomakeTransition
  5. AutomaticPackagingTools
  6. BuildingFormalBackports
  7. BzrBuildpackage/DesignIdeas
  8. CheckInstall
  9. ConfigPackages
  10. CopyrightReviewTools
  11. Courses2005/BuildingWithoutHelper
  12. CreatePackageFromPPA
  13. Creating signed GitHub releases
  14. DEX
  15. DataPackages
  16. DebianAstro/AstropyPackagingTutorial/Packaging
  17. DebianAstro/AstropyPackagingTutorial/Preparation
  18. DebianDevelopment
  19. DebianGNUstep/TODO
  20. DebianMentorsFaq
  21. DebianPackageManagement
  22. DebianPackaging-FAQs
  23. DebianRepository/Setup
  24. DebugPackage
  25. DevelopersCorner
  26. Diagrams
  27. Distcc
  28. DpkgConffileHandling
  29. DpkgDiversions
  30. EditingBinaryPackageMetadata
  31. EmacspeakTestingGuide
  32. FTBFS
  33. FastTrack
  34. Fonts/PackagingPolicy
  35. Games
  36. Games/Sponsors/Queue
  37. GettingPorted
  38. GitPackaging
  39. GitPackagingSurvey
  40. GitPackagingSurvey/bare debian
  41. GitPackagingSurvey/bare debian monorepo
  42. GitPackagingSurvey/bare template
  43. GitPackagingSurvey/git-debcherry
  44. GitPackagingSurvey/git-debrebase
  45. GitPackagingSurvey/git-dpm
  46. GitPackagingSurvey/manually maintained applied
  47. GitPackagingSurvey/merging
  48. GitPackagingSurvey/modified orig plus further unapplied patches
  49. GitPackagingSurvey/rebasing
  50. GitPackagingSurvey/unapplied
  51. GitPackagingWorkflow
  52. GitPackagingWorkflow/DebConf11BOF
  53. GitSrc
  54. HardeningWalkthrough
  55. HowToPackageForDebian
  56. Java/Packaging
  57. Javascript/Policy
  58. Maintainers
  59. MediaWiki
  60. Mentors
  61. Mingw-W64
  62. NonMaintainerUpload
  63. PackageArchitectureAlmostAny
  64. PackageConfigUpgrade
  65. PackageTransition
  66. Packaging
  67. Packaging/BinaryPackage
  68. Packaging/HackingDependencies
  69. Packaging/Intro
  70. Packaging/Pre-Requisites
  71. Packaging/ruby-team-meta-build
  72. Packaging/sbuild
  73. PackagingFAQ
  74. PackagingWithDarcs
  75. PackagingWithDocker
  76. PackagingWithGit
  77. PbuilderTricks
  78. PkgExim4
  79. PkgExim4UserFAQ
  80. PkgQtKde/BookwormReleasePlans
  81. Projects/DebSrc3.0
  82. Python/DbgBuilds
  83. Python/LibraryStyleGuide
  84. Python/Policy
  85. RPM
  86. RenamingPackages
  87. Repackage_srcrpm
  88. Repacking
  89. ReproducibleBuilds
  90. Salsa
  91. SecurePbuilder
  92. ServiceSandboxing
  93. SimpleBackportCreation
  94. SimplePackagingTutorial
  95. SoftwarePackaging
  96. SponsorChecklist
  97. SystemBuildTools
  98. Teams
  99. Teams/CUPS
  100. Teams/DebianHaskellGroup
  101. Teams/DebianMonoGroup/NewPackage
  102. Teams/DebianMozExtTeam
  103. Teams/Dpkg/Spec/DeclarativePackaging
  104. Teams/Foo2zjs
  105. Teams/MySQL
  106. Teams/MySQL/MySQL-wsrep
  107. Teams/OCamlTaskForce
  108. Teams/Printing
  109. Teams/Ruby/Packaging
  110. UntrustedDebs
  111. UsingQuilt
  112. WNPP
  113. binNMU
  114. debian/patches
  115. debian/watch
  116. piuparts
  117. pt_BR/AdvancedBuildingTips
  118. pt_PT/Teams
  119. sbuild
  120. udeb


CategoryPackaging | CategoryPortal