UbuntuBackports

Differences between revisions 14 and 48 (spanning 34 versions)
Revision 14 as of 2005-08-25 18:51:45
Size: 3654
Editor: 24-50-193-209
Comment: fixed minor spacing error
Revision 48 as of 2023-12-07 14:33:47
Size: 11545
Editor: ddstreet
Comment: add clarification about non-LTS backport exceptions, add granted exception for cockpit and related packages
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= What are Backports =
Ubuntu releases a new version of its OS every 6 months. After a release, the version of all packages stays constant for the entire 6 months. For example, if Hoary ships with Firefox 1.0.1, Hoary will remain at Firefox 1.0.1 for the entire 6-month release cycle, even if 1.0.2, 1.0.3, or 1.0.4 gets released during this time. The Ubuntu team may apply important security fixes to 1.0.1, but any new features or non-security bugfixes won't be made available to Hoary.
||<tablestyle="float:right; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Table of Contents'''<<BR>> <<TableOfContents>>||
Line 4: Line 3:
This is where Ubuntu Backports comes in. The Backports team believes that the best update policy is a mix of Ubuntu's security-only policy AND providing new versions of some programs. Candidates for version updates are primarily desktop applications, such as your web browser, word processor, IRC client, IM client, and so on. These can be updated without replacing a chunk of the operating system that would affect stability of the whole system. = Ubuntu Backports Process =
Line 6: Line 5:
Backports also include an extras repository which holds some packages which are not found in the official package collections. These include mainly legally-risky packages, for example many multimedia formats which are patent protected or some freeware commercial programs like the Adobe Acrobat Reader or Sun's Java Runtime Enviroment/Development Kit which are protected by a strict EULA. This page documents the development process for the Ubuntu Backports Project, as well as some of the justification for the project’s policies.
Line 8: Line 7:
As of June 2005, we are also an official Ubuntu project, so we are acknowledged by the developers. If you’re not familiar with what backports are, or are trying to figure out how to install a package backported through the Backports Project, then our [[https://help.ubuntu.com/community/UbuntuBackports|user documentation]] might be a good place to start.
Line 10: Line 9:
= Stability =
The new official backports currently do not receive testing (unlike the old unofficial backports). The stability of the packages should be the same as that of the Ubuntu unstable distribution (currently Breezy Badger). If you have problems with one package please report it in the [https://launchpad.net/products/ubp-hoary/+filebug Ubuntu community bugtracker] and not the official Bugtracker.
For info about team rules and administration, see the [[https://wiki.ubuntu.com/UbuntuBackports/Policies|team policies]].
Line 13: Line 11:
= How to use = == Responsibilities of the Backporter ==
Line 15: Line 13:
A. Command Line Interface You (or your sponsor) will need to prepare the backported package. This should be done with as few changes as possible to the backported package; any changes required should be explicitly stated in the changelog entry of the backported package.
Line 17: Line 15:
Just add the following lines to your ''/etc/apt/sources.list'' : === Testing the Backport ===
Line 19: Line 17:
{{{deb http://archive.ubuntu.com/ubuntu hoary-backports main universe multiverse restricted}}} You must test the backport in the Ubuntu release(s) you are requesting the backport for.
Line 21: Line 19:
Now issue the command: ''sudo apt-get update'' === Functionality of the Backported Package ===
Line 23: Line 21:
B. Through Synaptic Package Manager  * Each package being backported must install cleanly and without errors.
 * The software shipped in the package must also run.
   * You must detail your test process and results in the backport tracking bug.
   * In particular, make sure to run any build-time tests and autopkgtests **before** uploading.
Line 25: Line 26:
Using the directions on the [https://wiki.ubuntu.com/AddingRepositoriesHowto How To Add Repositories Page]; and the following information for each section: === Continued Functionality of Reverse-Dependencies ===
Line 27: Line 28:
{{{url: http://archive.ubuntu.com/ubuntu
distribution: hoary-backports
sections: main universe multiverse restricted }}}
In addition to the backported package itself working, any other software that depends on the backported package must continue to run with the backported package installed, and any package that has a build-dependency on the backported package must build with the new package installed.
In case that's not possible, the backported package ''must'' set appropriate package relations (Breaks, et al.) to prevent any incompatible installation (such Breaks could conceivably be part of the original package, it needs not be a backport-specific change).
Line 31: Line 31:
= How to request new packages =
When you need a package backported which isn't currently just start a new thread in the [http://www.ubuntuforums.org/forumdisplay.php?f=79 Backports Requests Forum].
These are the rules we try to follow when backporting packages:
=== Future Maintenance of the Backport ===
Line 35: Line 33:
{{{0 Only packages currently in Ubuntu's development branches are eligible for backporting
1 Backports of large, interdepending applications stacks are bad!
2 New versions can be backported, when they're compatible with already OS and System relevant libraries.
3 No new libraries, which will "break" or better say, affecting other applications (e.g. libvorbis, libz etc.) unless the update fixes an exploit.
4 No changes to language interpreters (python, mono). These could affect existing packages in unexpected ways.
5 Applications to be backported must have meaningful bug/security fixes or features.}}}
The Ubuntu Backports team ''is not'' responsible for the backported package.
Line 42: Line 35:
= How to Help = The backporter is responsible for monitoring the backported package in the future for any bug reports, security patches, or additional updates that should be backported.
Furthermore, the backporter is also responsible for any backport-specific bug that might be found in the backported package that wasn't present in the original version the backport was done from.
Line 44: Line 38:
{{{TODO}}}
Line 46: Line 39:
= Useful Links =
 * [http://backports.ubuntuforums.org/ Backports Homepage]
 * [http://ubuntuforums.org/forumdisplay.php?f=47 Backports Forum]
 * [http://lists.ubuntu.com/mailman/listinfo/ubuntu-backports Backports Mailing List]
= Procedure =

== Prepare and upload the package ==

The procedure is intentionally very similar to the existing [[https://wiki.ubuntu.com/StableReleaseUpdates#Procedure|SRU procedure]], with minor changes specific to the purpose of the backports pocket. You should first read and understand that process, as this will page will only highlight the specific differences, and it assumes you are familiar with the SRU process.

=== Select the package to backport ===

Here are some nuiances of what to backport, from where and to where.

 * There are some packages the Ubuntu Backports Team forbids from backporting.
 * There are some packages the Ubuntu Backports Team handles themselves.
 * Backports to non-LTS are not accepted (with exceptions).
 * Backports are expected to come:
   * from the current Ubuntu stable release (preferred), or
   * from the current LTS release, targetting the prior LTS release, or
   * from the current package version in the current Ubuntu development release.

Currently decided exceptions to the above are documented [[#Special_Cases|at the bottom of this page]], anything else needs to be discussed with the Ubuntu Backports team either in the tracking bug or in the mailing list.

=== Open a Bug ===

The first step is to open a bug in Launchpad for the backport. Open the bug against the package that you want backported, and include the prefix '''[BPO]''' in the bug subject. The bug description should include the [[#BPO_Bug_Template|BPO bug template]], filled out with specific details for the requested backport. Make sure to subscribe the [[https://launchpad.net/~ubuntu-backporters|~ubuntu-backporters]] team to the bug, so that we can track open requests that need the team's input.

Unlike the SRU process, which does not allow requesting a SRU to add features or functionality, the backport process does allow the need for new features or functionality. The backport bug does not need to list all fixed bugs or all the new functionalities but should highlight and/or summarize the key fixes or features or other reasons for needing to backport the package.

The bug's intention is to provide a location for any paperwork that might be required for the backport. For example, if any questions are raised during review or if any discussion is required, as well as providing a reference for anyone who might want to later see why and how a specific package was backported.

=== Preparing the Backported Package ===

As in the SRU process, you must prepare a package for the backport. Be sure to include the LP bug reference in the package changelog description; specifically, in the format "LP: #NNNNNN" (replacing NNNNNN with the number of the bug you opened for the backport).

If you have upload rights, you can then upload directly into the backports queue. Note that unlike uploading for SRU, when uploading into the backports queue, you should use the ''backports'' pocket; for example, in the changelog instead of using the release ''focal'' you should use ''focal-backports''. Additionally, the version number you use should exactly match the version number you are backporting from, with a specific suffix added in the format '''~bpoRELEASE.1''', for example if backporting to release 20.04, append the suffix ''~bpo20.04.1''.

Version examples:

|| ''Original version'' || ''Backporting to'' || ''BPO version'' ||
|| 2.0-2 || 20.04 || 2.0-2~bpo20.04.1 ||
|| 2.0-2ubuntu2 || 20.04 || 2.0-2ubuntu2~bpo20.04.1 ||
|| 2.0-2ubuntu1.21.10.3 || 20.04 || 2.0-2ubuntu1.21.10.3~bpo20.04.1 ||
|| 2.0-2ubuntu1.21.10.3 || 18.04 || 2.0-2ubuntu1.21.10.3~bpo18.04.1 ||

You '''must''' make sure that upgrades from the backported package to the next LTS+backports are covered.

This means that if you'd like to backport package X that is currently available in:
|| bionic || 18.04 || 1.2.3-1 ||
|| focal || 20.04 || 1.4.5-5 ||
|| impish || 21.10 || 2.3.4-1 ||
so that version 2.x.y is usable in bionic, you must first backport that version to focal, so that upgrades from bionic+backport to focal+backports are covered.

=== Finding a Sponsor ===

If you do not have upload rights you can [[https://wiki.ubuntu.com/SponsorshipProcess|request sponsorship]] in the same way as any other sponsored upload.

In the SRU process, a debdiff is preferred, however since the backport process typically will include a much larger change in code, you may want to propose a debdiff against the version you are backporting from instead of against the target release. Alternatively, you may want to simply link to a PPA where you have a backported build prepared; but it will be up to your sponsor to determine what format they would like you to provide the backported package for them to review and upload.

== Review ==

These are some of the things the Backports Team will look at when reviewing your proposed backports.

=== Reason for Backport ===

Backports are intended to provide new features to older releases, and as such it is generally not acceptable to request a backport to only fix bugs that could be fixed using the normal SRU process. Any exception to this would need to be approved by the Ubuntu Backporters team on a case-by-case basis, with the backporter providing reasoning for why the bug should be fixed with a backport instead of using the SRU process.

One specific exception is the case of updating an existing backport; once a package has been approved for backporting, it may be updated for normal security patches and bug fixes that are added to the package in the later Ubuntu release where it is backported from. Future monitoring of the package is the [[#Future_Maintenance_of_the_Backport|responsibility of the backporter]].

Another exception is any package that the backports team has already identified as eligible for backporting; a list of such packages is located [[#Special_Cases|at the bottom of this page]].

=== Package Availability ===

The Backports Project only backports packages from within the Ubuntu repositories. If a package is not yet available in the Ubuntu archive (perhaps because it is a new package, or because it has not yet been updated to the requested version), it is not a candidate for backporting.

=== Ensuring a Safe Upgrade Path ===

When a user upgrades from one Ubuntu release to the next, the version of any given package installed on his or her machine should be available in the Ubuntu release that user is running, assuming the package came from Ubuntu initially. For backported packages, the policy is that users must be able to upgrade from LTS to LTS. We don't care about non-LTS for these considerations.

This also includes that when somebody backports something to the second-last LTS, it first needs to be made available in the last LTS.

= Special Cases =

What follows are some cases that have been discussed specifically, to
which some of the above rules are waived.

Any addition to the section must first be discussed in the ML and agreed
by the current team members.

=== Forbidden packages ===

Categories:
 * any compilers (gcc, llvm, ...)
 * any interpreter (python, ruby, php, ...)
 * any core SSL libraries (openssl, nss, gnutls, ...) unless requested by Ubuntu Security Team

Source packages:
 * linux*
 * glibc
 * xserver-*

=== Allowed in non-LTS releases ===

==== Core development packages ====

The following packages are allowed into the backports pockets of non-LTS releases, because they are deemed useful to always be available on the latest possible release.
Care must be taken when preparing these releases as so to not break the upgrade path from one release to the other (this normally means uploading them to each suite from the newer to the older).

 * debhelper
 * devscripts
 * pbuilder
 * sbuild
 * ubuntu-dev-tools

At the moment these 5 packages are handled by the Backport Team themselves.

==== Exceptions ====

In addition to the above core development packages, other packages can be granted an exception to allow backports in non-LTS releases, on a case-by-case basis. Please contact the team if you want to request a non-LTS backport exception for a package.

At this [[https://irclogs.ubuntu.com/2023/11/29/%23ubuntu-meeting.txt|team meeting]] a non-LTS backport exception was granted to these packages:

 * cockpit
 * cockpit-machines
 * cockpit-podman

= BPO Bug Template =

Bug title: ''[BPO] packagename/1.2.3.4-1 from releasename''

{{{
[Impact]

 * Justification for backporting the new version to the stable release.

[Scope]

 * List the Ubuntu release you will backport from, and the specific package version.

 * List the Ubuntu release(s) you will backport to.

[Other Info]
 
 * Anything else you think is useful to include
}}}
Line 52: Line 183:
CategoryUbuntuTeams CategoryDocumentation CategoryCleanup CategoryProcess

Ubuntu Backports Process

This page documents the development process for the Ubuntu Backports Project, as well as some of the justification for the project’s policies.

If you’re not familiar with what backports are, or are trying to figure out how to install a package backported through the Backports Project, then our user documentation might be a good place to start.

For info about team rules and administration, see the team policies.

Responsibilities of the Backporter

You (or your sponsor) will need to prepare the backported package. This should be done with as few changes as possible to the backported package; any changes required should be explicitly stated in the changelog entry of the backported package.

Testing the Backport

You must test the backport in the Ubuntu release(s) you are requesting the backport for.

Functionality of the Backported Package

  • Each package being backported must install cleanly and without errors.
  • The software shipped in the package must also run.
    • You must detail your test process and results in the backport tracking bug.
    • In particular, make sure to run any build-time tests and autopkgtests **before** uploading.

Continued Functionality of Reverse-Dependencies

In addition to the backported package itself working, any other software that depends on the backported package must continue to run with the backported package installed, and any package that has a build-dependency on the backported package must build with the new package installed. In case that's not possible, the backported package must set appropriate package relations (Breaks, et al.) to prevent any incompatible installation (such Breaks could conceivably be part of the original package, it needs not be a backport-specific change).

Future Maintenance of the Backport

The Ubuntu Backports team is not responsible for the backported package.

The backporter is responsible for monitoring the backported package in the future for any bug reports, security patches, or additional updates that should be backported. Furthermore, the backporter is also responsible for any backport-specific bug that might be found in the backported package that wasn't present in the original version the backport was done from.

Procedure

Prepare and upload the package

The procedure is intentionally very similar to the existing SRU procedure, with minor changes specific to the purpose of the backports pocket. You should first read and understand that process, as this will page will only highlight the specific differences, and it assumes you are familiar with the SRU process.

Select the package to backport

Here are some nuiances of what to backport, from where and to where.

  • There are some packages the Ubuntu Backports Team forbids from backporting.
  • There are some packages the Ubuntu Backports Team handles themselves.
  • Backports to non-LTS are not accepted (with exceptions).
  • Backports are expected to come:
    • from the current Ubuntu stable release (preferred), or
    • from the current LTS release, targetting the prior LTS release, or
    • from the current package version in the current Ubuntu development release.

Currently decided exceptions to the above are documented at the bottom of this page, anything else needs to be discussed with the Ubuntu Backports team either in the tracking bug or in the mailing list.

Open a Bug

The first step is to open a bug in Launchpad for the backport. Open the bug against the package that you want backported, and include the prefix [BPO] in the bug subject. The bug description should include the BPO bug template, filled out with specific details for the requested backport. Make sure to subscribe the ~ubuntu-backporters team to the bug, so that we can track open requests that need the team's input.

Unlike the SRU process, which does not allow requesting a SRU to add features or functionality, the backport process does allow the need for new features or functionality. The backport bug does not need to list all fixed bugs or all the new functionalities but should highlight and/or summarize the key fixes or features or other reasons for needing to backport the package.

The bug's intention is to provide a location for any paperwork that might be required for the backport. For example, if any questions are raised during review or if any discussion is required, as well as providing a reference for anyone who might want to later see why and how a specific package was backported.

Preparing the Backported Package

As in the SRU process, you must prepare a package for the backport. Be sure to include the LP bug reference in the package changelog description; specifically, in the format "LP: #NNNNNN" (replacing NNNNNN with the number of the bug you opened for the backport).

If you have upload rights, you can then upload directly into the backports queue. Note that unlike uploading for SRU, when uploading into the backports queue, you should use the backports pocket; for example, in the changelog instead of using the release focal you should use focal-backports. Additionally, the version number you use should exactly match the version number you are backporting from, with a specific suffix added in the format ~bpoRELEASE.1, for example if backporting to release 20.04, append the suffix ~bpo20.04.1.

Version examples:

Original version

Backporting to

BPO version

2.0-2

20.04

2.0-2~bpo20.04.1

2.0-2ubuntu2

20.04

2.0-2ubuntu2~bpo20.04.1

2.0-2ubuntu1.21.10.3

20.04

2.0-2ubuntu1.21.10.3~bpo20.04.1

2.0-2ubuntu1.21.10.3

18.04

2.0-2ubuntu1.21.10.3~bpo18.04.1

You must make sure that upgrades from the backported package to the next LTS+backports are covered.

This means that if you'd like to backport package X that is currently available in:

bionic

18.04

1.2.3-1

focal

20.04

1.4.5-5

impish

21.10

2.3.4-1

so that version 2.x.y is usable in bionic, you must first backport that version to focal, so that upgrades from bionic+backport to focal+backports are covered.

Finding a Sponsor

If you do not have upload rights you can request sponsorship in the same way as any other sponsored upload.

In the SRU process, a debdiff is preferred, however since the backport process typically will include a much larger change in code, you may want to propose a debdiff against the version you are backporting from instead of against the target release. Alternatively, you may want to simply link to a PPA where you have a backported build prepared; but it will be up to your sponsor to determine what format they would like you to provide the backported package for them to review and upload.

Review

These are some of the things the Backports Team will look at when reviewing your proposed backports.

Reason for Backport

Backports are intended to provide new features to older releases, and as such it is generally not acceptable to request a backport to only fix bugs that could be fixed using the normal SRU process. Any exception to this would need to be approved by the Ubuntu Backporters team on a case-by-case basis, with the backporter providing reasoning for why the bug should be fixed with a backport instead of using the SRU process.

One specific exception is the case of updating an existing backport; once a package has been approved for backporting, it may be updated for normal security patches and bug fixes that are added to the package in the later Ubuntu release where it is backported from. Future monitoring of the package is the responsibility of the backporter.

Another exception is any package that the backports team has already identified as eligible for backporting; a list of such packages is located at the bottom of this page.

Package Availability

The Backports Project only backports packages from within the Ubuntu repositories. If a package is not yet available in the Ubuntu archive (perhaps because it is a new package, or because it has not yet been updated to the requested version), it is not a candidate for backporting.

Ensuring a Safe Upgrade Path

When a user upgrades from one Ubuntu release to the next, the version of any given package installed on his or her machine should be available in the Ubuntu release that user is running, assuming the package came from Ubuntu initially. For backported packages, the policy is that users must be able to upgrade from LTS to LTS. We don't care about non-LTS for these considerations.

This also includes that when somebody backports something to the second-last LTS, it first needs to be made available in the last LTS.

Special Cases

What follows are some cases that have been discussed specifically, to which some of the above rules are waived.

Any addition to the section must first be discussed in the ML and agreed by the current team members.

Forbidden packages

Categories:

  • any compilers (gcc, llvm, ...)
  • any interpreter (python, ruby, php, ...)
  • any core SSL libraries (openssl, nss, gnutls, ...) unless requested by Ubuntu Security Team

Source packages:

  • linux*
  • glibc
  • xserver-*

Allowed in non-LTS releases

Core development packages

The following packages are allowed into the backports pockets of non-LTS releases, because they are deemed useful to always be available on the latest possible release. Care must be taken when preparing these releases as so to not break the upgrade path from one release to the other (this normally means uploading them to each suite from the newer to the older).

  • debhelper
  • devscripts
  • pbuilder
  • sbuild
  • ubuntu-dev-tools

At the moment these 5 packages are handled by the Backport Team themselves.

Exceptions

In addition to the above core development packages, other packages can be granted an exception to allow backports in non-LTS releases, on a case-by-case basis. Please contact the team if you want to request a non-LTS backport exception for a package.

At this team meeting a non-LTS backport exception was granted to these packages:

  • cockpit
  • cockpit-machines
  • cockpit-podman

BPO Bug Template

Bug title: [BPO] packagename/1.2.3.4-1 from releasename

[Impact] 

 * Justification for backporting the new version to the stable release.

[Scope]

 * List the Ubuntu release you will backport from, and the specific package version.

 * List the Ubuntu release(s) you will backport to.

[Other Info]
 
 * Anything else you think is useful to include


CategoryProcess

UbuntuBackports (last edited 2023-12-07 14:33:47 by ddstreet)