Detecting Missed Updates
I have a little gem I figured I’d share with the masses. I just ran through updating my Gentoo ~amd64 system (many many updates in the last 6 months) and found that there were still packages that had not been updated. I threw together a quick shell command to not only find all packages out of date but update them as well:
eix | grep '\[U' | perl -e '@p=<>;map{s/\[U\](.*)\n//;$i.=$1;}@p;print $i;’ | xargs emerge -uD
So if you use the eix tool to greatly speedup package lookups, it’s output can be utilized to find packages that were not picked up by a recent emerge -uD world. The perl script most definately could be golfed further but I’d like to keep things readable.
Growing Frustration
I’ve been using Gentoo Linux for several years now and have been growing increasingly frustrated. There has been a steady decline in quality assurance. The core utils team has repeatedly made changes that cause widespread breakages without warning. Many of the ebuilds languish without active maintainers. The Bugzilla database is growing rapidly out of control. There seems to be anamosity amongst the developers as they have been struggling to keep valuable developers (so devrel has failed horribly). Most importantly, the council has decided they don’t want to following the rules set forth for them (lack of attendence at meetings requires an election). The only really promising Gentoo project is the Sunrise project (users submit ebuilds), but even this comes off as an attempt to solve the problem of a lack of developers.
The problems go on and on, most of which stem from the fact that the organization has greatly strayed from it’s original purpose: source compilable meta-distribution. There has been a large focus on the management and increasingly less focus on Getting Things Done. This is usually what causes the death of a project.
Every so often, I venture into DistroWatch to see what has been popular. Most of the time, I don’t see any promise amongst the distributions to provide the same quality and features that I fell in love with when I found Gentoo. Almost every visit meets with a decrease in Gentoo popularity. Recently I have been watching the rise of a distro called Sabayon. It’s based on Gentoo and seemed to have promise.
Upon further inspection, Sabayon is nothing more than a pre-packaged Gentoo overlay. That’s right, you can check out the overlay from a Gentoo install and quickly change to a Sabayon install. This basically does not impress me. So I continue the search.
Arch looks promising but their application tree is very sparse. I used to use Slackware, and would happily switch back if there was something like an up-to-date repository for packages. The “current” repository is nice but the lack of dependencies with the package maintainer could make things very tricky.
I refuse to use a Debian or RedHat based distribution unless there is something very compelling, like Portage and eutils, to draw my attention away. So if anyone out there has an suggestions, feel free to share.
Removing The Cruft
So after using Gentoo for some 5 years now, I’ve learned there are many ways to manage the cruft on my system. I usually use eix and sift through what it shows as installed. When I find something that I don’t think is being used anymore, I check it with equery depends. If everything looked fine, I removed the package and checked the system by using revdep-rebuild.
There is an option (-i IIRC) that will show all installed multi-slotted packages. That is, if you have 6 versions of the kernel installed, it will show you them. This is a pain in the ass if you manage 1 system for 4 years as I have. I have not done in install in a very long time, but instead update my system on a near monthly basis using Gentoo’s Portage system. The downside is it has the tendancy to leave old unused crap on your system.
Then I discovered a tool that was handy at detecting old packages, even old slotted/unused packages, and removed them. Udept is a rather satisfying tool to stumble-upon. It is very adept at identifying unused junk and cleaning your system of it. It has options to purge the system, perform a recursive dependency check, prune your world file, and much more. While I’m not entirely sure I want to maintain a slim world file, the rest of the tool’s capabilities are inferior to none. Granted, it collects much of the capability that is already present with the gentoolkit, but those tools are loosely banded. Udept neatly ties all of that up into one sweet package that can help you keep the crap off your riced-out desktop or server. Best of all, it’s in portage.
After running it for the first time, it found about 3 dozen packages that I agreed needed to be removed. Give it a whirl, and enjoy never having to install your OS again.