Чи потрібно встановлювати програми Linux у / var або / opt?


83

Я запускаю багато програм з відкритим кодом, включаючи java та tomcat. Схоже, більшість інструкцій мої програми запущені з /varкаталогу. Але раз у раз я також бачу /optдовідник. Поки я на це, я також бачу /usr/local/і навіть /etcдобре.

Коли я повинен встановлювати програми в одну або іншу папку? Чи є плюси і мінуси кожного з них? Це пов'язано з історією ароматів (Solaris vs Linux або Red Hat проти Ubuntu)?


8
/ і т. д. - дивне і невідповідне місце для залишення програм ...
user5336

Я бачив, як люди вкладають речі в / etc, як модулі Perl. Це дивно, але буває ...
phaphink

6
За кожен абсурд є чемпіон, який захищає його.
живіт

Відповіді:


133

Стандарт для цих питань - стандарт ієрархії файлів . Це досить великий документ. В основному (і дуже приблизно) стандартними шляхами для Linux є:

  • /bin& /sbinпризначені для життєво важливих програм для ОС, sbin - лише для адміністраторів;
  • /usr/bin& /usr/sbin- не для життєво важливих програм, але sbin - лише для адміністраторів;
  • /varпризначений для даних про життя для програм. Це можуть бути дані кешу, дані котушки, тимчасові дані (якщо вони не є /tmp, які стираються при кожному перезавантаженні) тощо;
  • /usr/localпризначений для локально встановлених програм. Зазвичай він розміщує програми, які відповідають стандартам, але не були упаковані для ОС, а встановлюються вручну адміністратором (використовуючи, наприклад ./configure && make && make install), а також сценарії адміністратора;
  • /optпризначений для програм, які не пакуються та не відповідають стандартам. Ви просто помістіть туди всі бібліотеки разом із програмою. Це часто швидке та брудне рішення, але воно також може бути використане для програм, створених власноруч і для яких ви хочете мати певний шлях. Ви можете зробити свій власний шлях (наприклад /opt/yourcompany) всередині нього, і в цьому випадку вам рекомендується зареєструвати його як частину стандартних шляхів;
  • /etc не повинен містити програм, а скоріше конфігурації.

Якщо ваші програми є специфічними для послуг, що надаються сервісом, /srvвони також можуть бути хорошим розташуванням для них. Наприклад, я вважаю за краще використовувати /srv/wwwдля веб-сайтів, а не /var/wwwдля того, щоб каталог містив лише ті дані, які я додав, і нічого, що йде з програмних пакетів.

Існують деякі відмінності між розподілами. Наприклад, системи RedHat використовують libexecкаталоги, коли системи Debian / Ubuntu не роблять.

FHS в основному використовується дистрибутивами Linux (я фактично не знаю жодної іншої ОС, яка дійсно їй відповідає). Інші системи Unix цього не дотримуються. Наприклад, системи BSD, як правило, використовують /usr/localдля упакованих програм, що не стосується Linux. Solaris має дуже різні стандартні шляхи.

Я настійно рекомендую вам ознайомитись із документом FHS, до якого я зв'язаний вище, якщо ви хочете дізнатися більше про це.


1
Один з небагатьох списків куль, які я, можливо, хотів би роздрукувати як шпаргалка ...
stimpy77

6
+1 для /srv. Я шукав місце для своїх git сховищ і мені не сподобалося, що в моєму вмісті Apache знаходиться /var/www. /srvздається ідеальним місцем.
Містер Їжак

@ ℝaphink, То чому його називають varзамість data?
Pacerier

@ Mr.Hedgehog, що ви маєте на увазі під "не подобається"? Хочете пояснити?
Pacerier

@Pacerier Ще в 90-х вам сказали б, /varщо це "різні дані". У перші дні Unix приймали на одному приводі. Коли цього було недостатньо, вони отримали новий, встановили його як /usrі перемістили туди всі дані користувача. Але цього було недостатньо, і старий привід незабаром знову був повний. Таким чином , вони перемістили все бінарники система може завантажуватися без від /binдо /usr/bin. Їм просто не вистачає місця. Пізніше їм потрібно було обмінюватися даними між користувачами, щоб вони зробили /varта використовували їх як спадне поле. FHS сповнена подібних спадкових рішень, і їх слід приймати з дрібкою солі.
cprn

4

optозначає додаткове програмне забезпечення. varрозшифровується як файли змінних систем. Тому ваші заявки повинні перейти до /opt.


8
/varпризначений для різних системних файлів, а не "різних".
живіт

4
/ var - "файли змінних даних". Скажімо, що це стосується "різних системних файлів", неоднозначно і потенційно оманливо. o_O Ти маєш рацію щодо "opt".
Phoenix8

@Eduard, а як же / opt / var тоді? І </ usr / var>, </ usr / local / var> ...
Pacerier

@womble Це помилкова етимологія. Це те, що говорить FHS, але це неправда. Ще в 90-х вам сказали б, /varщо це "різні дані". У мене досі є нотатки з книги, що передавалася до Інтернету, яку я читав тоді.
cprn

2

Це залежить від вашого місцевого стандарту.

Особисто я нічого не встановлюю в / var без поважних причин. Мій / usr / local майже завжди nfs монтується в мережі, тому все, що не упаковано, встановлюється в / opt.


1
Що б ви все-таки ввели / вар, окрім даних?
phaphink

1
зазвичай програми приклеюють свої речі в / var. Здебільшого постачаються постачальниками - журнали, деякі бібліотеки, керуючі файли, .pid-файли тощо.
Девід Макінтош

2
Я не зовсім згоден. Бібліотеки, якщо вони статичні, повинні зайти /usr. Динамічно генеруються ЛІЕС може в кінцевому підсумку в /var/libіноді, але я не бачу , що ви на самому справі встановити в /var, з точки адміністратора зору. Програма може широко використовувати її, але перед запуском програми вона повинна бути досить порожньою.
phaphink

1
Зараз єдине, що я навмисно встановив у / var, - це nfsen / nfdump, і це тому, що слід програми - це всі файли nfdump, які він накопичує. (І тому, що це тестова установка, яка якось зробила це виробництвом. Отже - "для невикористаної вагомої причини".) Але це майже все. Звичайно, оскільки я не розбиваю жорсткий диск, / var, / opt і / usr все одно в одній файловій системі.
Девід Макінтош

1
Qmail встановлюється в / var. Це одна з численних заперечень проти цього.
статик
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.