Nach ca. 20(!) Jahren debian sid, werde ich wohl auf gentoo wechseln.

Nachdem ich einige Zeit (erfolglos) versucht habe systemd los zu werden, unter anderem durch einen mix mit devuan packages, hatte ich neulich Probleme mit pulseaudio. Dabei ist mir dann endgültig klar geworden, wieviel Freiheit man durch eine “binary distribution” verliert: Man kann Komponenten (zb pulseaudio) nicht einfach herausnehmen, weil Millionen andere packages davon abhängen. Im Grunde muss man die Architektur Entscheidungen des “Anbieters” mitmachen, ob es einem gefällt oder nicht (systemd)…

Danach habe ich mir in verschiedenen vm’s (docker und virtualbox) gentoo angeschaut und mich auf Anhieb verliebt: Das portage “make world” Konzept kommt einem als Programmierer und notorischem “software Bastler” extrem entgegen, erinnert an BSD und Slackware (dass man damals mit nem hex/disk editor booten musste und dann von 20 Disketten installiert hat)…

Back to the roots!

portage ist im Grunde ein Werkzeug, mit dem man wie mit nem Lego- oder Ikea Baukasten automatisiert seine eigene, neue Distribution generiert, eine “Meta Distribution” sozusagen. (Glaube, google benutzt es zB zum bauen von Chrome OS…) Dadurch beschäftigt man sich (wieder) viel mehr mit der software, die man installiert. Kein “Hmm, ich brauche Anwendung xy. Oh, xy braucht 20 andere packete (die man uU noch nie gehört hat), kA, ich kanns eh nicht ändern, also “apt-get install xy” …”. Bei portage guckt man sich die “use flags” genauer an, findet heraus, was die tun, recherchiert und guckt in die sourcen… Klar, man könnte das im Prinzip auch mit .debs machen, aber es ist sehr viel umständlicher und beim nächsten upstream update muss man alles nochmal machen, von den .debs die davon abhängen ganz zu schweigen… Aus Entwickler Sicht: “its all about tools!”

Als erstes Ergebniss habe ich ein eigenes overlay gebastelt, dass man zB wie folgt ins (gentoo) System bekommt:

eselect repository add mroh git https://gitlab.com/mroh69/gentoo-overlay.git
  • mit layman:
layman -f -o https://www.rohleder.de/~mike/overlays.xml -a mroh



Wenn ihr in ~amd64 in dieses Problem rennen solltet, hilft dies in /etc/portage/patches/app-portage/layman/676074.patch :

--- a/layman/argsparser.py	2019-03-06 15:08:03.000000000 +0100
+++ b/layman/argsparser.py	2019-03-09 15:31:58.296182966 +0100
@@ -364,6 +364,8 @@
                 protocol_filter = self.options[key]
             if self.config.has_option('MAIN', 'protocol_filter'):
                 protocol_filter = self.config.get('MAIN', 'protocol_filter')
+                if  isinstance(protocol_filter, str) and protocol_filter=='[]' :
+                  protocol_filter= []
             if protocol_filter:
                 if not isinstance(protocol_filter, list):
                     protocol_filter = [e.strip() for e in protocol_filter.split(',')]