Knowing your system – Part 6 – Source-based distributions: Discovering Exherbo

The limits of Gentoo

As I said in part 3 of the “knowing your system” saga, I really started to dig into my system when I used Gentoo. I quickly spotted the limits of portage, its default package manager and switched to paludis.

It really is easy to mess up your python installation, especially when you’re not a python developer and you don’t care about it. Of course there are tools to help you, such as python-updater, but it won’t be of great help if you’re not in a basic “breakage because of python update” case. Because of portage being written in python, you end up with an unmaintainable system which is painful.

A pretty good example of this is when I tried install Gentoo on my Playstation 3. At this time, the powerpc stage was kinda old. During the base system installation and update, you ended with the linux headers version being incompatible with your python installation, and portage was unusable. After 3 attempts without success, I tried once starting by installing paludis, and then doing everything with it. It worked like a charm.

Portage is not the only limitation of Gentoo. Its workflow is kinda insane. First of all, Gentoo aims to get every piece of software packaged in a same repository, external overlays being there only for testing purpose before merging. You end up with tons of packages being available on your machine, 95% of them won’t ever interest you. You could say it’s cool to get everything available without needing internet access to retrieve them, but you’ll still have to download the source tarballs so it’s pointless, it just make dependencies resolution slower.

Another problem is contribution. To contribute to Gentoo, you’ll open a bug on their bugzilla with a patch attached (I’m fine with this first step, the next ones are awful). When a developer or a proxy maintainer sees it, he applies it locally and push it to the centralised CVS server (which you sync using rsync on client side…). There is a HUGE lack of consistency in this process:

  • As a simple contributor, you won’t ever be the author of the real commit, at most you’ll be mentioned in the commit message
  • You don’t use the same tool to pull changes in that the one developer use to push them.

Exherbo is awesome

After having used paludis on Gentoo for one year or so, I decided to involve myself in its community. I started to send a couple of patches for my purpose, and to help beginners to deal with it. I then heard of another bigger project they were launching: a brand new source-based distribution, a kind of Gentoo rewritten from scratch in a more modern, modular, clean and strict way.

While I was still using Gentoo, I started to install exherbo in a chroot, to give it a try. First thing I really enjoyed was that everything is split into several repositories. If I do not have any C# application installed, the repository containing the mono stuff won’t be installed and those packages won’t be available on my system. If I finally decide to install mono, I will automatically be suggested to install the mono repository, and running cave resolve -x1 repository/mono will do all the stuff for you. Everything is managed by git both on the developer and “user” side. Being an exherbo “user” is kinda special, since every user is considered as a developer by the community.

Contributing to exherbo is really easy and smooth, I’ll explain my contribution workflow next week.

As exherbo is a “new” distribution, not every package is available, so you’ll probably end up creating your own repository to package your software. Once you get enough packages in it and you want to share it with the community, you just have to submit it, people will review it and tell you how you can make it better. It will then be added to the list of available repositories so that people will be guided to it when they try to install software you’ll have packaged. For example, at Clever Cloud, we use openstack for now, and we had to package it and its dependencies. Everything is available in our repository.

One more thing: exherbo policy is to be as vanilla as possible. Every patch used in packages must contain the upstream status of it, since they all have to be submitted. We want to maintain as few patches as possible.

My exherbo repository

Clever Cloud exherbo repository


À lire également

Clever Cloud and Vates: Two French champions join forces to create comprehensive and autonomous cloud solutions

Nantes and Grenoble, May 23, 2024 - Clever Cloud and Vates are announcing today a partnership aimed at strengthening the strategic autonomy of the cloud in France and Europe.

The Values and Policies of Personal Information Chair at Institut Mines-Télécom welcomes Clever Cloud among its sponsors

The Institut Mines-Télécom's Values and Policies of Personal Information (VP-IP) Chair conducts research into the issues surrounding the processing of personal data, digital identities and sovereignty, in a context of European regulation.

Clever Cloud launches “UP”, a generous program dedicated to startups at VivaTech

Nantes, France - May 20, 2024 - Clever Cloud, French creator of deployment and hosting solutions in PaaS (Platform as a Service) mode, announces the launch of its new support program for startups, named “UP”. The initiative will be unveiled this Wednesday at the flagship event for technological innovation, VivaTech, in Paris.