In welches Verzeichnis soll ich Programme unter Linux installieren?

43

Ich möchte ein Programm unter Linux installieren und als Daemon ausführen. (Team Speak 3 in diesem Fall, aber die Frage ist allgemeiner Natur). Es wird kein Paket bereitgestellt, nur geteerte Binärdateien. Wo in der Verzeichnisstruktur sollte ich ein solches Programm nach Konvention setzen?

Im Web habe ich festgestellt, dass / opt für "optionale Zusatzanwendungen" steht, während / usr für "Benutzerprogramme" steht. Ich fand ein Tutorial, das / opt vorschlug, während das andere / usr sugested.

Welches ist also "richtiger"?

Eiver
quelle
1
Das "Richtigere" hängt von Ihrer Distribution ab. Sie sollten in den Richtlinien Ihrer Distribution nachlesen, wo Software abgelegt werden soll, die nicht (häufig /usr/local) vom Paketmanager verwaltet wird, ODER wie Sie ein eigenes Paket dafür erstellen.
Leiaz
Vielen Dank, Leiaz. Ihr Kommentar hat mir geholfen, die Antwort zu finden ( askubuntu.com/questions/1148/… ). Ich denke, es sollte in meinem Fall / opt sein (mit Linux Mint, das auf Ubuntu basiert) und die Anwendung verwendet einen einzelnen Ordner. Wenn Sie Ihren Kommentar in eine Antwort umwandeln, werde ich ihn akzeptieren.
Eiver

Antworten:

27

Das "Richtigere" hängt von Ihrer Distribution ab. Sie sollten in den Richtlinien Ihrer Distribution nachlesen, wo Software abgelegt werden soll, die nicht (häufig /usr/local) vom Paketmanager verwaltet wird, ODER wie Sie ein eigenes Paket dafür erstellen.

Wie Sie sagten, hat TeamSpeak einfach alles in einem Ordner abgelegt (und ist möglicherweise nicht einfach zu reorganisieren). Ja, das /opt/ist wahrscheinlich das Beste.

(In Archlinux kann der Paketmanager beispielsweise dort installiert werden, sodass ich immer noch ein PKGBUILD für die Installation erstellen würde /opt.)

Außerdem versuchen Distributionen normalerweise , dem Dateisystem-Hierarchie-Standard zu folgen. Hier sollten Sie nach allgemeineren Konventionen suchen.

Leiaz
quelle
Gibt es einen Alias, um zu wissen, wo sich die einzelnen Verzeichnisse nach Verwendung befinden? (Zum Beispiel, wo man Root-Konfigurationen
Sandburg
5

Wenn Sie Ihre eigene Software kompilieren, steuern Sie letztendlich den Installationsort. Standardmäßig wird die Software manuell kompiliert und installiert (nicht über einen Paketmanager, z. B. apt, yum, pacman) /usr/local. Einige Pakete (Programme) erstellen ein Unterverzeichnis, in /usr/localdem alle relevanten Dateien gespeichert werden, z /usr/local/openssl. Andere Pakete installieren die erforderlichen Dateien in vorhandenen Verzeichnissen wie /usr/local/sbinund /usr/local/etc. Dies sind lediglich Standardspeicherorte, die während der Kompilierung geändert werden können.

Beim Kompilieren von Software kann der Installationsort mithilfe der --prefix=Option bei der Ausführung angegeben werden ./configure. Es wird dringend empfohlen, dass Sie alle verfügbaren Optionen für Ihr Paket anzeigen, indem Sie ausführen $ ./configure --help | less. Darüber hinaus ist das Durchsuchen der mit Ihrem Paket gelieferten INSTALL- und README-Dokumente eine gute Idee. Sie enthalten in der Regel paketspezifische Installationsanweisungen und Abhängigkeitsinformationen.

Es sollte auch beachtet werden , dass , obwohl Sie Software überall speichern kann, gemäß der FHS , Quellcode sollte lokal installierte Software in gespeichert werden /usr/local/src Standardizing , wo Sie Ihre Quellbäume Sie leicht ermöglicht es speichern , um einen Baum zu suchen , wenn Sie eine Aktie kopieren müssen Konfigurationsdatei oder Binärdatei. Obwohl einige Pakete es verwenden, sollte Ihr Quellcode nicht so gespeichert werden, /usr/srcwie er für Systemsoftware wie den Kernel vorgesehen ist.

Schließlich müssen Sie sicherstellen, dass Ihr Installationsort in Ihrem Verzeichnis enthalten ist $PATH. Wenn Sie sich entscheiden, Ihr Paket zu installieren /opt, es aber nicht in Ihrer $PATHShell ist, werden die ausführbaren Dateien nicht gefunden und Sie müssen den absoluten Pfad verwenden, um Ihre Programme aufzurufen. Hier sind einige großartige Diskussionen von AU über die Konfiguration Ihrer$PATH

Zusätzliche Lektüre: man hier

Bach
quelle
5

Die Linux Standard Base und das Filesystem Hierarchy Standards sind wohl die Standards, wo und wie Sie die Software auf einem Linux - System installieren sollten und würde platzieren Software vorschlagen , die auch nicht in Ihrer Distribution enthalten ist /optoder /usr/local/vielmehr Verzeichnisse darin ( /opt/<package> /opt/<provider> /usr/local/bin).

Die beste Vorgehensweise besteht darin, heruntergeladene Software in ein installierbares Softwarepaket zu konvertieren, das Ihrer Distribution eigen ist, z. B. dpkg- oder rpm-Formate. Dies erleichtert das Melden, Aktualisieren und Entfernen der Software.

HBruijn
quelle
Dies gibt die Frage so ziemlich nur wieder, anstatt sie zu beantworten. Dem OP war bekannt, dass /optund /usr/local/welche beiden Optionen zur Verfügung standen, er wollte jedoch spezifische Informationen darüber, welche dieser Optionen er verwenden sollte. Dies könnte eine gültige Antwort sein, wenn stattdessen behauptet wird, dass die beiden Standorte austauschbar sind (obwohl ich bestreiten würde, dass es in einem solchen Fall eine korrekte Antwort wäre).
JBentley
1

Binaries gehen in den binOrdner nach gängigen Konventionen, wie Sie Ihre Paketstruktur organisieren würden, liegt bei Ihnen, ich kann mir vorstellen, /opt/<prog_name>/ob es sich nur um eine Liste von Binaries handelt.

bbsanem
quelle
Ich habe Angst , dass Teamspeak 3 Jungs das Programm so gemacht , dass alles , was es in einem Ordner nur benötigt sitzt (Binärdateien, Konfigurationsdateien, Protokolle), so es nicht verwenden / bin oder / etc oder / var / log
Eiver
1

Ich hatte die gleiche Frage bei der Installation von Eclipse über das Eclipse-Installationsprogramm.

Mir ist aufgefallen, dass Gimp, Perl und Vim im /usr/shareOrdner installiert sind und ich habe beschlossen, es dort zu installieren.

Senpai
quelle
0

Es gibt zwei Möglichkeiten, Programme zu installieren, je nachdem, wie sie gepackt sind.

  1. Über den Software-Manager (apt, synaptic, Gdebi usw.) liegt das Programm in Form eines Pakets vor, normalerweise .deb oder rpm. Software-Manager verarbeiten in den meisten Fällen Abhängigkeiten und installieren Binärdateien in der Regel in /usr/bin, Konfigurationsdateien in /etcusw. Sie können auch eine Konfigurationsdatei für das Programm in Ihrem Zuhause schaffen, in der Regel ~/.foo. Wenn Sie diese Datei bearbeiten können, können Sie auf diese Weise auch die Einstellungen für Ihre Sitzung ändern. Wenn Sie das Paket entfernen, findet der Manager alle Dateien und entfernt sie sauber (alle Speicherorte werden in einer speziellen Textdatei gespeichert). Möglicherweise werden jedoch einige Konfigurationsdateien beibehalten, z. B. die in Ihrem Basisordner.

  2. Sie laden ein Programm (normalerweise komprimiert) in Form von vorkompilierten Binärdateien für Ihre Architektur herunter. Die ausführbare Datei des Programms befindet sich normalerweise in einem einzelnen Ordner neben anderen Dateien (dynamisch verknüpfte Bibliotheken usw.). Dieser gesamte Ordner kann mit Root-Rechten entweder an einen /optoder /usr/binan einen anderen Benutzer kopiert werden und kann von jedem Benutzer verwendet werden, sofern die Berechtigungen dies zulassen. Ich selbst habe die Ordner mit den Binärdateien in meinen Home-Ordner gelegt ~/bin. Jetzt sollten Sie das Programm ausführen können, indem Sie seine bin-Datei aufrufen.

Štěpán Doan
quelle