Vraag Moet ik Linux-applicaties installeren in / var of / opt?


Ik run veel open source-applicaties, waaronder java en tomcat. Het lijkt erop dat de meeste instructies mijn toepassingen laten uitvoeren vanuit de /var directory. Maar af en toe zie ik ook de /opt directory. Terwijl ik bezig ben, zie ik het ook /usr/local/ en zelfs /etc ook.

Wanneer moet ik applicaties in de ene map of de andere installeren? Zijn er voor- en nadelen van iedereen? Heeft het te maken met de smaakgeschiedenis (Solaris vs Linux of Red Hat versus Ubuntu)?


72
2017-12-21 18:58


oorsprong


/ etc is een vreemde en ongepaste plaats om applicaties te verlaten ... - user5336
Ik heb mensen dingen in / etc zien plaatsen, zoals Perl-modules. Het is raar, maar het gebeurt ... - ℝaphink
Voor elke absurditeit is er een kampioen om het te verdedigen. - womble♦


antwoorden:


De standaard voor deze problemen is de Bestandshiërarchie Standaard. Het is een vrij groot document. In principe (en zeer ruwweg) zijn de standaardpaden op Linux:

  • /bin & /sbin zijn voor vitale programma's voor het OS, sbin is alleen voor beheerders;
  • /usr/bin & /usr/sbin zijn voor geen vitale programma's, sbin is alleen voor beheerders;
  • /var is voor levende gegevens voor programma's. Dit kunnen cachegegevens, spoolgegevens en tijdelijke gegevens zijn (tenzij deze in gebruik zijn /tmp, die bij elke herstart wordt gewist), enzovoort;
  • /usr/local is voor lokaal geïnstalleerde programma's. Doorgaans worden hierin programma's gehost die de standaarden volgen maar niet zijn verpakt voor het besturingssysteem, maar eerder handmatig door de beheerder zijn geïnstalleerd (bijvoorbeeld door ./configure && make && make install) en beheerdersscripts;
  • /opt is voor programma's die niet zijn verpakt en die niet aan de normen voldoen. Je zou gewoon alle bibliotheken daar samen met het programma plaatsen. Het is vaak een snelle en vuile oplossing, maar het kan ook worden gebruikt voor programma's die door u zijn gemaakt en waarvoor u een specifiek pad wilt hebben. U kunt uw eigen pad maken (bijv. /opt/yourcompany), en in dit geval wordt u aangemoedigd om het te registreren als onderdeel van de standaardpaden;
  • /etc mag geen programma's bevatten, maar eerder configuraties.

Als uw programma's specifiek zijn voor de services die door de service worden geleverd, /srv kan ook een goede locatie voor hen zijn. Ik geef er bijvoorbeeld de voorkeur aan om te gebruiken /srv/www voor websites in plaats van /var/www om ervoor te zorgen dat de map alleen gegevens bevat die ik zelf heb toegevoegd en niets dat afkomstig is van softwarepakketten.

Er zijn enkele verschillen tussen distributies. RedHat-systemen gebruiken bijvoorbeeld libexec mappen wanneer Debian / Ubuntu-systemen dat niet doen.

De FHS wordt meestal gebruikt door Linux-distributies (ik ken eigenlijk geen ander besturingssysteem dat hieraan echt voldoet). Andere Unix-systemen volgen het niet. BSD-systemen hebben bijvoorbeeld de neiging om te gebruiken /usr/local voor verpakte programma's, wat niet het geval is voor Linux. Solaris heeft zeer verschillende standaardpaden.

Ik raad u ten zeerste aan om het FHS-document te lezen dat ik hierboven heb gekoppeld, als u hier meer over wilt weten.


126
2017-12-21 19:06



Een van de weinige kogellijsten die ik misschien als een spiekbriefje zou willen afdrukken ... - stimpy77
+1 voor /srv. Ik was op zoek naar een plek voor mijn git-repositories en vond het niet leuk om mijn Apache-inhoud erin te hebben /var/www. /srv lijkt de perfecte plek. - Mr. Hedgehog
@ ℝaphink, dus waarom heet het? var in plaats van data? - Pacerier
@ Mr.Hedgehog, wat bedoel je met "niet leuk"? Willen uitleggen? - Pacerier


opt staat voor optionele software. var staat voor variabele systeembestanden. Daarom moeten uw toepassingen naar /opt.


3
2017-12-21 19:07



/var is voor wisselende systeembestanden, niet "verschillende". - womble♦
/ var is voor "bestanden met variabele gegevens". Zeggen dat het voor "verschillende systeembestanden" is, is dubbelzinnig en mogelijk misleidend. o_O Je hebt gelijk over "opt". - phoenix8
@Eduard, hoe zit het met / opt / var dan? En </ usr / var>, </ usr / local / var> ... - Pacerier


Het hangt af van wat uw lokale standaard is.

Persoonlijk installeer ik niets zonder een goede reden in / var. Mijn / usr / local is bijna altijd een nfs-mount van het netwerk, dus alles wat niet is verpakt, wordt geïnstalleerd in / opt.


2
2017-12-21 19:14



Wat zou je eigenlijk in / var zetten, behalve data? - ℝaphink
meestal zullen programma's hun eigen dingen in / var plakken. Meestal geleverd door de leverancier - logboeken, sommige bibliotheken, besturingsbestanden, .pid-bestanden, dat soort dingen. - David Mackintosh
Ik ben het er niet helemaal mee eens. Bibliotheken, als ze statisch zijn, zouden binnen moeten gaan /usr. Er kunnen dynamisch gegenereerde libs in terechtkomen /var/lib af en toe, maar ik zie niet wat je eigenlijk zou doen installeren in /var, vanuit een admin oogpunt. Het programma kan het op grote schaal gebruiken, maar het moet vrij leeg zijn voordat je het programma start. - ℝaphink
Op dit moment is het enige dat ik opzettelijk in / var heb geïnstalleerd nfsen / nfdump, en dat komt omdat de voetafdruk van de applicatie alle nfdump-bestanden is die het verzamelt. (En omdat dit een testinstallatie is die op de een of andere manier in productie is geraakt. Dus - "voor het gebruik geen goede reden".) Maar dat is het eigenlijk. Natuurlijk, aangezien ik mijn harde schijf niet partitioneer, zijn / var, / opt en / usr toch allemaal op hetzelfde bestandssysteem. - David Mackintosh
Qmail wordt geïnstalleerd in / var. Dit is een van de vele kritieken daartegen. - staticsan