Remove a package¶
The Archive Admin team handles removals of both source and binary packages.
As per the corresponding contributor guide How to request a package removal, requests to remove a package are submitted in the form of bugs on Launchpad.
You may need to remove a package completely, or only remove either a source or a binary.
Source removals shall always have a bug associated. Binary package removals do not strictly require a bug report, but they are the way to contact the Archive Administrators therefore likely one exists.
Either way, if a bug exists it shall be referenced in the removal comment, which helps a lot for users tracking it down in the publishing history which will point them to the related discussion and action.
Why to remove packages¶
Justification for removal¶
If we are removing a package from Ubuntu that is still in Debian unstable
,
some sort of justification for the removal is needed. A non-comprehensive list
of sufficient justifications:
The package FTBFS and is blocking some transitions (either in
proposed-migration
or in NBS removal).The package FTBFS or fails autopkgtests and has been removed from Debian
testing
.Upstream has fast-moving development and it does not make sense to ship the package in a stable Ubuntu release.
If not removing, but keeping it in the Archive – then the driving team should ensure they can maintain it despite changing so fast. For example, an agreed SRU exception.
The Security Team has flagged the package as unsupportable. In some cases I have asked the Security Team to also raise bugs on these packages in Debian as well before removing.
Removals of binary packages¶
When a binary package ceases to be built by its source package, it must be manually removed by an Archive Admin. These to-be-removed packages show up in several places.
If
proposed-migration
can work out how to move the new source package to the-release
pocket without making any binary packages uninstallable, then they show up on the NBS removal list. This is the easiest case, as the top of the page gives a command that can be used to remove all binaries that are safe to remove (no remaining reverse-dependencies).If the NBS package is in the
-proposed
pocket, it will be reported onupdate_excuses
asold binaries
. These are unfortunately not reported in their own report, but have to be found when someone happens to look at the correspondingupdate_excuses
entry.If the packages are NBS because support for a given architecture has been dropped entirely by the source package, these instead appear in
update_excuses
as amissing build
. These require additional discernment before removal, since a missing build could also mean the package is supposed to be built on the architecture but failed to do so (or is still building).In some cases a binary may be dropped on a particular architecture, but the package manages to migrate from
-proposed
to the-release
pocket anyway. In this case, they don’t show up on the NBS list because that binary package is not NBS on all architectures. Instead you have to check the uninstallable report and out-of-date package report for the corresponding series.
Source package removals via Debian¶
Source packages that have been removed from Debian do not need a removal request
bug. They can be periodically removed using the process-removals
tool from
ubuntu-archive-tools
:
$ ./process-removals
This tool interactively processes the entire pending queue, and asks for
confirmation for each removal. You can run this tool whenever you receive a
request to remove a package from the devel series due to it being removed from
unstable
.
It is important, when removing packages, not to break consistency of the Archive
when they still have reverse-depends
. However, it is also important to not let
these packages linger forever. Therefore, when there are reverse-dependencies
(particularly Ubuntu-specific ones), file a bug report to give Ubuntu
developers time to respond.
Recommends should not block removals of packages. Seed references should be referred to the maintainers of the relevant flavor before removal.
Some packages removed from Debian do need to be kept, e.g. firefox
, since we
did not do the firefox
-> iceweasel
renaming.
Source removals of Ubuntu-specific packages¶
During the heyday of MOTU, Ubuntu acquired many Ubuntu-specific packages that were uploaded by an Ubuntu developer who is no longer active. Over time, many of these packages have bit-rotted; in particular, by not having their packaging updated to make sure they continue to be buildable, or not being ported to newer versions of library dependencies. We are generally content to let these packages drift until they become blockers, either by Failing to Build from Source and blocking transitions, or depending on packages that have been removed from Debian.
Before removing an Ubuntu-specific package, even if it is “obviously” abandoned, please file a bug report against the package with the rationale, and where there is an obvious historic “owner” of the package subscribe them to the bug if they don’t already have a bug subscription to the package (they usually don’t) and give them time to remedy the situation if they still care about the package.
Such bugs should be given a deadline of the end of the current release cycle, to ensure NBS gets cleaned up before a stable release.
Summarized flow of a removal consideration¶
Due to all these rules, when handling removal requests, Archive Administrators usually follow this flow:
If already removed from Debian entirely -> we should probably remove it too (if the same reasons apply)
If removed from Debian testing, but no other issue is known -> remove only if it blocks a transition or such in Ubuntu
If it wasn’t in Debian:
If it works fine, and all it is violating is “being old” -> keep it.
If it works fine, and the request is from the owner -> consider removing it.
If it works fine, and the request is from upstream -> consider removing it.
If it works fine, but it’s an FTBFS and gets no attention and thereby is hard to maintain once released -> file a bug, add a deadline, and if it’s not acted upon, remove it.
If it is generally broken and unusable -> file a bug, add a deadline, and if not acted upon, remove it.
If unsure about any of these, bring it to the regular Archive Admin meeting or channel for discussion and decision.
How to remove a package¶
To remove a package entirely from the Archive, use the remove-package
client-side tool.
Remove a source package¶
By default, this removes both the named source and any binaries:
$ ./remove-package -m "LP: #12345 - reason for removal" konserve
The tool tells you what it’s going to do, and asks for confirmation before doing it, so it’s reasonably safe to get the wrong options and say N.
Remove only a binary package¶
To remove only a binary, use the -b
flag with the remove-package
tool. For
example:
$ ./remove-package -m "LP: #12345 - reason for removal" -b konserve -a riscv64
Alternative demote-to-proposed¶
There is a demote-to-proposed
command which can be used to move a package to
devel-proposed
instead of removing it entirely. We rarely use this command,
except if the package has an Ubuntu delta that is important to preserve in the
event that a fix becomes available in Debian. Otherwise, if a package is buggy
enough to be removed from the -release
pocket, it is better to remove it
entirely and wait for Debian to fix it rather than land it in -proposed
where
it takes attention of our +1 maintenance folks
and the Release Team.
Not removing it would continue to potentially contaminate -proposed
and on
the other hand we have plenty of ways nowadays to get access to the former
delta again.
Source removals of SRU upload from -proposed
¶
The SRU Pending Report
has a section at the bottom suggesting removals from -proposed
for several
different reasons.
-updates
is equal or higher than -proposed
¶
This is the normal sequence of events that lead to this situation: An SRU is
verified, released, and the package has to also be removed from -proposed
.
The suggested command-line in the report is correct, and can be run.
When can it be run? Only when everything has been published, i.e., avoid the Launchpad publishing lag. Rule of thumb: give it a few days.
Example:
remove-package -y -m "moved to -updates" -s noble-proposed -e \
4.18.4-1ubuntu0.1 xfce4-panel
-release
is equal or higher than -proposed
¶
Haven’t seen this case before. I suspect it can happen at release opening. To be determined.
Failed verification for more than 10 days¶
If an SRU has the verification-failed
tag, it is expected to be corrected
within 10 days, either by a new upload, or something else that fixes the
problem.
If that does not happen, the package is eligible for removal from -proposed
.
The sru-remove
package, when given the “failed” reason, will automatically
add a comment to the LP bug with the reason for removal, and mention this “10
days” period.
Example:
sru-remove --reason=failed -s oracular -p samba 2092308
No test plan verification done in more then 105 days¶
If an upload has been sitting in -proposed
and not verified for 105 days or
more, it’s also eligible for removal. That is the ‘--reason=ancient
’ parameter
(which is the assumed default if not given), and it will also add the
appropriate explanation to the bug behind the SRU.
Example:
sru-remove --reason=ancient -s focal -p libxmlb 1988440
Revert a package to a previous version¶
A special case of package removals is where we want to remove a package and replace it with a previous version. This most commonly occurs in the development series.
For example, if a transition is almost complete we may receive a request to
revert a new upload that accidentally entangles the transition. To do this, we
need to remove the existing package with remove-package
, then copy the
previous package forwards with:
copy-package --force-same-destination --auto-approve --version=$VERSION_TO_RESTORE --include-binaries --from-suite=$SUITE --to-suite=$SUITE $PKG