Installieren von Dateien in ~ / .local

8

Wenn ich aus dem Quellcode kompilierte Software installiere, platziere ich sie normalerweise in / usr / local /, was meiner Erfahrung nach der mit Abstand häufigste Standard ist, und in der Standardpraxis zumindest für Debian und seine Derivate.

Jetzt möchte ich etwas in meinem Home-Verzeichnis installieren, und obwohl ich theoretisch jedes Unterverzeichnis erstellen und dort platzieren konnte, begann ich mich über die verschiedenen Optionen zu fragen und darüber, ob es eine Standardpraxis gibt. Ich habe im Wesentlichen zwei Antworten gefunden:

  • Benutzerdefiniertes Unterverzeichnis mit dem Namen Programme , usr
  • Kein Unterverzeichnis mit Unterverzeichnissen ~ / bin , ~ / lib64

Ich mag keines von beiden und dachte, da es bereits ein ~ / .local- Unterverzeichnis gibt, warum nicht dort installieren? Es enthält bereits eine ~ / .local / Freigabe , was die private / usr / Freigabe eines lokalen Benutzers bedeutet. Daher erscheint es sehr logisch, Programme zu installieren und die gesamte ~ / .local / bin , ~ / .local / zu erstellen lib etc.

Meine Frage ist: Ist es in Ordnung, lokale Software in ~ / .local zu installieren?

Warum finde ich keine Verweise darauf, wenn ich in Google oder Stackexchange nach Orten suche, an denen Software pro Benutzer installiert werden kann? Für mich scheint es ein so offensichtlicher Ort zu sein, dass das Fehlen von Beiträgen darauf hindeutet, dass es irgendwo einen Haken geben muss.

Vielleicht kann jemand, der dies getan hat, seine Erfahrungen teilen, sei es positiv oder negativ?

Rohr
quelle
Ich konnte keinen Hinweis auf ~ / .local in der FHS finden - nur / usr / local, ( pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY )
Jeff Schaller
@ JeffSchaller Du hast recht, ich habe das Tag in XDG geändert.
Pipe
1
Stellen Sie sicher, dass ~ / .local / share für Anwendungsdaten pro Benutzer verwendet wird. Warum nicht ein ~ / .usr erstellen und dort installieren?
Cylgalad

Antworten:

3

Das ist gut.

Denken Sie daran, es ist Ihr Home-Verzeichnis. Sie können dort alles tun, was Sie wollen. GNOME / KDE / was auch immer sich beschweren könnte, wenn Sie .config löschen, aber alles, was Sie in Ihrem Home-Verzeichnis tun, wirkt sich per Definition nur auf Sie aus . Das Hinzufügen einiger Verzeichnisse in .local ist harmlos.

Das Einfügen von Daten in ein Punktverzeichnis ist je nach Workflow leicht unpraktisch. Wie stark Sie davon betroffen sind, hängt davon ab, wie Sie im Dateisystem navigieren und wie oft Sie dies tun müssen. Wenn ich es wäre, würde ich ein reguläres Verzeichnis erstellen, das als Root fungiert (wahrscheinlich als lokal oder als Apps bezeichnet ) und es auf diese Weise verwenden, aber das ist eine persönliche Präferenz.

Wenn Sie auf Probleme stoßen, ist das System nicht so eingerichtet, dass Ihr Verzeichnis angezeigt wird. Sie müssen PATH, MANPATH, INFOPATH und LD_LIBRARY_PATH in Ihrer .bashrc-Datei anpassen (oder was auch immer für Ihre Shell geeignet ist). Es wird wahrscheinlich auch andere kleine "Fallstricke" geben.

Ich bin bereit zu sein, dass es hier nicht viele Posts darüber gibt, weil nicht viele Leute es tun müssen. Wenn es sich um einen Personal Computer handelt, gibt es nur wenige Gründe, / usr / local nicht zu verwenden. In den meisten Distributionen ist bereits alles dafür eingerichtet. Wenn Sie nur ein paar Apps installieren, erstellen viele Leute Verzeichnisse in / opt (wie / opt / blender). Solaris tut dies, wenn Sie ein Paket installieren.

Der einzige wirkliche Anwendungsfall für das, was Sie beschreiben, ist für Entwickler oder Leute, die kein Root auf ihrem Computer haben. Die meisten Leute, die kein Root haben, bitten den Administrator einfach, ein Programm für sie zu installieren - sie würden wahrscheinlich sowieso nicht wissen, wie man ein Programm kompiliert.

Jeff Spaulding
quelle
"Der einzige wirkliche Anwendungsfall für das, was Sie beschreiben, ist für Entwickler", Bingo. Ich rufe dieses Programm mehrmals täglich aus dem Git-Repository ab. Wenn ich es bei mir zu Hause installiere, kann ich das Upgrade einfacher automatisieren, ohne spezielle Sudo-Rechte oder ähnliches einrichten zu müssen. Ich denke, ich werde das einfach ausprobieren.
Pipe
1

Die offensichtlichen Gründe warum nicht:

  • Die Home-Verzeichnisse der Benutzer sind häufig in ihrer Größe begrenzt (Kontingente auf gemeinsam genutzten Systemen).
  • Vordefinierte Profile wurden häufig bereits ~/binzu Ihrem hinzugefügt PATH(was die Installation in diesem Verzeichnis bequemer macht ).
  • Wenn Sie die Kontrolle über die Maschine haben, funktioniert die Installation an einem gemeinsam nutzbaren Ort gut, z /usr/local/bin. Ihr Punktverzeichnis kann (normalerweise) nicht mit anderen Benutzerkonten geteilt werden.
  • Es ist einfacher, Punktverzeichnisse zu übersehen, wenn nach abnormaler Speicherplatznutzung gesucht wird. Zum Beispiel verwendete die Ccache-Fehlfunktion 1 GB in meinem Haus, bevor ich es bemerkte. Browser und Desktop-Junk sind ebenfalls häufige Straftäter (und seit mehr als 15 Jahren liefert keiner ein geeignetes Tool zur Datenträgerverwaltung).

Positiv zu vermerken ist, dass es die Unordnung ein wenig reduzieren würde. Ich habe 55 reguläre Verzeichnisse in meinem Home-Verzeichnis sowie 91 Punktverzeichnisse.

Thomas Dickey
quelle
1

Die gemeinsame Konvention (wird zB mit einigen install-homeZielen, wie zum merkuriellen , genannt hg) besteht darin , sie setzen sich direkt unter $HOME, das heißt, in $HOME/bin, $HOME/etc, $HOME/lib, und so weiter. Dies ist das Ergebnis des GNUish-Konfigurationstanzes, der mit beginnt ./configure --prefix=$HOME.

vonbrand
quelle
-2

Ja, das können Sie, aber es wird durch andere Softwareinstallationen verschmutzt. Ich benutze $HOME/localund modifiziere bashrc mit Pfad wie

export PATH=.:${HOME}/local/bin:${PATH}

export LD_LIBRARY_PATH=${HOME}/local/lib:${LD_LIBRARY_PATH}

export PREFIX=${HOME}/local

Sie wissen also, was Sie installiert haben, und da sie sich zuerst auf dem Pfadstapel befinden, werden sie vor den anderen Binärdateien, Bibliotheken usw. gefunden. Wenn Sie beispielsweise configure oder cmake verwenden, ist das Präfix leicht zu merken

--prefix=${PREFIX}
Skynet
quelle
1
(1) Es ist in Ordnung, ~/.localSoftware einzufügen, "aber sie wird durch andere Softwareinstallationen verschmutzt." Also "Ich benutze $HOME/local ..." (stattdessen). Huh? Was ist der Unterschied? (2) Nicht .am Anfang von setzen PATH.
Scott
(1) Software-Installationskonfiguration und andere Dateien in .local NONE werden standardmäßig in lokal installiert. (2) Ich verwende immer .: In meinem Pfad
Skynet