Was ist der herkömmliche Installationsort für Anwendungen unter Linux?

72

Ich installiere gerade NetBeans und das Standardinstallationsverzeichnis ist /home/thomasowens/netbeans-6.8. Ich bin kein Fan von dieser Stelle, so betrachte ich /etc, /bin, /usr/bin, und /sbin. Hat Linux einen Ort, der gemäß der Konvention mit dem Windows- C:\Program FilesVerzeichnis identisch ist ?

Thomas Owens
quelle

Antworten:

98

Nach dem Dateisystem-Hierarchie-Standard sind je nach Anwendung mehrere Bereiche zulässig. Ich zitiere hier ausführlich.

  • bin ist natürlich die Abkürzung für "binär"
  • sbin ist die Abkürzung für "Server Binary", ansonsten definiert als:

    Dienstprogramme für die Systemadministration (und andere reine Root-Befehle)

  • /usr ist für gemeinsam nutzbare, schreibgeschützte Daten vorgesehen und sollte zwischen verschiedenen FHS-kompatiblen Hosts gemeinsam genutzt werden können (wenn Sie viele Computer in Ihrem Netzwerk haben und alle dieselbe Architektur haben, sollten Sie in der Lage sein, einen einzelnen / usr-Ordner gemeinsam zu nutzen mit jeder Maschine im Netzwerk)

  • /usr/local Wird vom Systemadministrator beim lokalen Installieren von Software verwendet (dh für Anwendungen, die nur auf diesem Computer und nicht auf jedem Computer im Netzwerk installiert sind).

Zusammengenommen:

  • /usr/bin ist das primäre Verzeichnis der ausführbaren Befehle auf dem System.
  • /usr/sbin ist für alle nicht wesentlichen Binärdateien gedacht, die ausschließlich vom Systemadministrator verwendet werden.
  • /sbinStattdessen müssen Systemverwaltungsprogramme abgelegt werden, die für die Systemreparatur, die Systemwiederherstellung, das Mounten / Anmelden oder andere wichtige Funktionen erforderlich sind (dh die Dinge, auf die Sie zugreifen müssen, um das Mounten /usr/sbinauszuführen /sbin).
  • Ebenso gehen wichtige Benutzerbefehle ein, die möglicherweise vor dem Mounten erforderlich /usrsind/bin
  • Alles, was nur auf dem lokalen Computer installiert ist, sollte in /usr/local/binoder gehen/usr/local/sbin

Es gibt jedoch eine andere Verwendung für / usr / local. Die meisten Dinge, die Sie über den Paketmanager Ihrer Distribution installieren, werden unter / usr abgelegt. Viele Leute legen stattdessen Dinge, die sie von Hand kompiliert haben, unter / usr / local ab. Dies hält sie aus dem Weg des Paketverwaltungssystems und lässt Sie erkennen, was Sie von der Distribution installiert haben (und müssen nicht sichern, weil Sie es erneut abrufen können) und was Sie von Hand kompiliert haben. Sie können auch verschiedene Versionen gleichzeitig ausführen (z. B. / usr / bin / firefox vs / usr / local / bin / firefox).


Gerade wenn man die Dinge gedacht wurden , angesiedelt, gibt es noch eine andere Stelle, die wahrscheinlich in der Nähe äquivalent ist c:\Program Files- /opt:

/opt ist für die Installation zusätzlicher Anwendungssoftware-Pakete reserviert. "

/optist wahrscheinlich der nächste entspricht c:\program filesin, dass es der einzige Ort ist eine Anwendung mit allen Dateien zusammen in einem Ordner, anstatt verstreut über finden erwarten würde /usr/bin, /varund /etc. Es wird normalerweise nur von sehr großen Paketen verwendet, aber in diesem Fall ist es wahrscheinlich am sinnvollsten, es unter / opt / netbeans abzulegen, da Netbeans einen eigenen Ordner haben möchte

James Polley
quelle
3
interessant. Wenn ich Linux entworfen hätte, hätte ich die im Netzwerk freigegebenen Apps in / usr / shared und dann die privat lokalen Host-Apps in / usr abgelegt. Auf diese Weise könnte ich / usr / shared teilen, ohne auch durch Vererbung / usr zu teilen.
Djangofan
1
Wirklich schöne Antwort. Ich mag auch den Kommentar, wie man Dinge aus dem Weg des Paketverwaltungssystems hält.
DaveParillo
1
Auf jeden Fall / entscheiden Sie sich für "Komplettpakete von Drittanbietern". Bei den meisten Installationen werden die verschiedenen Binärdateien, Bibliotheken, Dateien usw. in verschiedene Verzeichnisse unterteilt. Wenn Sie jedoch ein "all in one" -Verzeichnis haben, ist der Umgang mit / opt einfacher.
Avery Payne
Ein paar kurze Fragen: 1) Wenn / usr für alle Computer in einem Netzwerk freigegeben werden soll, bedeutet das nicht, dass alle untergeordneten Verzeichnisse auch freigegeben werden können, sodass / usr / local für andere Computer im Netzwerk sichtbar ist? 2) Was ist FHS? 3) Wenn Sie über Befehle sprechen, die für mount / usr erforderlich sind, sprechen Sie darüber, wie das Betriebssystem beispielsweise nach einem Herunterfahren hochfährt. Ich entschuldige mich für das Bombardement von Fragen 7 Jahre später, aber ich bin neu in Linux und hatte die gleiche Frage, nachdem ich gesehen habe, wie Installationshandbücher sagten, wo Sachen abgelegt werden sollen, aber nicht WARUM sie dort abgelegt werden sollen. +1 übrigens
Ungeheuer
5

Es kommt wirklich auf die persönlichen Vorlieben an. Ich erkläre meins für das, was es wert ist.

/ usr, / usr / bin sind normalerweise Speicherorte für Software, die vom zu installierenden System installiert wird. Wenn ich Dinge selbst installiere, installiere ich sie an einer von mehreren Stellen:

  1. Wenn es sich nur um ein Skript oder ein kleines Programm handelt, das ich verwenden werde, installiere ich es in ~ / bin - hier landen die meisten meiner Sachen.
  2. Wenn es sich um etwas handelt, wie Sie es beschrieben haben (NetBeans), mit einem eigenen vollständigen Dateibaum, installiere ich es in / opt
  3. Wenn es sich um eine einzelne ausführbare Datei handelt, installiere ich sie in / usr / local / bin

Warum unterscheide ich zwischen # 2 & # 3? Keine Ahnung, es ist nur eine Gewohnheit, die ich im Laufe der Zeit entwickelt habe. Es hat sich herausgestellt, dass / opt normalerweise zu einem tiefen Dateibaum wird, aber nur 2 oder 3 tatsächliche 'Dinge' installiert sind. In diesem Moment habe ich in opt, 2 Verzeichnissen, die jeweils ziemlich große Bäume unter sich haben, Laternen- und Lotusnotizen installiert. In / usr / local / bin habe ich 20 oder 30 Einträge, aber kein Unterverzeichnis.

Ich installiere keine Dinge in / usr / bin oder / usr / sbin, weil ich Dinge, die ich manuell hinzufüge (nicht Teil der einfachen Installation aus dem Standard-Repository), gerne getrennt halten möchte.

DaveParillo
quelle
1

Der Dateisystem-Hierarchie-Standard bietet zwar einige Anleitungen. Ich habe festgestellt, dass die meisten Distributionen gerne Pakete installieren /usr/share.

Aus diesem Grund habe ich die Praxis übernommen, Anwendungen zu installieren, die nicht über den Paketmanager (rpm / apt-get / emerge) in installiert wurden /usr/local. Auf diese Weise kann ich Anwendungen und Bibliotheken, die nicht über die Paketverwaltung verwaltet werden, von den anderen trennen.

Diese Technik hat mir geholfen, mein System sowohl unter Fedora Core als auch unter Gentoo zu verwalten.

Adam Luchjenbroers
quelle
0

Ich hätte gedacht, dass der Standardspeicherort ist /bin, es ist, wo so ziemlich alles standardmäßig installiert wird, wenn apt-get oder ähnliches verwendet wird ...

... Wenn es jedoch um modernere Programme (oder solche ohne Installer) geht, die viele zusätzliche Dateien enthalten, möchte ich sie in einem eigenen Verzeichnis ablegen /bin.

William Hilsum
quelle
3
Was ist der Unterschied zwischen / bin, / usr / bin und / sbin? / bin ist am sinnvollsten, da es sich um BINARY-Dateien handelt.
Thomas Owens
0

In der Regel werden sie in mehreren Ordnern installiert, hauptsächlich in / usr, / local, / bin usw. Den Installationsort des Programms finden Sie im GDebi-Installationsprogramm (auf der Registerkarte "Dateien"). Wenn Sie Netbeans verschieben möchten, würde ich vorschlagen, es nach / opt zu verschieben, da Google anscheinend dort seine Inhalte installiert.

digitxp
quelle
0

Stimmen Sie der Antwort von James Polley zu, aber tatsächlich ist das Standardverzeichnis sehr sinnvoll, es sei denn, Sie müssen die Anwendung für mehrere Konten freigeben. Ich musste zum Beispiel Eclipse 3.0 (veraltet) installieren, um unter Linux mit Flex arbeiten zu können, und habe es in $ HOME / eclipse3 abgelegt.

CarlF
quelle
0

Ich verwende / apps gerne für die meisten Add-On-Apps, die ich auf mehreren Servern installiere. Ich behalte eine Kopie des Ordners in / installs / apps auf meinem NFS-Server. Wenn ich einen neuen Linux-Server erstelle, mounte ich den Installationsordner und die Kopie / Apps und ich habe viele verschiedene gemeinsame Apps auf dem neuen Server. Ich lösche die Einträge, die ich für diesen neuen Server nicht benötige und bin fertig. Nun, vielleicht muss ich ein oder drei Skripte ausführen, um Umgebungsvariablen oder Pfadanweisungen zu setzen, aber das ist ziemlich viel, um viele neue Server einzurichten.

Ich komme aus einem Windows- und .net-Hintergrund. Eines der Versprechen von .net war, dass die meisten Apps mit Windows xcopy installiert werden können. Ich suche das Gleiche unter Linux. Wo verfügbar, wähle ich den Tarball über RPM oder yum usw. aus, damit ich / apps mit cp -r bereitstellen und die App für zukünftige Bereitstellungen auf meinem NFS-Server hinzufügen kann.

Tal
quelle
2
Die Frage fragt nach der Konvention. Sie haben beschrieben, was Sie persönlich tun. Können Sie das wenigstens mit einer Konvention in Verbindung bringen?
Fixer1234