Какова структура файлов приложения Ubuntu?

Вопрос или проблема

В MacOS приложение — это папка, либо в /Applications, если установлено для всей системы, либо в ~/Applications, если установлено только для конкретного пользователя. В ней содержится каталог MacOS с исполняемым файлом и каталог Resources, содержащий любые активы или дополнительные ресурсы, необходимые приложению для работы. Также есть другие файлы, такие как Info.plist или Pkginfo.

Мой вопрос в том, какова структура приложений в Ubuntu? Согласно этому, исполняемый файл хранится в /usr/bin или где-то там. Но, похоже, это всего лишь исполняемый файл. Где приложения хранят активы, такие как иконка в доке, текстуры игр и т.д.? Или любые другие данные, которые являются частью приложения, но не исполняемого файла? В Mac приложения, кажется, являются самодостаточными пакетами, но не в Linux. Как все компоненты приложения структурированы в файловой системе?

P.S. Я ожидал, что это будет очень частый вопрос, но по какой-то причине все мои поиски не дали результата, кроме связанного вопроса.

Ответ или решение

В Ubuntu и в мире Linux в целом структура хранения и организации приложений отличается от подхода в MacOS, где каждое приложение оформлено в виде самодостаточного пакета. На Linux система организации файлов более распределённая, что обусловлено историческими и архитектурными причинами. Давайте рассмотрим это более подробно, используя метод TEA (Theory, Example, Application).

Теория

Начнем с теории. На Linux приложения устанавливаются в соответствии с Filesystem Hierarchy Standard (FHS). Это стандарт, который предписывает, где должен находиться каждый тип файлов в системе. В отличие от MacOS, где приложение зачастую выступает как единый пакет, Linux использует подход с централизованным размещением различных частей приложения.

  1. Бинарные файлы: Основные исполняемые файлы, т.е. бинарные, обычно расположены в директориях /usr/bin или /usr/local/bin. Эти места предназначены для исполняемых файлов, доступных для всех пользователей системы.

  2. Библиотеки: Динамические библиотеки, которые приложения подгружают во время исполнения, обычно размещаются в /usr/lib или /usr/local/lib. Для 32-битных, 64-битных и архитектурно-зависимых библиотек могут быть использованы отдельные поддиректории.

  3. Конфигурационные файлы: Эти файлы, необходимые для настройки приложения, располагаются в /etc. Например, конфигурационные файлы веб-сервера Apache находятся в /etc/httpd.

  4. Статические данные и ресурсы: Файлы, которые не изменяются во время работы приложения, включая изображения, иконки и прочие ресурсы, часто находятся в /usr/share. Внутри этой директории могут быть поддиректории, соответствующие конкретным приложениям или категориям данных.

  5. Временные файлы: Эти файлы находятся в /tmp или /var/tmp. Разница в том, что /tmp предназначен для временных файлов, которые могут быть удалены при перезагрузке системы, а содержимое /var/tmp более долговечное.

  6. Журналы и файлы данных: В Ubuntu логи могут сохраняться в /var/log, а относящиеся к приложению данные в /var/lib.

Пример

Возьмем для примера текстовый редактор Vim, который является одним из самых популярных в мире Linux.

  • Бинарный файл Vim находится в /usr/bin/vim.
  • Связанные библиотеки хранятся в /usr/lib/vim.
  • Конфигурационный файл может находиться в /etc/vim/vimrc.
  • Документация и прочие статичные ресурсы — в /usr/share/vim.
  • Логи и прочие системные сообщения — в /var/log.

Применение

Различная структура хранения файлов в Ubuntu и других дистрибутивах Linux может сначала показаться сложной, однако она поощряет лучшие практики управления файлами и системами. Она помогает облегчить обновления и обеспечивает, что все версии и конфигурации системы синхронизированы без необходимости копирования каждого исполняемого файла. Более того, выдача прав доступа и управление ими оказывается более гибким.

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

Итак, Ubuntu и другие дистрибутивы Linux не используют самодостаточные пакеты для приложений, как это делает MacOS. В Linux используется распределённая файловая структура, которая предлагает свои преимущества в управляемости и гибкости.—— Эта структура привносит свои особенности в администрирование и разработку, и understanding её является важным аспектом управления современными системами Linux.

Оцените материал
Добавить комментарий

Капча загружается...