3166
Comment: adding packaging-tutorial
|
8246
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
<<TableOfContents(2)>> | #language en ~-[[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'''+~|| ---- {{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>> }}} <<TableOfContents()>> ---- |
Line 6: | Line 29: |
First read the excellent [[IntroDebianPackaging|Introduction to Debian Packaging]]. | To get a good grounding in Debian packaging: * first read the excellent [[IntroDebianPackaging|introduction to Debian Packaging]] to build a package from scratch, * you can also look at the [[BuildingTutorial|building tutorial]] to apply changes to an existing package. * if you are new to debian, then [[/Pre-Requisites|setting up debian unstable system]] can help you setup a development environment. |
Line 8: | Line 34: |
There is another interesting document on [[HowToPackageForDebian|how to package for Debian]] | 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 10: | Line 38: |
There is also an intresting package : [[http://packages.qa.debian.org/p/packaging-tutorial.html|packaging-tutorial]] | Then, if you are looking for answers, you can come back here or read: * 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 12: | Line 42: |
A very basic introduction to create an [[/Minimal|empty package]] or a package with [[/Trivial|just a pdf file]] | 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 15: | Line 46: |
== Debian Packaging == | == Packaging Procedures == |
Line 17: | Line 48: |
When you seriously think about packaging as new comer to Debian, please consider to read: | === Types / Formats === |
Line 19: | Line 50: |
* [[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/debian-policy/|Debian Policy]] -- guiding rules * [[http://www.debian.org/doc/debian-policy/|Developers Reference]] -- advanced guide etc. Please note some Ubuntu resources may be quite useful too. * the packaging guide at https://wiki.ubuntu.com/PackagingGuide/ |
* [[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 |
Line 27: | Line 65: |
=== Tools === | |
Line 28: | Line 67: |
== Building debian packages == To make sure that a debian package meets all build dependencies and is not influenced by anything specific to the user's environment, packages should be built in a [[chroot]] environment. Tools like [[PbuilderTricks|pbuilder]] can be used for this. When working on a package, a faster rebuild can be done with 'debuild'. But then, all build-dependencies must be satisfied in the installation where the package is built. All necessary packages can be installA very basic introduction to create an [[/Minimal|empty package]] or a package with [[/Trivial|just a pdf file]] ed automatically with {{{apt-get build-dep}}}. A complete example for building the DebPkg:foo package looks like this: {{{ $ apt-get source foo $ cd foo-0.0.1 $ sudo apt-get build-dep foo $ debuild -i -us -uc -b }}} This is usually enough for you to backport packages. |
* [[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 |
Line 44: | Line 76: |
=== Advanced Procedures === | |
Line 45: | Line 78: |
== See also: == * [[Python/Packaging]] * http://www-128.ibm.com/developerworks/linux/library/l-debpkg.html : creating debian packages - high-level description of debian packaging . * http://julien.danjou.info/article-apt-build.html * WikiPedia:List_of_open-source_software_packages * http://www.debian.org/devel/wnpp/prospective : requested packages, and packages being worked on. * [[http://www.debian-administration.org/articles/336]] Rolling your own debian packages. * ConfigPackages * PackageConfigUpgrade : propose a new way to smoothly handle configuration upgrades during package upgrades |
* [[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 |
Line 55: | Line 106: |
* DebugPackage * EtchTransitionalPackages * HowToPackageForDebian * PackageCustomization * PackagingWithDarcs * PackagingWithGit * [[PkgSplit|Making Multiple Packages From A Single Source Tarball]] * [[Renaming_a_Package]] * SecurePbuilder * SponsorChecklist * [[http://vcs-pkg.org/|VCSPackaging]] * AutomakeTransition * [[deb]] files * [[RPM|rpm]] - Tool for extracting from RPM source tarballs * Autobuilding non-free packages: http://article.gmane.org/gmane.linux.debian.devel.announce/997 |
* [[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 === [[DebianWomen]] organise interesting [[DebianWomen/Projects/Events/TrainingSessions|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) * [[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...) === See also: === * [[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 72: | Line 146: |
CategoryPackageManagement CategoryPackaging ---- |
CategoryPackaging | CategoryPortal |
Translation(s): English - Italiano - Svenska - Русский
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.
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.
Now that you have seen the basics, it is highly recommended that you read some real stuff:
the Debian New Maintainers' Guide describes the building of a Debian package to ordinary Debian users.
the Debian Policy includes technical requirements that each package must satisfy.
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
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
?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
Training Sessions
From Debian Women
DebianWomen organise interesting 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
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