Каково обычное место установки приложений в Linux?


73

В настоящее время я устанавливаю NetBeans, и каталог установки по умолчанию - /home/thomasowens/netbeans-6.8. Я не поклонник этого места, поэтому я смотрю на /etc, /bin, /usr/binи /sbin. Есть ли в Linux место, которое по соглашению совпадает с C:\Program Filesкаталогом Windows ?

Ответы:


99

Согласно Стандарту Иерархии Файловой системы , есть несколько мест, которые являются приемлемыми, в зависимости от приложения. Я цитирую это широко здесь.

  • bin это сокращение от "двоичного", конечно,
  • sbin является сокращением от «двоичный файл сервера», иначе определяется как:

    Утилиты, используемые для системного администрирования (и другие команды только для root)

  • /usr предназначен для обмена данными, предназначенными только для чтения, и должен быть доступным для различных хостов, соответствующих FHS (если у вас много компьютеров в сети, и они имеют одинаковую архитектуру, вы должны иметь возможность совместно использовать одну папку / usr с каждой машиной в сети)

  • /usr/local предназначен для использования системным администратором при локальной установке программного обеспечения (т. е. для приложений, установленных только на этом компьютере, а не на каждом компьютере в сети).

Взяв их вместе:

  • /usr/bin является основным каталогом исполняемых команд в системе.
  • /usr/sbin для любых несущественных двоичных файлов, используемых исключительно системным администратором.
  • Программы системного администрирования, которые необходимы для восстановления системы, восстановления системы, монтажа / USR, или другие важные функции должны быть помещены в /sbinвместо (то есть, то , что вам нужно , чтобы получить доступ для того , чтобы установить /usr/sbinидти /sbin)
  • Аналогично, важные пользовательские команды, которые могут понадобиться перед /usrподключением, входят в/bin
  • Все , что устанавливается только на локальном компьютере должен идти /usr/local/binили/usr/local/sbin

Есть еще одно использование для / usr / local. Большинство вещей, которые вы устанавливаете через менеджер пакетов вашего дистрибутива, будут помещены в / usr; многие люди вместо этого помещают вещи, скомпилированные вручную, в / usr / local. Это исключает их использование в системе управления пакетами и позволяет вам определить, что вы установили из дистрибутива (и вам не нужно выполнять резервное копирование, потому что вы можете получить его снова) и что вы собрали вручную; он также позволяет запускать разные версии одновременно (например, / usr / bin / firefox против / usr / local / bin / firefox).


Просто, когда вы думали, что все улажено, есть еще одно место, которое, вероятно, является ближайшим эквивалентом c:\Program Files- /opt:

/opt Зарезервировано для установки дополнительных программных пакетов приложений.

/optвероятно, ближайший эквивалент c:\program files, в том , что это единственное место , можно было ожидать , чтобы найти приложение со всеми его файлами вместе в одной папке, а не разбросаны по всему /usr/bin, /varи /etc. Обычно он используется только очень большими пакетами, но в этом случае, учитывая, что Netbeans хочет иметь свою собственную папку, возможно, имеет смысл поместить ее в / opt / netbeans


3
интересно. если бы я проектировал Linux, я бы поместил сетевые общие приложения в / usr / shared, а затем поместил частные локальные хост-приложения в / usr. таким образом, я мог бы поделиться / usr / shared без также, через наследование, совместного использования / usr.
Джангофан

1
Действительно хороший ответ. Мне также нравится комментарий о том, как держать вещи в стороне от системы управления пакетами.
DaveParillo

1
Определенно / выбрать "полные сторонние пакеты". Большинство установок разделяют различные двоичные файлы, библиотеки, файлы и т. Д. На разные каталоги, но когда у вас есть каталог «все в одном», с / opt легко работать.
Эйвери Пэйн,

Пара быстрых вопросов: 1) Если / usr должен быть доступным для всех машин в сети, не означает ли это, что все дочерние каталоги также будут доступны для совместного использования, что делает / usr / local видимым для других машин в сети? 2) Что такое FHS 3) Когда вы говорите о командах, необходимых для монтирования / usr, вы говорите о том, как ОС загружается, скажем, после завершения работы? Я прошу прощения за бомбардировку вопросов 7 лет спустя, но я новичок в Linux, и у меня возник тот же вопрос после просмотра руководств по установке, в которых говорится, куда помещать файлы, но не ПОЧЕМУ их помещать туда. +1 между прочим
Ungeheuer

5

На самом деле все сводится к личным предпочтениям. Я объясню мой за то, что он стоит.

/ usr, / usr / bin обычно являются местами для программного обеспечения, устанавливаемого устанавливаемой системой. Когда я устанавливаю вещи самостоятельно, я устанавливаю их в одном из нескольких мест:

  1. Если я буду использовать только скрипт или небольшую программу, я установлю ее в ~ / bin - на этом большинство моих вещей заканчивается.
  2. Если это что-то похожее на описанное вами (NetBeans) с собственным полным файловым деревом, я устанавливаю его в / opt
  3. Если это один исполняемый файл, я устанавливаю его в / usr / local / bin

Почему я различаю № 2 и № 3? Понятия не имею, это просто привычка, которую я выработал со временем. Выясняется, что / opt обычно становится глубоким деревом файлов, но в нем установлены только 2 или 3 фактических «вещи». На данный момент у меня установлены записи lampp и lotus в opt, 2 директории, в каждой из которых есть довольно большие деревья. В / usr / local / bin у меня есть 20 или 30 записей, но нет подкаталога.

Я не устанавливаю вещи в / usr / bin или / usr / sbin, потому что мне нравится хранить вещи, которые я добавляю вручную (а не часть простой установки из стандартного репозитория), отдельно.


1

В то время как Стандарт Иерархии Файловой системы действительно дает некоторое руководство. Я обнаружил, что большинству дистрибутивов нравится устанавливать пакеты в /usr/share.

Из-за этого я принял практику установки любого приложения, не установленного через менеджер пакетов (rpm / apt-get / emerge) в /usr/local. Это позволяет мне отделять приложения и библиотеки, которые не управляются с помощью управления пакетами, от тех, которые используются.

Это техника, которая помогла мне управлять моей системой под Fedora Core и Gentoo.


0

Я бы подумал, что местоположение по умолчанию - /binэто то, где почти все устанавливается по умолчанию, если используется apt-get или аналогичный ...

... Однако, когда дело доходит до более современных программ (или программ без инсталлятора), которые имеют много дополнительных файлов, мне нравится размещать их в своем собственном каталоге /bin.


3
В чем разница между / bin, / usr / bin и / sbin? / bin имеет смысл, поскольку он предназначен для файлов BINary.
Томас Оуэнс

0

Обычно они устанавливаются в несколько папок, в основном / usr, / local, / bin и т. Д. Вы можете узнать, куда устанавливается программа, из установщика GDebi (на вкладке файлы). Если вы собираетесь переместить Netbeans, я бы посоветовал переместить его в / opt, потому что именно там Google, кажется, устанавливает свои вещи.


0

Согласен с ответом Джеймса Полли, но на самом деле каталог по умолчанию имеет большой смысл, если вам не нужно делить приложение между несколькими учетными записями. Мне, например, нужно было установить Eclipse 3.0 (устаревший) для работы Flex в Linux, и я поместил его в $ HOME / eclipse3.


0

Мне нравится использовать / apps для большинства дополнительных приложений, которые я устанавливаю на нескольких серверах. Я храню копию папки в / installs / apps на моем сервере NFS. Когда я создаю новый сервер Linux, я монтирую папку installs и копирую / apps, и у меня есть много разных общих приложений на новом сервере. Я удаляю те записи, которые мне не нужны для этого нового сервера, и все готово. Ну, может быть, мне нужно запустить скрипт или три для установки переменных среды или операторов пути, но это почти то же самое, что нужно для настройки многих новых серверов.

Я пришел из Windows и .net фона. Одним из обещаний .net было то, что большинство приложений можно было установить с помощью Windows xcopy. Я ищу то же самое в Linux. Там, где это возможно, я выбираю tarball вместо RPM или yum и т. Д., Чтобы я мог выполнить развертывание в / apps с помощью cp -r и добавить приложение на свой сервер nfs для будущих развертываний.


2
Вопрос требует конвенции. Вы описали, что вы делаете, лично. Вы можете по крайней мере связать это с соглашением?
fixer1234
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.