Differences between revisions 40 and 94 (spanning 54 versions)
Revision 40 as of 2013-10-29 12:01:13
Size: 6231
Editor: ?Samuli.seppanen
Comment: Added link to EditingBinaryPackageMetadata Wiki page
Revision 94 as of 2020-05-12 17:49:15
Size: 8246
Editor: Praveen A
Comment:
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:
{{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.

Line 6: Line 14:
When you seriously think about packaging as a newcomer to Debian, please read the official documentation:

 * [[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.
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 14: Line 20:

----
Line 20: Line 24:
== Why Packaging == ----
Line 22: Line 26:
Whether you want
 * to install some programs or data on several computers
 * to have consistent and deterministic versioning
 * the packaging system to take care of updates
 * to help the Debian project. (see [[http://www.debian.org/devel/wnpp/|Work-Needing and Prospective Packages]])

== What is a "package"? ==

There are two kinds of packages: "binary" (.deb) and "source" (.dsc) packages. There are tools (e.g. cpack) that are able to generate "binary" packages but such packaging is ad-hoc (build-system specific) and fragile. Such packages are more likely to fail to operate when the target system diverges from the original environment they were built in.

"source" packages in turn can be built to produce "binary" packages on any other machine and architecture. In a standardized, language and underlying build-system (make vs cmake) agnostic form they provide all the necessary information about build and run-time dependencies and conflicts, a standardized description of copyright and license information, an initial configuration, etc. That is why "binary" packages alone, without the "source" packages originating them, can not be submitted for inclusion into an official Debian distribution.

Therefore ''Packaging'' in the Debian world is primarily concerned with "source" packages. "binary" packages are just a product of such work.
Line 38: Line 29:
If you need to create rapidly a package, use [[DebianPkg:equivs]]:
  * read first [[CreateDummyPackage|how to create an empty package]]
  * then read how to create a [[/Files|package with some files]]

If you prefer to gain real knowledge about Debian packaging:
To get a good grounding in Debian packaging:
Line 45: Line 32:
  * or the [[PackagingTutorial|packaging tutorial with dh-make]].   * if you are new to debian, then [[/Pre-Requisites|setting up debian unstable system]] can help you setup a development environment.
Line 47: Line 34:
Now that you have seen the basics, it is highly recomanded that you read some real stuff:
 * [[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.
Now that you have seen the basics, it is highly recommended that you read some real stuff:
 * [[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 52: Line 39:
  * the interesting pdf file included in the package [[DebianPkg:packaging-tutorial|packaging-tutorial]].
  * [[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.
  * the interesting pdf file included in the package [[DebianPkg:packaging-tutorial|packaging-tutorial]] or you can read it [[https://www.debian.org/doc/manuals/packaging-tutorial/|here]].
  * [[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 55: Line 42:
== Debian Derivatives ==

Please note that some Debian Derivatives resources may be quite useful too.
 * the [[http://developer.ubuntu.com/packaging/html/|Ubuntu Packaging Guide]]

Learn more about the [[DEX|DEX project]]
What not to do:
  * There are no shortcuts to learning good packaging practices. Avoid [[DebianPkg:equivs]] which is only useful for building trivial metapackages and does not teach you anything about packaging.
Line 63: Line 46:
== Advanced Packaging Procedures == == Packaging Procedures ==
Line 65: Line 48:
=== from Debian Women === === 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
 * [[RPM]] - repackaging RPM packages as .deb packages


=== Tools ===

 * [[UsingQuilt]] - Patch management
 * [[PackagingWithDarcs]] - Darcs version control
 * [[PackagingWithGit]] - Git version control
 * [[Packaging/sbuild]] - sbuild 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


=== 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
 * [[DpkgDiversions]]
 * BzrBuildpackage/DesignIdeas
 * [[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
 * 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

== Training Sessions ==

=== From Debian Women ===
Line 68: Line 117:
Those are about packaging :
Line 70: Line 118:
 * [[AdvancedBuildingTips|some advanced building tips]]
 * [[Courses2005/BuildingWithoutHelper|How to make a Debian package without using a helper]]
 * [[/HackingDependencies|hacking dependencies]]
Line 74: Line 119:
=== See also ===
 * [[UsingQuilt]]
 * [[PackagingFAQ]]
 * [[Renaming_a_Package]]
 * PackageTransition
 * [[Adding and removing diversions]]
 * BzrBuildpackage/DesignIdeas
 * PackagingWithDarcs
 * PackagingWithGit
 * PbuilderTricks
 * [[PkgSplit|How to split a package into smaller packages]]
 * [[Repackage_srcrpm]] - creating a proper Debian source package while referencing the src.rpm package
 * [[RPM]] - Converting a .RPM into .DEB with alien - generally leads to bad results
 * DebugPackage
 * [[PackageArchitectureAlmostAny|Creating package without some particular architectures]] - for easy porting
 * [[Python/Packaging]]
 * ConfigPackages
 * EditingBinaryPackageMetadata
== External links ==
Line 93: Line 121:
=== Useful pages ===
 * SoftwarePackaging
 * SponsorChecklist
 * SecurePbuilder
 * [[HowToPackageForDebian|how to package for Debian]]
 * [[Package]]
 * 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 100: Line 129:
== other informations ==

=== 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]]
 
Line 111: Line 131:
 * 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 117: Line 132:
 * 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 121: Line 146:
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. AndroidTools
  3. AutomakeTransition
  4. AutomaticPackagingTools
  5. BuildingFormalBackports
  6. BzrBuildpackage/DesignIdeas
  7. CheckInstall
  8. ConfigPackages
  9. Courses2005/BuildingWithoutHelper
  10. DEX
  11. DataPackages
  12. DebianAstro/AstropyPackagingTutorial/Packaging
  13. DebianAstro/AstropyPackagingTutorial/Preparation
  14. DebianDevelopment
  15. DebianMentorsFaq
  16. DebianPackageManagement
  17. DebugPackage
  18. DevelopersCorner
  19. Diagrams
  20. Distcc
  21. DpkgConffileHandling
  22. DpkgDiversions
  23. EditingBinaryPackageMetadata
  24. EmacspeakTestingGuide
  25. FTBFS
  26. Fonts/PackagingPolicy
  27. Games/Sponsors/Queue
  28. GettingPorted
  29. GitPackaging
  30. GitPackagingSurvey
  31. GitPackagingSurvey/bare debian
  32. GitPackagingSurvey/bare debian monorepo
  33. GitPackagingSurvey/bare template
  34. GitPackagingSurvey/git-debcherry
  35. GitPackagingSurvey/git-debrebase
  36. GitPackagingSurvey/git-dpm
  37. GitPackagingSurvey/manually maintained applied
  38. GitPackagingSurvey/merging
  39. GitPackagingSurvey/modified orig plus further unapplied patches
  40. GitPackagingSurvey/rebasing
  41. GitPackagingSurvey/unapplied
  42. GitSrc
  43. HowToPackageForDebian
  44. Java/Packaging
  45. Javascript/Policy
  46. Maintainers
  47. MediaWiki
  48. Mentors
  49. Mingw-W64
  50. NonMaintainerUpload
  51. PackageArchitectureAlmostAny
  52. PackageConfigUpgrade
  53. PackageTransition
  54. Packaging
  55. Packaging/BinaryPackage
  56. Packaging/HackingDependencies
  57. Packaging/Intro
  58. Packaging/ruby-team-meta-build
  59. Packaging/sbuild
  60. PackagingFAQ
  61. PackagingWithDarcs
  62. PackagingWithDocker
  63. PackagingWithGit
  64. PbuilderTricks
  65. PkgExim4UserFAQ
  66. PkgSplit
  67. Projects/DebSrc3.0
  68. Python/DbgBuilds
  69. Python/LibraryStyleGuide
  70. Python/Policy
  71. RPM
  72. RenamingPackages
  73. Repackage_srcrpm
  74. Repacking
  75. ReproducibleBuilds
  76. Salsa
  77. SecurePbuilder
  78. SimpleBackportCreation
  79. SimplePackagingTutorial
  80. SoftwarePackaging
  81. SponsorChecklist
  82. Teams
  83. Teams/CUPS
  84. Teams/DebianHaskellGroup
  85. Teams/DebianMonoGroup/NewPackage
  86. Teams/DebianMozExtTeam
  87. Teams/Foo2zjs
  88. Teams/MySQL
  89. Teams/MySQL/MySQL-wsrep
  90. Teams/OCamlTaskForce
  91. Teams/Printing
  92. Teams/PythonAppsPackagingTeam/HowTo
  93. Teams/Ruby/Packaging
  94. UsingQuilt
  95. WNPP
  96. binNMU
  97. debian/patches
  98. es/MediaWiki
  99. it/HowToPackageForDebian
  100. piuparts
  101. pt_BR/HowToPackageForDebian
  102. pt_PT/Teams
  103. ru/HowToPackageForDebian


CategoryPackaging | CategoryPortal