Что такое Linux, эквивалентный C: \ Program Files?


64

Я понимаю, что в Windows, а также в Linux и Unix программное обеспечение может быть установлено в любой каталог. Также, если пакеты установлены с использованием системы упаковки дистрибутива, файлы будут размещены в правильном месте.

Но иногда при установке программного обеспечения запрашивается путь для размещения файлов. В случае дистрибутива Linux, где это место по умолчанию ( C:\Program Filesили C:\progra~1эквивалентное)? Различен ли он для разных дистрибутивов? Если да, то где это будет RHEL, Suseи Ubuntu?

Ответы:


60

Проект документации Linux содержит описание иерархии файловой системы Linux, где они объясняют различные папки и их (частично историческое) значение.

Как xenoterracide уже указывалось /binи /optстандартные каталоги , которые можно сравнить с «Program Files» на Windows.

/binсодержит несколько полезных команд, которые могут быть полезны как системному администратору, так и непривилегированным пользователям. Обычно он содержит оболочки , как bash, cshи т.д .... и часто используемые команды , такие как cp, mv, rm, cat, ls.

( цитируется по TLDP )

/optЗарезервировано для всех программ и дополнительных пакетов, которые не являются частью установки по умолчанию. Например, пакеты StarOffice, Kylix, Netscape Communicator и WordPerfect обычно находятся здесь.

( цитируется по TLDP )


9
Разве / opt не используется только для пакетов, которые не содержатся в репозиториях? Папки приложений для Inkscape, GIMP, Rhythmbox и т. Д. Находятся в / usr / share. Разве это не будет эквивалентом?
c76c3r8c42b347r8

5
См. Linuxfoundation.org/en/FHS для получения более свежей информации об иерархии файловой системы (FHS). (Примечание: в данный момент сайт не работает, но вскоре должен вернуться).
jw013

@Toxicbits: по крайней мере, в Gentoo в / opt есть бинарные пакеты, особенно те, которые не могут быть установлены в / usr из-за нестандартной иерархии файловой системы.
Maciej Piechotka

TLDP кажется отличным! Ну, на заметку; В первый раз, когда я увидел TLDP, я подумал: «слишком долго, не ... пик? что?»
Эге Озкан

3
Это неверно / bin содержит только исполняемые программы. Каталог программных файлов Windows содержит подкаталог для каждого установленного приложения, который содержит все исполняемые файлы, библиотеки DLL, файлы данных и все остальное, что необходимо / поставляется вместе с приложением.
Псуси

45

Прямого эквивалента нет. Структура каталогов очень отличается. В Windows у вас есть один каталог для каждого установленного пакета / программного обеспечения, который содержит все файлы, связанные (например C:\Program Files\MyProgram). В Linux каждое программное обеспечение «разбросано» по многим каталогам в соответствии с типом файла и некоторыми другими правилами.

В качестве примера мы можем рассмотреть, где установлены различные файлы, связанные с xscreensaverпрограммой:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

Не волнуйтесь, как правило , когда установщик спросит , куда установить на правильный ответ является один из следующих: /, /opt, /usr,/usr/local

Как видите, довольно все (1) файлы xscreensaverустановлены в /usrсоответствии с неким простым правилом: исполняемые файлы в /usr/bin, страницы руководства в /usr/share/man, документация в /usr/share/doc/packages/PROGRAMNAMEи так далее.

Когда установщик запрашивает установку prefix, обычно он хочет указать базовый путь, по которому устанавливается программа. В моем xscreensaverпримере это так /usr.

Как простое правило: /должно содержать только программу, необходимую для загрузки системы (как C:\windows\system32), /usr/localдолжно содержать программы, которые нужны только на этом уникальном компьютере, /opt(2) все дополнительные программы, которые имеют нестандартную структуру каталогов и /usrвсе стандартное программное обеспечение ,

В любом случае, существует стандарт, который детально определяет все эти правила: Стандарт иерархии файловой системы

(1) общесистемные файлы конфигурации должны находиться в /etc

(2) довольно устаревший под Linux


/optявляется предпочтительным для стороннего программного обеспечения в /usr/localтечение достаточно долгого времени.
Стив

7
Просто объяснение, /usr/shareназывается «поделиться», потому что оно совместно используется различными архитектурами (документация, сценарии, изображения), в то время /usr/lib*как для архитектурно-зависимых файлов (а не исполняемых файлов, которые /usr/bin).
eudoxos

12

Ususually, /bin, /usr/bin, /usr/local/bin, или /opt/bin. Я думаю /usr/binи /opt/binближе всего к программным файлам, потому что обычно они предназначены для не критичных для системы двоичных файлов, которые устанавливаются системным администратором, хотя в отличие от окон, оба из них содержат программы, установленные с помощью менеджера пакетов. Где /usr/local/binдля не дистрибутивного программного обеспечения. /binдля системы критических двоичных файлов нравятся /bin/sh.


почему четыре варианта? /bin, /usr/bin, /usr/local/binИли /opt/bin. Разве нет одного стандартного местоположения? Причина, по которой я спрашиваю, заключается в том, что я устанавливаю программное обеспечение на нескольких виртуальных машинах, а расположение по умолчанию соответствует тому, какой раздел занимает наибольшее пространство Я хочу изменить пространство разделов на каталог, куда обычно направляется программное обеспечение, и чтобы программное обеспечение не размещалось по-разному во всех виртуальных машинах.
Томас

1
Стандарт определяет несколько местоположений. IDK, почему путь не указан, но здесь есть ссылка на кэшированный FHS, который дает более подробное описание того, что это такое, и на самом деле это во многом зависит от того, что вы устанавливаете. Кроме того, RHEL, Suse и Ubuntu различаются, поэтому они могут поместить одно и то же в несколько разных местах. /optнапример, обычно используется для проприетарного программного обеспечения.
ксенотеррацид

Также обычно ... как правило, все они находятся в одном разделе ... иногда /usr/это отдельный раздел.
ксенотеррацид

1
Некоторые люди (например, проект Херда) утверждают, что /binи /usr/binдискриминация устарела сейчас; Исторически система критичных материал будет в /bin, /lib... (непосредственно в корневом каталоге), а /usr/usr/bin, /usr/lib...) будет установлен позже (возможно через сеть), не являются необходимыми для базовой функциональности системы.
eudoxos

1
@ Томас, /optне должен выходить . В прошлом некоторые люди думали, что было бы неплохо иметь некоторые приложения в другом месте, чем все другие приложения. /binнаходится в корневом разделе. Поскольку в некоторых системах пространство в корневом разделе ограничено, второстепенные двоичные файлы (т. Е. Все пользовательские приложения) были перемещены в /usr/bin.
января

8

Взгляните на man hierэто «Описание иерархии файловой системы».


3

Как уже отмечали другие, программы, установленные через менеджер пакетов, разбросаны по нескольким каталогам. Хотя бинарный файл обычно обнаруживается /usr/bin, в нем находятся системные файлы конфигурации /etcи т. Д.

Если приложение не установлено через менеджер пакетов, файлы должны быть установлены в месте, где они не мешают менеджеру пакетов. Это место есть /usr/local.

Если вас попросят указать путь установки, наиболее распространенным вариантом будет /usr/local/appname


3

Введите echo $PATHсвой терминал, чтобы увидеть пути, по которым оболочка будет искать команду. Идет проверка файла в порядке его печати.


1
Это не отвечает на запрос ОП.
Франческо Турко

1

Ну, вы не найдете все свои решения, /binи sbinпотому что они содержат в основном системные команды (то есть команды, используемые системой).

/usr/binВ идеале можно назвать "Program Files"мир Unix. Что касается /optочень немногих пакетов, которые используют это расположение для установки, то же самое относится и к пакетам, использующим /etc/или /varрасположенным как

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