i like gentoo's package deprecation process
Gentoo’s process for removing packages from the main gentoo package repository is designed to make me aware of it and give me time to react, and I really appreciate that.
So when a package gets dropped from the gentoo repo, this happens in a few steps.
First, the package is masked by a package.mask
. This does two things:
- It prevents any new users from installing the package (this can be overridden, but its a conscious configuration change to do so).
- It alerts anyone with the package already installed that they have a masked package installed, along with a comment as to why it’s masked.
Here’s an example. I had dev-util/catalyst-3.0.22-r1
installed, which is masked:
!!! The following installed packages are masked:
- dev-util/catalyst-3.0.22-r1::gentoo (masked by: package.mask)
/var/db/repos/gentoo/profiles/package.mask:
# Andreas K. Hüttel <dilfridge@gentoo.org> (2023-07-12)
# The catalyst-3 branch is outdated and not used by Gentoo
# Release Engineering anymore. Please either use git master
# (9999) as all Release Engineering build machines or wait
# for catalyst-4. Questions or bug reports about catalyst-3
# may or may not lead to useful results.
I’ve got info in the comment on why it’s masked and what I might want to do in response. In this case I just removed the package because I don’t actually use catalyst. In other cases I might decide to copy the package into my own personal repo and continue maintaining it there, accepting the maintainership burden for myself. Or I need to find a way to migrate to an alternative.
Catalyst isn’t really an example of what a package removal from the main repo looks like though, since it’s just that version which is masked. Here’s another one which is a full removal:
- media-gfx/gmic-3.2.6::gentoo (masked by: package.mask)
/var/db/repos/gentoo/profiles/package.mask:
# Marek Szuba <marecki@gentoo.org> (2023-10-26)
# Upstream uses a massive home-made Makefile which has since the beginning
# required massive amounts of patching to make it behave reasonably
# (as well as to fix the problems which ostensibly led upstream to
# abandoning CMake, and which they immediately re-introduced in their NIH
# solution) and which if anything have only got worse since then. One,
# optional, reverse dependency in the tree.
# Removal on 2023-11-26. Bug #916289.
Maintainer doesn’t want to keep patching a difficult to work with build system. Fair enough.
Note Removal on 2023-11-26
, one month after the mask date. If I run any package manager operations between the mask date and one month after the mask date, I’ll get this comment telling me the package is masked. After a month though, the package will get removed from tree along with the package mask (no need to mask a package which isn’t there anymore). So I won’t get the helpful message if I happen to go more than a month between system updates. Which I think is a fairly generous window.
Anyways this contrasts to me with my experience with packages getting removed from the repos with Arch Linux.
On Arch, packages just kinda vanish from the repos it seems like. They just stop getting updates and I don’t notice, until I try to install them on another arch machine and realize they’re gone. Or someone re-adds them to the AUR and suddenly I’m updating what used to be an official package from AUR when I run an AUR update (which is how I’ve learned about a large number of package removals).
I think that’s kinda the usual story too across other distributions. I’m not really sure what happens to packages that get dropped during major debian upgrade though to be honest, but I don’t think I’ve ever been notified about a package that used to be in the repos and isn’t anymore.
But yeah, I like that Gentoo has a system for telling me about these things and giving me time to decide what I want to do about it.