~derf / interblag / entry / Nochmal was zum Paketsystem
dark mode

...diesmal aber auf Deutsch

Erstmal was zur Geschichte, also dazu, wie es ueberhaupt soweit kam:
Am Anfang war das $HOME.
Und das $HOME war das einzige weit und breit, weshalb es keine zu synchronisierenden Dateiversionen gab.
Mit der Zeit kamen allerdings weitere Accounts dazu, und die Bequemlichkeit verbot es, staendig Konfigurationsdateien per scp hin- und herzuschieben.
Also entstand /home 1.0: Configs wurden nach ~/etc gesymlinkt, ~/etc und ~/bin wurden mit einem DVCS getrackt und regelmaessig auf die verschiedenen Accounts verteilt.
So lief es einige Monate lang gut. Die Dateien wurden bevorzugt auf $server editiert und andernfalls schnellstmoeglich dorthin gepusht, die Merges hielten sich in Grenzen, und ich konnte ueberall dieselben Dotfiles nutzen.

Mit der Zeit fielen dann aber einige Nachteile auf:

  • Groessere Dateien lassen sich nur schlecht im Repo speichern, es sei denn, man will auf jeder Maschine (unabhaengig davon, ob man die Dateien braucht oder nicht) ein grosses Repository auschecken
  • Man kann entweder keine sensiblen Daten tracken oder die Repos nur auf "vertrauenswuerdigen" Maschinen benutzen
  • Das ganze System ist unflexibel. X-Skripte oder -Configs auf nem schnoeden Shellaccount bringen es nicht

Also wurden die beiden Repositories weiter aufgeteilt. Und da ich keine Lust hatte, dutzende male hg clone $repo / hg update einzugeben oder auf jedem Host eigene Skripte dafuer zu haben, gab es dazu direkt noch ein minimales Paketsystem inklusive Bootstrap-Skript. /home 2.0 war geboren und funktioniert jetzt seit knapp 2 Monaten.

Ein eigenes Paketsystem ist uebrigens erstaunlich einfach zu schreiben, jedenfalls wenn man es auf einem DVCS basiert. Alles was man braucht ist ein kleines Skript, welches die Repos auscheckt und auf Befehl aktualisiert/entfernt, und ein Skript, welches via symlinks dafuer sorgt, dass die Paketinhalte auch z.B. unter ~/.zshrc benutzt werden koennen. Inzwischen ist es natuerlich gewachsen, so werden z.B. aus Perlskripten mit pod automatisch manpages erstellt und ~/bin automatisch (ohne manuelles Eintragen der symlinks in einer Datei) "bevoelkert", aber das Grundprinzip ist immer noch sehr simpel.

Nebenbei kann man so natuerlich einiges ueber Paketsysteme lernen und seine Shell-skriptingkenntnisse aktuell halten, fuer den gelangweilten Nerd also durchaus empfehlenswert.

Und da ich jetzt muede bin, noch ein paar Statistiken. Genauere Infos, wie und was alles funktioniert (und was nicht) folgen demnaechst™.

  • Anzahl aller Pakete: 50
  • Anzahl der Revisionen im "core"-Paket (Paketverwaltung, bootstrap, Symlinker): 204
  • Groesstes Paket: 68MB
  • Gesamtgroesse aller ausgecheckten Pakete: 421MB