Die perfekte Lösung -- wieder einmal.

vom 18. November 2011

Inception!!!

Ich bin stets bemüht (wie man so schön sagt) eine für mich akzeptable Lösung zu finden. Was das Editieren von Text angeht, bin ich schon mindestens ein Jahrzehnt auf der Suche nach der Lösung. Ich hätte ja gerne ein Vim, programmiert in Lisp, mit nahtloser GUI-Integration, dem Bundle-Konzept und den File-Explorer von Textmate und das ganze dann als "Plugin" für jede erdenkliche Texteingabe auf allen Computern an denen ich Text eingeben oder bearbeiten muss. Leider gibt es einen solchen Editor nicht und ich vermute mal, das wird in naher Zukunft auch so bleiben.

Deshalb habe ich in den letzten Jahren so einiges ausprobiert und die ein oder andere Behelfslösung geschaffen. Grund warum ich dem ganzen jetzt einen Blogbeitrag widme war ein Thread auf HN, in dem jemand seine .vimrc veröffentlicht hatte.

Als ich mir das Monster ansah, war ich irgend wie beruhigt: Ich bin nicht der einzige, der nach der perfekten Lösung sucht. Nur ging Steve einen anderen Weg: Er bog so lange an Vim herum, bis es halbwegs seinen Ansprüchen genügte. Ich habe seine Konfiguration nicht ausprobiert, ich glaube ich würde mich mit seinen Settings sowieso nicht zurechtfinden. Ich sah es eher als nette Anregung, die ein oder andere Option mal nachzuschlagen. (Wer sich übrigens einmal mit Vim beschäftigen möchte, dem seien meine Vim-Mastery Artikel ans Herz gelegt).

Viele Interessanter waren aber die Kommentare dazu: Dabei ging es hauptsächlich um Ansätze zur Lösung des "überall die gleiche Config"-Problems. Für mich habe ich es so gelöst, dass ich die wichtigsten Konfigurationsdateien in meiner Dropbox abgelegt habe. Symlinks zeigen dann von ~/ auf die in der Dropbox. Damit bin ich eigentlich immer recht gut zurechtgekommen. In meinem neuen Job habe ich allerdings mit einigen Servern zu tun, so dass ich dort nicht überall einen Dropbox-Client installieren kann bzw. überall meine Konfigurationsdateien herum kopieren will.

Mir schwebte da schon seit längerem eine Vision im Hinterkopf; ein simples Script das für mich den Benutzeraccount so konfiguriert wie ich das brauche. Gebe ich die Kontrolle des Servers an jemanden anders ab, soll natürlich die ursprüngliche Konfigurations wiederhergestellt werden. Einer auf HN hat den ersten Schritt schon so gemacht wie ich mir das gewünscht hatte:

wget -qO - bit.ly/newbox | sh

Simpel, einfach, funktional. Leider ist wie immer meine Situation etwas komplexer: Beispielsweise die Datei ~/.ssh/config ist logischerweise auf der Arbeit eine ganz andere wie bei mir zuhause. So sollte es auch bleiben. Teile ich mir einen Account mit einer anderen Person, will ich natürlich keine der Dateien in ~/.ssh/ "publizieren". Nicht nur Dateien an sich sind ein Problem, auch einzelne Zeilen. Auf der Arbeit brauche ich Dank Cygwin ein paar mehr Einträge in meiner $PATH Variable die in der Datei ~/.zshrc gesetzt ist. Es gibt natürlich einige Systeme wie Puppet die solche Probleme lösen, doch das ist mir alles viel und zu groß und zu mächtig und zu unhandlich.

An die SysOps da draußen: Wie habt ihr das Problem gelöst, wenn ihr es gelöst habt? Das würde mich mal brennend interessieren.

Ach ja: Diesen Blog-Beitrag habe ich natürlich in Vim geschrieben und am Ende in den Browser kopiert. Das "Mein Editor everywhere"-Problem habe ich also auch noch nicht im Griff.

delicious bookmark del.icio.us, ![Inception!!!](http://aaron-mueller.de/bilder/20111118_vim.png) Ich bin stets bemüht (wie man so schön sagt) eine für mich akzeptable Lösung zu finden. Was das Editieren von Text angeht, bin ich schon mindestens ein Jahrzehnt auf der Suche nach _d


Kommentare


Florian am 19. November 2011
Nein, nein, nein, nein! Ich könnte jedes mal schreien wenn ich etwas wie "wget -qO - xxx | sh" sehe. Tut das nicht, niemals, nie nie nie! Sign zumindest das Script mit GPG und führe es nur aus wenn die Unterschrift stimmt.

Zu deinem eigentlichen Problem: Der einfachste Weg ist zum Beispiel in vim oder zsh etc den Hostnamen zu überprüfen und abhängig davon eine zusätzliche Datei zu inkludieren. Für Config bei der das nicht möglich ist oder wenn die Daten für andere Rechner nicht auf dem Computer sein dürfen, muss man sich was anderes einfallen lassen.

Ich hatte mal etwas gebaut mit verschiedenen Git-Repos und Submodulen bei denen automatisch für den jeweiligen Rechner das richtige ausgecheckt wird - aber das ist alles noch nicht brauchbar weit.

Aaron am 19. November 2011
Was das Downloaden und unverifizierte aufrufen von Scripten aus dem Netz angeht: Klar, ich würde niemals mein Script auf pastebin ablegen und ne tinyurl draus machen. Hatte da eher an config.datenhalter.de gedacht, da kann ich ziemlich sicher gehen das was da kommt das ist für das ich es halte.

Abhängig vom Hostnamen, Dateien aufsplitten und includieren, Submodule einbinden usw. ist mir alles viel zu aufwändig. Das hatte ich alles auch schon mal begonnen bzw. durchgedacht aber das ist einfach viel zu pflegeintensiv. Ich brauche was simples und einfaches.

Andreas am 20. November 2011
Hi,

Wir haben uns RedHat- bzw. Debianpakete gebaut, die unsere aktuelle VIM-Konfiguration (und noch mehr, da das Problem ja auch für Shells gilt) enthalten und rollen diese dann bei Kunden aus. Somit können wir die Konfigurationen auch direkt updaten. Wir sind aber sehr heterogen mit unseren Konfigurationen und müssen diese nicht an verschiedene Gegebenheiten anpassen. Das war/ist für uns die akzeptabelste Lösung.

Gruß
Andreas

Andreas am 20. November 2011
Ah noch ein Nachtrag:

bzgl der riesigen Konfigurationsdatei: Ich finde den Vim Addon Manager hierfür einfach genial. Da kann man seine wichtigsten Plugins und Helferlein ganz einfach einbinden, verwalten und auch updaten. Sehr schick gemacht!