Sollte ich Linux-Anwendungen in / var oder / opt installieren?

83

Ich verwende viele Open-Source-Anwendungen, darunter Java und Tomcat. Bei den meisten Anweisungen werden meine Anwendungen anscheinend über das /varVerzeichnis ausgeführt. Aber hin und wieder sehe ich auch das /optVerzeichnis. Während ich dabei bin, sehe ich auch /usr/local/und auch /etc.

Wann sollte ich Anwendungen in dem einen oder anderen Ordner installieren? Gibt es Vor- und Nachteile von jedem? Hat das etwas mit der Historie zu tun (Solaris vs Linux oder Red Hat vs Ubuntu)?

Trevor Allred
quelle
8
/ etc ist ein seltsamer und unangemessener Ort, um Anwendungen zu verlassen ...
user5336
Ich habe gesehen, wie Leute Sachen in / etc geschrieben haben, wie zum Beispiel Perl-Module. Es ist komisch, aber es passiert ...
--aphink
6
Für jede Absurdität gibt es einen Verfechter, der sie verteidigt.
womble

Antworten:

133

Der Standard für diese Probleme ist der File Hierarchy Standard . Es ist ein ziemlich großes Dokument. Grundsätzlich (und sehr grob) lauten die Standardpfade unter Linux:

  • /bin& /sbinsind für wichtige Programme für das Betriebssystem, sbin nur für Administratoren.
  • /usr/bin& /usr/sbinsind nicht für lebenswichtige Programme, sbin nur für Administratoren;
  • /varist für lebende Daten für Programme. Dies können Cache-Daten, Spool-Daten, temporäre Daten (sofern nicht vorhanden /tmp, die bei jedem Neustart gelöscht werden) usw. sein.
  • /usr/localist für lokal installierte Programme. In der Regel werden hier Programme gehostet, die den Standards entsprechen, jedoch nicht für das Betriebssystem gepackt wurden, sondern vom Administrator manuell (z. B. mithilfe von ./configure && make && make install) sowie über Administratorskripts installiert werden .
  • /optist für Programme, die nicht gepackt sind und nicht den Standards entsprechen. Sie haben einfach alle Bibliotheken zusammen mit dem Programm dort abgelegt. Es ist oft eine schnelle und schmutzige Lösung, aber es kann auch für Programme verwendet werden, die von Ihnen selbst erstellt wurden und für die Sie einen bestimmten Pfad haben möchten. Sie können Ihren eigenen Pfad (z. B. /opt/yourcompany) darin erstellen. In diesem Fall wird empfohlen, ihn als Teil der Standardpfade zu registrieren.
  • /etc sollte keine Programme enthalten, sondern Konfigurationen.

Wenn Ihre Programme spezifisch für die vom Dienst bereitgestellten Dienste sind, /srvkann dies auch ein guter Ort für sie sein. Beispielsweise bevorzuge ich die Verwendung /srv/wwwfür Websites, anstatt /var/wwwsicherzustellen, dass das Verzeichnis nur Daten enthält, die ich selbst hinzugefügt habe, und nichts, was aus Softwarepaketen stammt.

Es gibt einige Unterschiede zwischen den Distributionen. Zum Beispiel verwenden RedHat-Systeme libexecVerzeichnisse, wenn dies auf Debian / Ubuntu-Systemen nicht der Fall ist .

Das FHS wird hauptsächlich von Linux-Distributionen verwendet (ich kenne eigentlich kein anderes Betriebssystem, das wirklich dazu passt). Andere Unix-Systeme folgen dem nicht. Beispielsweise werden BSD-Systeme in der Regel /usr/localfür Paketprogramme verwendet, was bei Linux nicht der Fall ist. Solaris hat sehr unterschiedliche Standardpfade.

Ich empfehle Ihnen nachdrücklich, das oben verlinkte FHS-Dokument zu lesen, wenn Sie mehr darüber erfahren möchten.

ℝaphink
quelle
1
Eine der wenigen Aufzählungen, die ich vielleicht als Spickzettel
ausdrucken möchte
6
+1 für /srv. Ich war auf der Suche nach einem Platz für meine Git-Repositories und mochte meinen Apache-Inhalt nicht /var/www. /srvscheint der perfekte Ort zu sein.
Mr. Hedgehog
@ ℝaphink, also warum heißt es varstatt data?
Pacerier
@ Mr.Hedgehog, was meinst du mit "nicht mögen"? Möchtest du das erklären?
Pacerier
@Pacerier In den 90ern hat man dir gesagt, /vardass es sich um "verschiedene Daten" handelt. In den Anfängen wurde Unix auf einer einzigen Festplatte gehostet. Als es nicht genug war, haben sie ein neues bekommen, es gemountet /usrund alle Benutzerdaten dorthin verschoben. Aber es war nicht genug und die alte Festplatte war bald wieder voll. Also haben sie alle Binärdateien, ohne die das System booten könnte, von /binnach verschoben /usr/bin. Sie haben einfach keinen Platz mehr. Später mussten sie Daten zwischen den Benutzern austauschen, um sie zu erstellen /varund als Ablagebox zu verwenden. FHS steckt voller solcher Legacy-Entscheidungen und sollte mit einer Prise Salz getroffen werden.
14.
4

optsteht für optionale Software. varsteht für variable Systemdateien. Daher sollten Ihre Bewerbungen an gehen /opt.

Eduard Wirch
quelle
8
/varist für verschiedene Systemdateien, nicht "verschiedene".
womble
4
/ var steht für "variable Datendateien". Zu sagen, dass es sich um "verschiedene Systemdateien" handelt, ist mehrdeutig und möglicherweise irreführend. o_O Du hast Recht mit "opt".
Phoenix8
@Eduard, was ist dann mit / opt / var? Und </ usr / var>, </ usr / local / var> ...
Pacerier
@womble Es ist falsche Etymologie. Es ist, was FHS sagt, aber es ist nicht wahr. In den 90er Jahren wurde Ihnen gesagt, /vardass es sich um "verschiedene Daten" handelt. Ich habe noch Notizen aus einem Vor-Internet-Buch, das ich damals gelesen habe.
cprn
2

Es hängt davon ab, was Ihr lokaler Standard ist.

Persönlich installiere ich nichts ohne guten Grund in / var. Mein / usr / local ist fast immer ein nfs-Mount außerhalb des Netzwerks, sodass alles, was nicht gepackt ist, in / opt installiert wird.

David Mackintosh
quelle
1
Was würden Sie überhaupt in / var einfügen, außer Daten?
ℝaphink
1
Normalerweise werden Programme ihre eigenen Sachen in / var stecken. Meistens vom Hersteller geliefert - Protokolle, einige Bibliotheken, Steuerdateien, PID-Dateien, so etwas.
David Mackintosh
2
Da stimme ich nicht ganz zu Bibliotheken, wenn sie statisch sind, sollten reingehen /usr. Dynamisch generierte libs kann bis in enden /var/libgelegentlich, aber ich sehe nicht , was Sie tatsächlich würde installieren in /var, von einem Admin Sicht. Das Programm verwendet es möglicherweise ausgiebig, es sollte jedoch ziemlich leer sein, bevor Sie es starten.
ℝaphink
1
Im Moment ist das einzige, was ich absichtlich in / var installiert habe, nfsen / nfdump, und das liegt daran, dass der Footprint der Anwendung alle nfdump-Dateien sind, die es ansammelt. (Und weil dies eine Testinstallation ist, die es irgendwie in die Produktion geschafft hat. Also - "aus den üblichen Gründen nicht".) Aber das war es auch schon. Da ich meine Festplatte nicht partitioniere, befinden sich / var, / opt und / usr sowieso alle im selben Dateisystem.
David Mackintosh
1
Qmail wird in / var installiert. Dies ist eine der zahlreichen Kritikpunkte dagegen.
staticsan