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


Ich betreibe viele Open-Source-Anwendungen wie Java und Tomcat. Es scheint, als ob die meisten Anweisungen meine Anwendungen von der laufen lassen /var Verzeichnis. Aber ab und zu sehe ich auch die /opt Verzeichnis. Während ich dabei bin, sehe ich auch /usr/local/ und selbst /etc auch.

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


72
2017-12-21 18:58


Ursprung


/ etc ist ein seltsamer und unpassender Ort, um Anwendungen zu verlassen ... - user5336
Ich habe Leute gesehen, die Dinge wie Perl-Module in / etc platzieren. Es ist komisch, aber es passiert ... - ℝaphink
Für jede Absurdität gibt es einen Champion, der sie verteidigt. - womble♦


Antworten:


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

  • /bin & /sbin sind für lebenswichtige Programme für das OS, sbin ist nur für Administratoren;
  • /usr/bin & /usr/sbin sind für nicht lebenswichtige Programme, sbin ist nur für Administratoren;
  • /var ist für lebende Daten für Programme. Es können Cache-Daten, Spool-Daten, temporäre Daten sein (außer es ist in /tmp, die bei jedem Neustart gelöscht wird), usw.;
  • /usr/local ist für lokal installierte Programme. In der Regel hostet es Programme, die den Standards entsprechen, aber nicht für das Betriebssystem gepackt sind, sondern vom Administrator manuell installiert werden (z. B. durch Verwendung von ./configure && make && make install) sowie Administrator-Skripte;
  • /opt ist für Programme, die nicht verpackt sind und nicht den Standards folgen. Sie würden einfach alle Bibliotheken mit dem Programm zusammenstellen. 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 Weg (z. /opt/yourcompany) in diesem Fall, und in diesem Fall werden Sie ermutigt, es als Teil der Standardpfade zu registrieren;
  • /etc sollte keine Programme, sondern Konfigurationen enthalten.

Wenn Ihre Programme spezifisch für die vom Dienst bereitgestellten Dienste sind, /srv kann auch ein guter Standort für sie sein. Zum Beispiel bevorzuge ich es zu verwenden /srv/www für Websites statt /var/www um sicherzustellen, dass das Verzeichnis nur Daten enthält, die ich selbst hinzugefügt habe, und nichts, das von Softwarepaketen kommt.

Es gibt einige Unterschiede zwischen den Verteilungen. Zum Beispiel, RedHat-Systeme verwenden libexec Verzeichnisse, wenn Debian / Ubuntu-Systeme dies nicht tun.

Das FHS wird hauptsächlich von Linux-Distributionen verwendet (ich kenne eigentlich kein anderes Betriebssystem, das wirklich dazu passt). Andere Unix-Systeme folgen ihm nicht. Zum Beispiel neigen BSD-Systeme dazu, zu verwenden /usr/local für gepackte Programme, was bei Linux nicht der Fall ist. Solaris hat sehr unterschiedliche Standardpfade.

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


126
2017-12-21 19:06



Eine der wenigen Bullet-Listen, die ich gerne als Spickzettel ausdrucken würde ... - stimpy77
+1 für /srv. Ich suchte nach einem Platz für meine Git-Repositories und mochte meinen Apache-Inhalt nicht /var/www. /srv scheint der perfekte Ort zu sein. - Mr. Hedgehog
@ ℝaphink, also warum heißt es var anstatt data? - Pacerier
@ Mr.Hedgehog, Was meinst du mit "nicht mögen"? Möchten Sie das erklären? - Pacerier


opt steht für optionale Software. var steht für variable Systemdateien. Daher sollten Ihre Anwendungen zu gehen /opt.


3
2017-12-21 19:07



/var ist für variierend Systemdateien, nicht "verschieden". - womble♦
/ var steht für "variable Datendateien". Zu sagen, es ist für "verschiedene Systemdateien" ist mehrdeutig und möglicherweise irreführend. o_O Du hast Recht mit "opt" though. - phoenix8
@ Eduard, Was ist mit / opt / var dann? Und </ usr / var>, </ usr / local / var> ... - Pacerier


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

Persönlich installiere ich nichts in / var ohne einen guten Grund. Mein / usr / local ist fast immer ein NFS-Mount aus dem Netzwerk, also wird alles, was nicht gepackt ist, in / opt installiert.


2
2017-12-21 19:14



Was würdest du in / var sowieso einfügen, außer Daten? - ℝaphink
normalerweise werden Programme ihre eigenen Sachen in / var stecken. Meistens vom Verkäufer bereitgestellt - Logs, einige Bibliotheken, Kontrolldateien, .pid-Dateien, so etwas. - David Mackintosh
Dem stimme ich nicht ganz zu. Bibliotheken, wenn sie statisch sind, sollten hineingehen /usr. Dynamisch generierte Bibliotheken könnten in /var/lib gelegentlich, aber ich sehe nicht, was Sie eigentlich tun würden Installieren im /var, aus Sicht des Administrators. Das Programm verwendet es möglicherweise ausgiebig, aber es sollte ziemlich leer sein, bevor Sie es das Programm starten. - ℝaphink
Im Moment ist das einzige, was ich absichtlich in / var installiert habe, nfsen / nfdump, und zwar deshalb, weil der Fußabdruck der Anwendung alle nfdump-Dateien sind, die sie akkumuliert. (Und weil dies eine Test-Installation ist, die es irgendwie in die Produktion geschafft hat. Also - "für den üblichen Zweck keinen guten Grund".) Aber das ist es ziemlich viel. Natürlich, da ich meine Festplatte nicht partitioniere, befinden sich / var, / opt und / usr sowieso auf demselben Dateisystem. - David Mackintosh
Qmail wird in / var installiert. Dies ist eine der zahlreichen Kritikpunkte dagegen. - staticsan