Wie die meisten Leute installiere ich gelegentlich Dinge oder schreibe/verwende Skripte, die von außerhalb der Repositories meiner Distribution stammen oder „handgemacht“ sind, sodass sie möglicherweise nicht im Standardpfad des Systems landen oder diesem nicht hinzugefügt werden sollten.
Nun gibt es verschiedene Möglichkeiten weiter vorzugehen.
Etwas, das ich vielleicht nur gelegentlich ausführen möchte oder sowieso nur in einem bestimmten Verzeichnis ausführen muss, kann seitdem so bleiben, wie es ist, cd ~/stuff/fancyapp
und ist dann ./fancyexecutable
gut genug.
Aber manchmal möchte ich vielleicht einfach etwas tun können, wie backup.sh
von jedem beliebigen Ort aus, an dem ich mich befinde, oder andere Programme müssen über eine bestimmte ausführbare Datei informiert sein, und dafür kann ich meinen $PATH mit etwas wie aktualisieren PATH=$PATH:~/bin/backup/
und export PATH
meine Sitzung neu starten. Dies führt mich jedoch zu dem Problem, entweder einen „Home-Bin“ zu haben, in den ich jede ausführbare Datei verschiebe/symbolisch verlinke ~/bin/
, oder, wenn ich einen ordentlichen Home-Bin haben möchte, jedes einzelne Unterverzeichnis zu meinem Pfad hinzufügen zu müssen. (Oder ich könnteetwas zusammenhacken, um den Pfad rekursiv zu machen)
Was ist also die richtige, empfohlene und sichere Methode, mit Ihrem eigenen System umzugehen, bin
das über mehrere ausführbare Dateien und Unterverzeichnisse verfügt?
Antwort1
Ich installiere die gesamte lokal integrierte Software in /home/user/.local
einem Verzeichnis. Dieses Verzeichnis kopiert im Wesentlichen die Verzeichnisstruktur von /usr
:
> ls ~/.local
bin etc include jars lib lib64 libexec man share
Sie können die Build-Tools anweisen, dieses Verzeichnis als Installationspräfix festzulegen. Einige Tools verwenden den Wert der Umgebungsvariablen, PREFIX
um den Installationsort zu bestimmen. Daher ist es eine gute Idee, diesen ebenfalls festzulegen. Verlassen Sie sich jedoch nicht darauf.
PATH
Beachten Sie, dass Sie die Werte mehrerer Umgebungen wie , LD_LIBRARY_PATH
, PKG_CONFIG_PATH
, CLASSPATH
entsprechend festlegen müssen .