Skip to content

Überall "local"

Gerade wenn man viel und intensiv mit Debian arbeitet, sammeln sich mit der Zeit so einige Dinge an. Ich meine hier speziell:

  • Konfigurationsdateien, die man mühsam ausgearbeitet und verfeinert hat
  • Skripte, also kleine Helferchen, die natürlich auch irgendwohin müssen
  • Aliase und Abbreviations
  • Schriften
  • Themes, Icons, ...

Evtl. hat man dann noch mehrere Rechner (Workstation, Laptop, Server, ...) und will diese Sachen natürlich überall synchron verfügbar haben. Vielleicht kennt ja der/die ein oder andere dieses Problem.

Anfangs kopierte ich alles einfach von Rechner zu Rechner. :-|
Heutzutage lässt sich das allerdings sehr viel eleganter lösen. ;-)

Es geht hier also um benutzerdefinierte Anwendersoftware und alle dazu benötigten Ressourcen. Wo kann man diese ablegen und wie hält man dies auf mehreren Rechnern synchron.

local vs. local

Heute geht es um "/usr", einem sehr wichtigen Systemverzeichnis, in dem zentral die gesamte Anwendersoftware und alle dazu benötigten Ressourcen liegen. Das Verzeichnis wird von dpkg/apt verwaltet, weshalb man hier besser nichts manuell ändern sollte. Für Änderungen gibt es zwei Verzeichnisse, welche "/usr" sozusagen überlagern:

Verzeichnis Art Verwalter Verfügbarkeit
/usr Systemverzeichnis dpkg / apt systemweit
/usr/local Systemverzeichnis Root systemweit
~/.local Benutzerverzeichnis Benutzer einzelner Benutzer

Für benutzerdefinierte Programme/Ressourcen kann man also sagen:

  • Soll etwas für alle Benutzer am Rechner verfügbar sein: --> "/usr/local"
  • Soll etwas nur für einen selbst verfügbar sein: --> "~/.local"

Eigene Skripte und Programme

In den zuvor genannten 3 Verzeichnissen existiert jeweils ein Verzeichnis namens "bin", in welchem eigene Skripte/Programme abgelegt werden können.

Das Programm zu einem eingegebenen Befehl wird dann der Reihe nach wie folgt gesucht (vereinfacht dargestellt):

  1. ~/.local/bin
  2. /usr/local/bin
  3. /usr/bin

So sind die eigenen Programme/Skripte gut vom restlichen System isoliert.

Für die Verwendung von "~/.local/bin" muss meist noch die PATH-Variable manuell angepasst werden. Dies kann z.B. in der ".bashrc" oder ".zshrc" geschehen:

PATH=~/.local/bin:$PATH

Unterverzeichnisse

Neben "bin" existieren noch weitere Unterverzeichnisse, welche man gut nutzen kann. Ggf. müssen diese erst angelegt werden:

├── bin       # Ausführbare Skripte/Programme
├── etc       # Konfigurationsdateien
├── games     # Spiele
├── include   # Header-Dateien für Programmierung
├── lib       # Bibliotheken
├── share     # Architekturunabhängige Daten
├── src       # Quellcode

Weitere Verzeichnisse können natürlich nach belieben hinzugefügt werden. So verwende ich unter "/usr/local" z.B. "etc" und "config" getrennt. Hier ein paar konkrete Beispiele:

/usr/local/bin                  # Systemweit verfügbare Skripte
/usr/local/share/color/icc      # Benutzerdefinierte ICC-Farbprofile
/usr/local/share/fonts/truetype # Benutzerdefinierte TrueType-Fonts
/usr/local/share/fonts/opentype # Benutzerdefinierte OpenType-Fonts
/usr/local/share/icons          # Benutzerdefinierte Icons
/usr/local/etc                  # Globale Konfigurationsdateien, welche von /etc verlinkt werden können
/usr/local/config               # Konfigurations-Dateien welche von ~/.config verlinkt werden können

Teils ist es zum Gruppieren sinnvoll, noch ein entsprechendes Unterverzeichnis zu verwenden. Z.B.: "/usr/local/share/fonts/truetype/google" oder "/usr/local/config/helix"

Ist man der einzige Benutzer oder Admin eines Rechners, so kann ich die Arbeit mit "/usr/local" sehr empfehlen. Neben einem selbst können so natürlich auch andere Benutzer von den dort abgelegten Sachen profitieren. Sollte hingegen kein Root-Zugriff bestehen, nutzt man eben "~/.local".

Zentrale Konfigurations-Dateien

Hat man seine Konfigurationen zentral unter "/usr/local/config" liegen, so kann bei Bedarf einfach darauf verlinkt werden. Als Beispiel erwähnt, meine Helix-Konfiguration liegt unter "/usr/local/config/helix" worauf ich im Homeverzeichnis einfach verlinke:

cd ~/.config
ln -s /usr/local/config/helix

Synchronisieren

Anfangs (so vor 15 Jahren) versuchte ich, "/usr/local" mittels "rsync" zwischen den Rechnern zu synchronisieren. Dies ist zwar möglich, allerdings auch etwas mühsam wenn Änderungen an mehreren Rechnern vorgenommen wurden. Versuche mit "unison" funktionierten da besser, jedoch ist dieses Tool auch etwas unhandlich. Heutzutage verwende ich "git", was wirklich einwandfrei läuft. Alternativ kann natürlich "svn", "cvs" oder jedes beliebige Versionsmanagement verwendet werden.

Es gibt Leute, die ihr gesamtes Home-Verzeichnis in einem Git-Repository haben. Meist reicht es aber, eines der beiden "local"-Verzeichnisse mittels Versionsmanagement zu verwalten.

Ich persönlich nutze einen kleinen OrangePi-Zero als Git-Server, über den ich alle Rechner und Laptops im Haus synchron halten kann. Änderungen sind so überall schnell verfügbar und es gibt kaum Probleme, wenn an mehreren Rechnern etwas geändert wurde.

Kategorien: Kategorien: Admin

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Markdown-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!