6 ms·
I like gentoo's package deprecation process
- IntelMiner 3y agoI sometimes half-joke that Gentoo is the only Linux distro I can "tolerate" using. Mostly as I've always been the affectionate butt of jokes from other Linux using friends After using Gentoo for about 15 years at this point every time I try to use another distro it just feels deeply unintuitive and backward. Some of the examples I often cite: If I want a package in Gentoo, I just run "emerge -av [package]" if need be I can alter its USE flags under /etc/portage/package.use/[package-name] and get exactly the features I want and need, and nothing else. If that package doesn't exist, Gentoo's portage has a system where it suggests "similar" sounding packages. Like if you try to emerge "firebox" instead of "firefox" it will offer it as a correction If I want a package in Debian/Ubuntu conversely, I type "apt-get -y install [package]" and sometimes find that oops that's not the package I want, or that package doesn't exist under that name! Then I try searching for that package via aptitude, getting a litany of "libpackage3/5/7/9" or libpackage-something-something-dev libpackage-something-something-doc libpackage-something-something-headers and so on. It's all just very messy. There's also rarely any description as to what the package is without googling it beforehand For many years I used Chromebooks as my portable Linux PC of choice. My rationale at the time being that Google mandated no "binary blobs" in the kernel and that all hardware support must eventually land in the upstream kernel. Along with hiring the entire Coreboot team these made extremely attractive (albeit cheap and disposable) laptops Some of the hardware support (keyboard backlighting, trackpad etc) weren't yet in the mainline kernel. On a binary distro I would have to source out (or build my own) patched kernel manually to add this hardware support Gentoo due to being source based provides an entire mechanism for just this, under /etc/portage/patches This feature isn't exclusive to the kernel either. Any package you want on a Gentoo system can include any number of custom patches you desire as a user. I've used this feature additionally for enabling things like Intel ARC GPU hardware encoding support under ffmpeg while it was still in development Gentoo's biggest draw for me however is its philosophy and dedication to "choice". Not choice in the traditional sense of "we have lots of desktop environments to pick from". Choice is etched into Gentoo's very bones by its nature as a source based distribution. When briefly setting up a temporary NAS at a friends house I opted to simply use Fedora, thinking it would be easier than spinning up a full install of Gentoo for such a short-lived purpose Installing Fedora and Samba I grabbed my smb.conf from home and used it as a template to set up the NAS. After starting it up I found no success in writing to the drives. I had correctly configured them in /etc/fstab, added the appropriate users and on a whim even tried chmodding the mount point just to rule that out After a lot of googling it seemed that Fedora's SELinux was the culprit. I'm not interested in debating the merits of its inclusion or not, indeed I agree SELinux is a powerful security toolkit. I bring it up purely to highlight Gentoo's difference in ethos and why I'm personally drawn to it. Gentoo never "does" anything for you on its own. It does not try to make any assumptions or guess your intentions as a user. I liken Gentoo to being given a bucket of Lego bricks. You have a vision in your head for what you want your system to do, and how to do it. So you build it to those specifications brick by brick.
- richardwhiuk 3y ago> If that package doesn't exist, Gentoo's portage has a system where it suggests "similar" sounding packages. Like if you try to emerge "firebox" instead of "firefox" it will offer it as a correction This exists in Ubuntu/Debian - if you type `firebox` you literally get: $ firebox Command 'firebox' not found, did you mean: command 'firefox' from deb firefox (1:1snap1-0ubuntu2) Try: sudo apt install <deb name>
- IntelMiner 3y agoIs that if you try to run the command, or install the package?
- lp0_on_fire 3y agoEven that is really a function of the shell and not the distribution itself.
- Given_47 3y ago> Gentoo's biggest draw for me however is its philosophy and dedication to "choice". Same. I remember when I was going through the install handbook its three stated "design principals [sic]" of openness, choice, and power [0] spoke to me. > I liken Gentoo to being given a bucket of Lego bricks. I recall seeing some comment (might've been ascribed to Daniel Robbins, not sure) about how "Gentoo was created to be LFS for humans." [0]: https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/About https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Abo...
- creer 3y agoThat is nice and often gives more than one month's notice. What is really not nice is the obession with pruning the versions for each package. For a specific package, there is no serious issue with keeping several old versions hanging around in the package tree. By default the package manager understands that and the user doesn't see them. But where there is some compatibility or build issue, the user would have the option of masking the latest and keep going on an earlier version: it would still build, usually with no extra effort. It would rebuild fast if you have a build cache. You could downgrade easily if you discover an issue weeks later. But no: most maintainers where that matters delete the previous version as soon as the new one is half in. Not a helpful obsession.
- noobermin 3y agoThis is what made me leave gentoo, I would have to constantly remove or rebuild things that just worked fine and had no issues. I really didn't like the constant churn with gentoo so I left after using it since 2009.
- overboard2 3y agoAre you using Debian now?
- genewitch 3y agoi've been maintaining and deploying gentoo for about 20 years now, and when i have a machine that is working, where there's no chance that i or anyone else will need to edit the software, i just fail2ban and whitelist IPs that can SSH in. There's no reason for me to keep a CIFS server constantly updated if it's backnet only, for example. This is especially true with machines that run things on GPUs. p.s. i am maybe well known in some gentoo circles as the person who updates machines after 12-18 months. So i'll hit every bug and gotcha over a weekend that everyone else dealt with in the past year. This occurs mostly on desktop gentoo, stuff like pipewire and the DE stack. Occasionally python will threaten to brick a machine, but tinderbox et al have gotten me out of those jams. With debian/ubuntu, once i get something running, that's what's on that machine until i decommission the machine or the stack running on it. I don't have the time or inclination to deal with things like that. That's what containers and VMs are for.
- jchw 3y agoYeah, this is nice. I bet something like this could easily be brought to systems like Arch/Pacman and NixOS/Nix if someone wanted to champion coming up with an implementation for those systems. (Actually, this is definitely doable on Nix, since there are mechanisms like "insecure" packages, but 1. I dunno if there's any for this situation (block package without explicit confirmation because it's not maintained) 2. I don't think there's any policy for this, but it would be nice if there was at least a procedure for people who wanted this kind of deprecation. It's also a bit different on Nix since it is not a rolling release distribution.)
- nmstoker 3y agoCompletely agree. This seems a really nice approach in Gentoo. Am a big fan of Arch but I was immediately thinking this would be handy there - I'm pleased with the engagement/responsibility that Arch encourages but this kind of thing is always catching me out and I pay a fair amount of attention to my installations!
- VTimofeenko 3y agoNixOS recently introduced "problem" infrastructure to deal with such problems more gracefully and explicitly: https://github.com/NixOS/rfcs/blob/master/rfcs/0127-issues-warnings.md https://github.com/NixOS/rfcs/blob/master/rfcs/0127-issues-w...
- herpderperator 3y agoGentoo was my first proper Linux distro that I started using over a decade ago. As the time has gone by and I ended up using other distros for other purposes, I got exposed to the ways the other distros do things... which I often found to be unintuitive or confusing compared to Gentoo. It made realised just how lucky I was that I started off with a distro that pays such close attention to detail to so many things - like the one in the post. Gentoo was definitely one of the main reasons I found so much joy in Linux and resulted in the career that I have today.
- Xiol32 3y agoA comment I could have written word for word. Not hyperbole to say that Gentoo set the course of my life. I don't use it anymore, but I'll never forget my time with it. Long may it continue.
- NotYourLawyer 3y agoWhat do you use now? Why’d you change?
- Xiol32 3y agoFedora. I use Linux for work and have kids, don't have the luxury to tinker as much as I used to.
- jonhohle 3y agoYou may or may not like FreeBSD. A lot of the packaging concepts in Gentoo came from ports (hence the name portage). FreeBSD has binary or source packages that can be mixed, is stable, and is slower moving than Linux (in a good way).
- Zetobal 3y agoMy old Athlon could write books about failed compilations and 13 year old me fudging up every config file.
- qwertox 3y agoI agree, this is great. How does Debian do it? One thing I liked about Ubuntu was how they handled the Python 2 -> Python 3 transition after version 2 was officially no longer supported. `python` was then a non-existent command which would fail while python3 continued to work. This way one would not accidentally run a Python 2 script which kind of worked with Python 3 but then failed under very specific circumstances, possibly even after running for a couple of days. Not even letting that script start in the first place directly after the distro upgrade was the correct thing to do.
- bduffany 3y agoThere's a pretty popular `python-is-python3` package in Ubuntu which aliases `python` to `python3`. I used to install that in my dev environment setup scripts, but have since stopped using it for the reasons you mentioned. I've found it best to think of Python 2 and 3 as totally separate languages, so I consider it a good thing that the binary name python3 is unambiguous in all contexts.
- yjftsjthsd-h 3y agoIt makes more sense to support that as an opt-in rather than making the default, I would think
- pzmarzly 3y agoAFAIK the packages in Debian/Ubuntu world should only be removed on major OS release (Debian 9 -> 10, Ubuntu 22.04 -> 22.10, etc). I think that if you upgrade the OS by just changing repo URLs in apt config, the old packages will stay installed - so it will be just like in Arch situation described by the author. For Ubuntu, their do-release-upgrade script asks you to remove packages that didn't make it to next release. https://askubuntu.com/questions/1392819/do-release-upgrade-how-to-continue-after-choosing-d-for-remove-obsolete-package https://askubuntu.com/questions/1392819/do-release-upgrade-h... EDIT: you can find obsolete packages on your system using apt or aptitude https://askubuntu.com/questions/98223/how-do-i-get-a-list-of-obsolete-packages https://askubuntu.com/questions/98223/how-do-i-get-a-list-of...
- 3y ago
- creer 3y agoAlso notable is that such a deprecation notice is not fatal: usually one maintainer or group of maintainers have decided - but that's based on their own view of needs vs headache. A user can easily (often) continue maintaining a local copy - just for their local habit. First just with the current version of the software. And nothing prevents them from taking over as public maintainer for Gentoo. Either as a mainstream package or in one of the many unofficial repositories. This is all helpful as package system features.
- lifeisstillgood 3y agoUltimately all sets of packages are a consensus - either a company says "we only use these versions of these languages and libraries" or it's a whole community. (This honestly beats the laissez faire approach which always blows up somewhere) It's something companies shoukd consider doing internally as well - this API is supported at this version etc. It's easier to do explicitly than implicitly (large companies usually have internal SLAs and actual written docs) I think the point I am making is good deprecation is part of good contracts.
- LtWorf 3y agoDevelopers: "I need this js library that will change API 18 times this month"
- NotYourLawyer 3y ago> 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. A month is generous? I mean maybe for my desktop machine. Certainly not for some headless file server.
- wtallis 3y agoIf you're going more than a month without updating a server, then you should allow for the possibililty of a bit of downtime (or delay to read the docs) when you do get around to updating it. And since it wasn't clear in the article: removing a package from the portage repo doesn't cause the package to be automatically uninstalled from your system, and it doesn't cause the package to be ignored during dependency resolution.
- NotYourLawyer 3y agoMore than a month without an interactive login, sure.
- theamk 3y ago> 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. Gentoo was my first Linux distro and it was cool.. It definitely taught me a lot about app building. But the expectation that every machine needs to be continuously updated at least once per month is what caused me to go to Debian. You have that server which just works and you haven't logged in there for three months.. or a laptop which you only use for travel? Prepare for broken automated updates and careful package rebuilding in just the right order.
- o11c 3y agoNot just deprecation - there is so much about Gentoo's packaging tooling that is very nice. It's a pity that other distros refuse to learn from it since they think its ideas must be limited to source-only distribution.
- randyrand 3y agoI like how Dart does it with pub.dev - packages are forever - they cannot be deleted * with rare exception ofc
- JohnFen 3y agoI do like that! > 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). Does this mean that the package manager will just remove the package on its own automatically? If so, I take great exception to that. Removing packages like that should always involve overt user interaction.
- light_hue_1 3y agoNo. It will not remove your local copy. But you can request it to do so.
- ericyd 3y agoDidn't even have to click the link, title said it all. I love brevity
- throwaway1194 3y ago> On Arch, packages just kinda vanish from the repos it seems like. Arch isn't designed to hold your hand, it encourages users to do their own research and due diligence, it expects responsibility from their users. Arch Linux is nothing more than pacman and makepkg, both are designed to give you bare-bones packaging capabilities, how you use those tools and manage your system is up to you. pacman has the -Qm option which will show you packages that are no longer in the database, so you very much can do the same, i.e. plan ahead. A major difference of portage (in contrast of pacman) is that portage has a lot more abstractions (USE flags, EAPI, news, etc) but those come at the cost of complexity.
- aleden 3y agoYeah and key here is that there's nothing to stop you from cloning the repo for a package, checking out an older revision, and running makepkg (granted, it's not guaranteed to work but...)
- throwaway1194 3y agoExactly.