Где установленное программное обеспечение хранится в Linux? [Дубликат]

11

Возможное дублирование:
где установлена ​​типичная программа для Linux

Я новичок в Linux, и я хочу спросить немного больше о пакетах.

В Windows я скачиваю .exeфайл и устанавливаю его. При установке я определяю путь, по которому я хочу сохранить это приложение. В этой папке у меня есть все файлы, необходимые для приложения.

Однако, когда я устанавливаю пакет в Linux с помощью yumили apt-get, я не знаю, где установлен пакет и где хранятся необходимые файлы для этого приложения. Я видел, что большинство конфигураций находятся в /etcкаталоге. Но почему Linux хранит необходимые файлы для приложения в разных каталогах?

Может кто-нибудь сказать мне, как устанавливаются пакеты, где и как они хранятся? И если мое понимание управления пакетами неверно, поправьте меня.

Сообщество
источник
Если ваш дистрибутив использует rpm, вы можете использовать, rpm -q --whatprovidesчтобы найти имя пакета для конкретного файла, а затем rpm -q -aузнать, какие файлы установлен пакет.
Дэвид Шварц
С apt-get, если пакет установлен, используйте dpkg -L PKGNAME, если он не используется apt-file list.
Тор

Ответы:

15

Многие программы (двоичные файлы / скрипты) попадают в /binили /usr/binс другими частями в различных каталогах конфигурации (часто в / под etc), как вы уже заметили.

Для любой конкретной команды вы можете проверить где

whereis prog_name

и он даст вам некоторую информацию о том, где находится эта команда. Вы также можете попробовать какие

which prog_name

Кроме того, эта графика и объяснение / примеры могут быть полезны.

Левон
источник
1
+1 для whereis - очень полезно для
но почему просто конфигурация сохраняется в отдельном каталоге?
@KOU Я не знаю истории этого, но могло бы быть так, чтобы программы могли обновляться, не путая информацию о конфигурации, так как это было бы в другом каталоге. Таким образом, разные версии могут использовать одну и ту же информацию конфигурации (при условии, что формат и т. Д. Не были изменены, т.е. были совместимы). Я просто догадываюсь здесь. Вы должны изучить историю файловой системы Unix / Linux для однозначного ответа.
Левон
1
Я не уверен в истории принятия решения о размещении всех общесистемных файлов конфигурации /etc/, но наличие одного центрального расположения для файлов конфигурации позволяет очень легко создавать их резервные копии. (Представьте себе резервные копии общесистемных файлов конфигурации в Windows, где они разбросаны по всей файловой системе и реестру ...)
Ли-Аунг Ип
@ Li-aungYip Хорошая мысль
Левон
5

В Windows, особенно в старых версиях, программы обычно хранили файлы конфигурации и непостоянные данные в своем C:\Program Filesкаталоге. Это происходит от того, как программы обычно устанавливались и запускались в однопользовательской, не сетевой, DOS-папке без прав доступа.

С точки зрения безопасности это плохая идея. Места, где живет исполняемый код, должны быть отделены от изменяемых данных. Таким образом, проще применять соответствующие разрешения для файлов, чтобы предотвратить изменение установленных двоичных файлов неавторизованными пользователями. Аналогичным образом, библиотечные каталоги, которые могут обновляться отдельно от основных исполняемых файлов, также должны находиться в отдельном каталоге.

С появлением раздражений в Vista и UAC эта традиция, наконец, начинает серьезно терять популярность.

UNIX и Linux, будучи намного более ранней многопользовательской системой, имели тенденцию отделять исполняемые каталоги от других каталогов гораздо раньше, поскольку существовала необходимость запретить пользователям, отличным от root, изменять установленные двоичные файлы. Это также то, почему /usrи даже /sbinиногда являются отдельными разделами - администратор с особым вниманием к безопасности может монтировать эти разделы только для чтения и перемонтировать их для чтения / записи, когда должна произойти установка / удаление.

Пакеты обычно устанавливаются из менеджера пакетов. Существуют различные менеджеры пакетов, такие как aptitude(Debian и производные дистрибутивы), yum(Redhat и производные дистрибутивы), pacman(забудьте, какой это дистрибутив ...) и другие.

Менеджер пакетов позволяет вам просматривать репозитории, загружать, устанавливать, запрашивать и удалять программное обеспечение, подобно сложному (и бесплатному) «магазину приложений». Он принимает на себя ответственность за обеспечение работы зависимостей и отслеживание того, что в данный момент установлено.

Обычно менеджер пакетов также позволяет выполнять те же операции с пакетом, который вы загружали вручную, вне каких-либо репозиториев. Инструменты также доступны, если вы хотите создать свой собственный из программного обеспечения, которое вы создали или скомпилировали самостоятельно.

Поскольку сам пакет НЕ является исполняемым файлом, вам не нужно запускать ненадежный исполняемый файл, который вы на самом деле не знаете, что он делает. (Windows, наконец, приходит с обновлениями, распространяя .msuвместо .exes - но .msiуже давно ...)

LawrenceC
источник
1
Число рейнольдса pacman, это для Arch Linux .
2

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

yum install yum-utils

Тогда вы можете запустить его так:

repoquery --list yum-utils

(Очевидно, замените «yum-utils» во втором наборе именем того пакета, список файлов которого вы хотели бы видеть.)

Для apt-getвы можете использовать:

dpkg -L package-name
sblom
источник
1

Обычно под /usr/bin, хотя это зависит от конкретного приложения или библиотеки, которую вы устанавливаете.

kprobst
источник
1

В Linux / Unix большинство программ обычно не попадают в один каталог, но различные его части (исполняемые файлы, файлы конфигурации, файлы журналов, документация, другие ресурсы) разбросаны по файловой системе - обычно с помощью символических ссылок. Статья Википедии более подробно описывает стандартную структуру каталогов при нормальной иерархии файловой системы, показывая различные каталоги и то , что вы можете ожидать , чтобы найти в каждом.

mgibsonbr
источник
0

/optКаталог зарезервирован для Windows , как установок , где каждый пакет имеет свое собственное дерево каталогов. Никто не использует это. Я не уверен почему; может случиться так, что добавление /opt/PACKAGE/binв ваш $PATHкаждый раз, когда вы устанавливаете пакет, слишком раздражает.

Алан Карри
источник
/optкажется, в основном используется коммерческими / несвободными программными пакетами, такими как MATLAB.
Ли Аунг Ип
На моем Ubuntu 12.04 устанавливается Google Chrome, /optа затем и LibreOffice 3.5, который я установил прямо отсюда .
0

Программное обеспечение в Linux немного отличается по парадигме от Windows или Mac. В них исполняемый файл и все его вспомогательные файлы устанавливаются в одну папку: Windows обычно хранит их c:\Program Files\program name, а Apple - в /Applications/program.app. Под Linux есть более ... коммунальная структура. Двоичные файлы обычно находятся в /usr/binконфигурации всей системы /etc, пользовательская конфигурация обычно находится в ~/.program. Есть библиотеки, есть /usr/libфайлы поддержки (например, рисунки) и /usr/share/programт. Д. Есть даже стандарт, предлагающий, куда все идти.

Программы обычно устанавливаются менеджерами пакетов, rpmи dpkg; они автоматически ищутся и извлекаются (включая управление зависимостями) yumи aptitude/ apt-get, соответственно. На техническом уровне пакеты представляют собой простые сжатые файлы (я считаю, что rpm и deb оба .tar.gz). Эти архивы содержат зеркало фрагментов файловой системы из корневого каталога, куда идут файлы (например, файл, в который предполагается установить, /usr/bin/programбудет находиться в usr/bin/programсоответствующей папке в пакете).

Чтобы найти информацию о конкретном пакете, используйте менеджер пакетов для своей системы, как объяснили другие.

Kevin
источник
0

Страница man hier может дать некоторую информацию

AnonymousLurker
источник
2
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится.
MaQleod
@MaQleod Если вы обеспокоены тем, что ссылка может стать недействительной, я сделал ссылку только для удобства. Я мог бы просто написать «man hier» в виде обычного текста, так как вы можете найти эту man-страницу в любом распространенном дистрибутиве Linux, я думаю.
AnonymousLurker
2
«см. руководство» также не является подходящим ответом, это комментарий. Ответы должны действительно ответить на вопрос. Как это отвечает на поставленный вопрос? Насколько важен иерархический список? Почему ОП (или кто-либо еще) считает этот ответ заслуживающим внимания? Скопируйте соответствующие части ссылки (или справочную страницу) и объясните, почему они важны в контексте вопроса, тогда вы ответите на вопрос, а не просто сделаете комментарий.
MaQleod