Hintergrund
Wenn mehr als ein Arbeitsgerät auf Ihren Händen angezeigt wird, erhalten Sie mit% username% die gleiche Konfiguration hier und da, bei der Arbeit und zu Hause. Als ich gerade anfing, Dateien zu synchronisieren, reichten mir Dropbox und Yandex.disk. Sie waren besonders gut darin, Dokumente und die Jabber-Historie zu synchronisieren, aber sobald ich versuchte, sie an .bashrc, .vimrc und dergleichen anzupassen, traten sofort verschiedene Nebenwirkungen auf. Zum Beispiel ist es mit Symlinkes in beiden Systemen eine völlige Katastrophe. ± Es gibt eine Art Verlauf nur in Dropbox. Nun, ich müsste selbst Zoomanagement-Skripte schreiben. Sicher ist schon etwas geschrieben worden, richtig?
Die Geschichte
Auf der Seite https://dotfiles.imtqy.com/ sehen Sie etwas weniger als hundert verschiedene Dienstprogramme, Plug-Ins und Ansätze zur Verwaltung von Konfigurationen - von maßgeschneiderten über einzelne Programme bis hin zu universellen. Ich rate Ihnen dringend, sich kennenzulernen. Es ist durchaus möglich, dass Sie aufhören weiter zu lesen und sich etwas Akzeptableres aussuchen.
Die allgemeine Bedeutung der Philosophie beruht auf der Tatsache, dass sich Konfigurationen in einer bestimmten Form im Repository% your_favorit_vcs% befinden und sich von dort aus in $HOME
einschleichen. Da% default_vcs% jetzt git ist, werde ich es weiter verwenden.
Ich begann meine Bekanntschaft mit dotfiles-in-git mit einem Dienstprogramm namens dotgit . Es begann als "einfach und unkompliziert in purer Bash". Aber in dem Moment, als der Autor dort eine Verschlüsselung mit der Möglichkeit hinzufügte, Symlinks direkt zum Verzeichnis zu erstellen, und ich versuchte, alles herauszufinden (ungefähr Anfang 2017), passierte eine Gurke meines Gehirns in meinem Home-Ordner mit defekten Links und manueller Wiederherstellung von Dateien aus der Gita. Im Allgemeinen wurde ein Tag für die Suche nach Alternativen mit der Möglichkeit des Optimierungsverhaltens und einer einfachen Konfiguration vorgesehen.
rcm
Wie bereits erwähnt, gibt es also wirklich viele Optionen für Dienstprogramme. rcm wurde aus folgenden Gründen gewählt:
- Pure sh, nicht einmal Bash. Es zieht weder Python noch Rubin, sonst nichts
- Ermöglicht das Konfigurieren des Konfigurationsübermittlungsverhaltens
- Das Vorhandensein von Manpages
- Anpassung der Bereitstellung mithilfe der Ordner
tag-*
und host-*
- Lange Unterstützung, lebhaftes Entwicklungsprojekt
- Zum Zeitpunkt der Verwendung ist dies bis heute nicht relevant, aber
{pre,post}-{up,down}
Hooks zum Aktualisieren und Löschen von Konfigurationsdateien werden unterstützt
Der wichtigste Punkt ist natürlich die Dokumentation, denn ohne sie wäre ich nicht so weit gegangen, das Bereitstellungsverhalten vollständig für mich anzupassen.
Nach der Installation des Managers stehen 4 Befehle zur Verfügung:
- lsrc - Listet auf, wie die Konfiguration nach
rcup
aussehen rcup
- mkrc - fügt die Datei zu
~/.dotfiles
(standardmäßig können Sie sie in ~/.rcrc
) und installiert sie dann wieder. Wenn Sie nicht standardmäßiges Verhalten benötigen, ist es besser, zuerst ~/.rcrc
zu korrigieren, da sonst unerwartete Spezialeffekte auftreten können. - rcdn - löscht alle von rcm verwalteten Konfigurationsdateien.
- rcup - installiert alle Dateien. Wenn Sie die Option
-g
, wird ein separates Shell-Skript generiert, das auch zur Verwendung auf Hosts, auf denen der Manager nicht installiert ist, in das Repository gestellt werden kann.
Daher ist die ~/.rcrc
einfach Teil des Shell-Skripts, das bei jedem Aufruf von rcm-Dienstprogrammen im Quellbefehl enthalten ist. Auf dieser Grundlage kann es mit integrierter Logik modular aufgebaut werden. Gemäß der Dokumentation können Sie mit dem Inhalt die Einstellungen für Punktedateien mithilfe von rcup
genau rcup
, zum Beispiel:
- Standardverhalten: Für jede Datei in
~/.dotfiles
wird im Home-Ordner ein Symlink ohne Startpunkt erstellt (z. B. '/home/felixoid/.dotfiles/bashrc' -> '/home/felixoid/.bashrc'
, '/home/felixoid/.dotfiles/README.md' -> '/home/felixoid/.README.md'
) - daddy
~/.vim
: ist ein Symlink zum Ordner /home/felixoid/.dotfiles/vim
(Option SYMLINK_DIRS) - Papa
~/.some_secret_files
: kopiert von /home/felixoid/.dotfiles/tag-dmz/some_secret_files
(Option COPY_ALWAYS) - Die Datei
~/.README.md
wird tatsächlich ignoriert (Option EXCLUDES). - Die Datei
'/home/felixoid/.zshenv'
ist ein Symlink zu '/home/felixoid/.dotfiles/tag-zsh/zshenv'
(TAGS-Parameter). - Der
~/bin
ebenfalls mit rcm verwaltet. Der Inhalt stammt aus /home/felixoid/.dotfiles/bin/
(Parameter UNDOTTED).
Manchmal kann es erforderlich sein, dieselbe Datei in mehreren Optionen zu erwähnen. Zum Beispiel sollte das .rcrc-Snippet so aussehen, wenn sich der gesamte Inhalt von ~/bin
in ~/.dotfiles/tag-bins/bin
und wie folgt kopiert wird:
COPY_ALWAYS="bin/*" TAGS="bins" UNDOTTED="bin"
Ein Beispiel für die Organisation des Inhalts des Ordners ~/.dotfiles
befindet sich im Repository mit Punktedateien. Umfassende Informationen sind in der Dokumentation enthalten. Lesen Sie die folgenden Manpages: lsrc (1), mkrc (1), rcrc (5) rcdn (1), rcm (7), rcup (1).
Untold und Untold
Während ich diesen Text schrieb, kamen mir gute Ideen, wie ich die Speicherung sensibler Daten in einem öffentlichen Repository organisieren kann. Zum Beispiel war ich immer besorgt über die Frage: Ist das sinnvoll und ist es möglich, GPG- und SSH-Schlüssel zu sichern? Aus diesem Grund könnten Hooks nützlich sein: Packen Sie sie in Teer, verschlüsseln Sie sie dann mit demselben symmetrischen GPG und entpacken Sie sie anschließend. Vielleicht werde ich dem nach der Implementierung den folgenden Hinweis widmen. Oder ist das vielleicht ein anderes Fahrrad? Und alles ist schon erfunden? Fügen Sie in den Kommentaren hinzu, ob dies tatsächlich der Fall ist.
Ich hoffe wirklich, dass dieses Material Interesse und den Wunsch weckt, die Verwaltung von Konfigurationen in einem halbautomatischen Modus zu organisieren!
Und eine kleine Umfrage: