10

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

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

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

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

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

8 ответов8

12

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

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

whereis prog_name

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

which prog_name

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

4

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

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

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

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

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

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

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

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

2

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

yum install yum-utils

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

repoquery --list yum-utils

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

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

dpkg -L package-name
1

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

1

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

0

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

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 в соответствующей папке пакета).

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .