If you run Gentoo Linux for your desktop, and you happen to favor the Gnome desktop environment, you may have noticed the incredible number of packages that need to be installed in order to install the gnome ebuild. The ability to pick and choose just those components you need for a system is one of the reasons I personally haven’t switched away from Gentoo to another Linux distribution. This ebuild however, seems to me to go somewhat against the original intent of the OS.
Well, for the rest of the crowd like me, there is the gnome-light ebuild. If you don’t like the monolithic Gnome installation, you can simply choose gnome-light instead. The gnome-light ebuild has dependencies for only the minimum required packages to get a Gnome desktop up and running.
I found information from the Gentoo Gnome Project Policy that explains why they’ve separated the packages this way:
There are many subsets of Gnome that can be installed and usable. There is no way that the Gnome Herd can support them all, or any significant subset of them. We do make one such subset available: gnome-light. This subset is intended to include the programs necessary for basic desktop functionality without any additional applications. It basically includes gnome-session, gnome-panel, gnome-terminal, nautilus, metacity, and yelp. This is a session manager, a start menu/panel, a terminal program, a desktop, a file browser, a window manager, and a help browser.
I can dig that. Just want a stripped down Gnome desktop? Install the gnome-light ebuild and then install only those additional packages you like. For as many versions of their ebuilds that I can remember however, the corresponding gnome-light ebuild hasn’t come until months later. This is another area that strikes me as contrary to the overriding Gentoo philosophy and is also the case with Gnome, version 2.20.1. The gnome-light ebuild, at the time of this writing, is stuck at version 2.18.3.
Anyway, I was reading through their policy and these words discussing the big ebuild stood out to me:
The primary alternative, if you require specific Gnome programs, is to emerge them individually.
So I thought, “why not forget about the gnome-light ebuild and just install the minimum packages like they suggest?” According to the previous quote, I only need gnome-session, gnome-panel, gnome-terminal, nautilus, metacity, and yelp. I took a look at the gnome-light ebuild to see what else they’ve included and found a few more packages that looked like someone probably had some additional foresight in including into the ebuild. From there, I just modified my /etc/portage/packages.keywords to include:
# gnome 2.20.1 dependencies
gnome-base/gnome-panel ~x86
gnome-base/gnome-desktop ~x86
gnome-base/gnome-session ~x86
gnome-base/gnome-vfs ~x86
gnome-base/control-center ~x86
gnome-base/gconf ~x86
gnome-base/nautilus ~x86
x11-wm/metacity ~x86
gnome-extra/bug-buddy ~x86 # see edit below
# additional packages for dependencies from previous packages
x11-libs/gtk+ ~x86
x11-libs/pango ~x86
After that, I can simply emerge the main packages and forget about the heretofore unseen gnome-light-2.20.1 ebuild. From there, I can emerge any additional packages that I need/want.
emerge -auDv gnome-session gnome-desktop gnome-panel gnome-vfs, gconf control-center metacity
I added the -u and -D because I want to pull in all dependencies that these new packages require, but don’t really want the dependencies added to the world package list like I do with the other main packages. One day, somewhere down the road, when I check for new packages, there will be a big list of new Gnome updates, e.g., gnome-base/gnome-session-2.22.0. If, at that time, I don’t want to go ahead and install them all, I can simply remove or comment out the gnome 2.20 entries from the package.keywords file since by that time, the 2.20 versions will probably have been marked stable.
A quick note about stable vs unstable packages: Rémi Cardona notes here that you shouldn’t try to mix and match unstable and stable packages. Someone mentioned in the comments however, that it ought to work just fine as long as all the dependencies are met. I figure that if something doesn’t work, I can unmask and emerge additional packages to support the package that is unstable. So far, I haven’t had any problems. I’ll post an update if there is something not working for me.
It does seem like a roundabout way get the result I want. The initial work is mitigated by the lesser amount of looking for gnome-light ebuilds I’ll need to do in the future. The packages will be listed in updates with emerge -pv world from now on. I’m not entirely sure that the process would be much better/simpler on another Linux Distribution. Perhaps someone can comment on what it is like to install a minimal Gnome desktop on Ubuntu, Debian, Redhat, or SuSE Linux.
Edit: Seems that gnome-extra/bug-buddy is needed to bring in a libgnomebreakpad.so I’m not sure why this ebuild isn’t brought in as a dependency, but after emerging that, I haven’t run into any other issues.
Update: An ebuild for gnome-light-2.20.1 has been added to portage. This all still applies to future Gnome versions of course.
This gave me a great idea, I’m going to create my own gnome ebuild with only the packages I need.