Warum werden benutzerdefinierte Programme immer in /opt, /srv, /usr/local usw. und nicht im Ordner ~/ (Home) installiert?

Warum werden benutzerdefinierte Programme immer in /opt, /srv, /usr/local usw. und nicht im Ordner ~/ (Home) installiert?

Das LTS-Repo ist ziemlich gut, aber aus irgendeinem Grund bevorzuge ich für einige Programme die Methode „Aus dem Quellcode erstellen“. Ein Grund dafür ist, dass ich die bevorzugte Version bekomme (PHP auf LTS ist auf 5.3, während ich 5.4 aus dem Quellcode kompilieren kann). Ähnliches gilt für nginx, node.js, usw.

Nun würde ich gerne wissen, warum alle Tutorials darauf bestehen, die Programme in den "Root-eigenen" Ordnern wie /opt, /srv, oder zu installieren /usr/local. Ich finde es viel einfacher, es in meinem Home-Ordner zu installieren, wie zum Beispiel: /home/prahlad/programme/PHP-5.4

sudoEin Vorteil ist, dass ich diese Programme nicht installieren muss . Der zweite und damit verbundene Vorteil istSicherheitSorge. Was ist, wenn (angenommen) eine dieser Quellen Malware enthält (was unter Linux allerdings weniger wahrscheinlich ist)? Wäre es nicht eine gute Idee, ihnen die Root-Berechtigung zu entziehen?

Ich wüsste gerne ein Beispiel, bei dem es notwendig ist, ein Programm in einem Stammordner zu installieren.

Antwort1

/usr/local/In den Anleitungen erfahren Sie, wie Sie die Software in oder usw. installieren, /optdamit andere sie verwenden können.

Wenn Sie in Ihrem Home-Verzeichnis installieren, haben nur Sie Zugriff darauf. Wenn Sie nur für sich selbst kompilieren, ist das kein Problem.

Antwort2

Dies ist keine feste Regel, aber Dinge, die standardmäßig auf gesetzt sind /opt, sind normalerweise in sich abgeschlossen und erfordern möglicherweise, dass Sie ausführbare Dateien in einen ausführbaren Pfad kopieren oder symbolisch verknüpfen oder einen internen Ordner zu hinzufügen $PATH. Das ist einfach genug, um herauszufinden, ob Sie es lieber woanders ablegen und ein verwenden möchten $HOME/bin.

Aus dem Quellcode erstellte Dateien, die standardmäßig auf installiert werden /usr/local, können jedoch auch gemeinsam genutzte Bibliotheken und Manpages installieren. Wenn Sie sie woanders ablegen möchten, exportieren Sie normalerweise zuerst die PREFIXVariable (oder geben sie auf der Befehlszeile mit an make); ./configure --helpSie können dies bestätigen und erklären.

In diesem Fall benötigen Sie eine gewisse Verzeichnishierarchie im gewünschten Pfad. Sie sollte etwa so aussehen:

bin/
lib/
include/
share/
    man/
        man1/

Es gibt weitere manXVerzeichnisse, die Sie erstellen können (sehen Sie sich /usr/share/manein Modell an), obwohl InstallateureMaierstellen Sie diese, wenn sie nicht vorhanden sind. Sie benötigen dann beispielsweise Folgendes ~/.profile:

export PATH=~/bin:$PATH
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
export MANPATH=~/share/man:$MANPATH

Wenn das Paket gemeinsam genutzte Bibliotheken verwendet, LD_LIBRARY_PATHist dies von entscheidender Bedeutung, da sich die ausführbaren Dateien sonst nicht mit ihnen verknüpfen lassen. MANPATHFunktioniert möglicherweise nicht auf allen Systemen und ist ohnehin nicht unbedingt erforderlich – wenn man foobardies fehlschlägt, wissen Sie wahrscheinlich, wo Sie danach suchen müssen.

verwandte Informationen