расположение по умолчанию postgresql при установке через apt-get


15

Когда вы устанавливаете postgresql 14.04, он прикрепляет основную программу сервера postgres по адресу:

/usr/lib/postgresql/9.3/bin/postgres

каталог данных, в котором будут храниться все кластеры базы данных:

/var/lib/postgresql/9.3/main

и файл конфигурации по адресу:

/etc/postgresql/9.3/main/postgresql.conf

Теперь я могу понять, почему postgresql.conf и другие файлы конфигурации хранятся в /etc/postgresql/9.3/main. В конце концов, / etc - это место, где файлы конфигурации хранятся в системе Linux.

Однако зачем размещать область хранения базы данных в / var / lib? Я могу понять / var, так как это место для нестатических данных и баз данных нестатических. Но почему именно / var / lib?

Кроме того, я считаю, что / bin для программ, необходимых для загрузки. / usr / bin для программ, включенных в дистрибутив. и / usr / local / bin должны быть для программ, не включенных в дистрибутив, но доступных для общесистемного использования. И, таким образом, поскольку postgresql предназначен для общесистемного использования, он должен быть доступен в / usr / local / bin. Тем не менее, они помещают его в / usr / lib, что я понятия не имею, почему.

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

Ответы:


11

В стандарте иерархии файловой системы `/ var / lib / указывается как (курсивом - самая важная часть):

5.8.1 Цель

Эта иерархия содержит информацию о состоянии, относящуюся к приложению или системе. Информация о состоянии - это данные, которые программы изменяют во время работы и которые относятся к одному конкретному хосту. Пользователям никогда не нужно изменять файлы в / var / lib для настройки работы пакета.

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

Приложение (или группа взаимосвязанных приложений) должно использовать подкаталог / var / lib для своих данных. Существует один обязательный подкаталог, / var / lib / misc, который предназначен для файлов состояния, которым не требуется подкаталог; другие подкаталоги должны присутствовать, только если рассматриваемое приложение включено в дистрибутив.

/ var / lib / - это местоположение, которое необходимо использовать для поддержки всех пакетов распространения. Разные дистрибутивы могут использовать разные имена, конечно.

Вкратце: / var / lib / для данных, которые используются локально.

Поэтому имеет смысл поместить данные базы данных в каталог / var / lib / {mysql | postgress} /, но ... FHS - это стандарт, созданный в основном для использования дистрибутивами . Как пользователь, вы можете свободно размещать свои данные в любом месте, и это в основном вопрос мнения.


Вы неправильно понимаете слово «местный». / usr / local / bin / предназначен не для системного программного обеспечения, а для вашего собственного программного обеспечения (в общем, система не должна затрагивать что-либо, имеющее «локальный» вход). Как объясняет FHS:

/ USR / местные /

4.9.1 Цель

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

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


Теперь для / usr / lib / .

4.7.1 Цель

/ usr / lib содержит объектные файлы, библиотеки и внутренние двоичные файлы, которые не предназначены для непосредственного выполнения пользователями или сценариями оболочки. Приложения могут использовать один подкаталог в / usr / lib. Если приложение использует подкаталог, все зависящие от архитектуры данные, используемые исключительно приложением, должны быть помещены в этот подкаталог.

postgressql, вероятно, демон запускается при загрузке? Если так, то имеет смысл поместить это здесь. Вы не должны использовать команду самостоятельно, но запускаете службу. Файлы в / usr / lib /, как правило, имеют своих собственных пользователей и группы и / или демонов, которые ограничивают доступ к / var / lib (например, только mysqld может получить доступ к / var / lib / mysql /; это будет то же самое для PostgresSQL)

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