Re: file system hierarchy
От: velkin Земля kisa.biz
Дата: 15.12.25 04:28
Оценка:
Здравствуйте, Лазар Бешкенадзе, Вы писали:

ЛБ>Мне тут предложили файл конфигурации хранить в /usr/local/etc/, временные файлы в /tmp/myapp/ или /var/tmp/myapp/. Как я понимаю в этом раскладе исполняемый файл должен идти в /usr/local/bin/.

ЛБ>Мне это все очень не нравится и я решил все свои файлы держать, как принято в Windows, в одной директории. Пусть это будет /usr/local/myprog/. Более того, исполняемый файл я назвал myprog.exe.

Если хочешь сделать как в Windows, тогда используй папку /opt. Если кратко, то /usr/local это тот же /usr, только для себя. А вот сторонние инсталляторы не из репозиториев и портативные версии копируют в /opt. В /usr будут устанавливаться версии программ, которые пришли из репозиториев в виде пакетов таких как *.deb, *.rpm или других, в зависимости от операционки.

А вот в /usr/local скачивают исходники программы и там их сами компилируют. Это папка не для разработки в ней, а для скачивания исходников и компиляции в ней. Потому /usr/local повторяет структуру папок /usr. Но если делаешь инсталлятор или портативку как в Windows, когда программа должна оказаться как в папке Program Files, то тогда выбирай /opt.

Ну и бла бла бла. Вот тебе выжимка из гугловского ии.
https://www.google.com/ai

Хотя перед этим ещё напишу как я вижу путь к экспертности.
1. Читай книги (например, Таненбаума).
2. Пользуйся выжимками.
Или и то и другое.

Быстрые советы людей сейчас превратились вот в такой вот поиск, вместо тех же форумов с ответами, откуда ии тоже дерёт данные. А для глубокой экспертности нужно читать книги и думать в процессе.

Я к тому, что спрашивать на форуме это уже практически ушло в прошлое. Это долго и неэффективно. Не зря форумы программистов превратились в балабольство ни о чём. Потому что действительно не нужно и джуны тоже понятно почему резко стали не нужны.

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

для чего нужна папка /opt в unix

Папка /opt в Unix-подобных операционных системах (включая Linux) предназначена для установки дополнительных (optional) пакетов прикладного программного обеспечения, которые не являются частью базовой операционной системы.

Основные характеристики и назначение /opt:



Примерами программ, которые могут устанавливаться в /opt, являются Google Chrome, Spotify, или другие крупные проприетарные приложения.


для чего нужна папка /usr/local в unix

Папка /usr/local в Unix-подобных системах имеет схожее назначение с /opt, но служит немного иной цели в рамках иерархии файловой системы (FHS). Она предназначена для размещения локально установленного программного обеспечения, которое собирается и компилируется вручную системным администратором или пользователем.

Основные функции и отличия /usr/local:

Основное назначение


Это место для программ, которые вы устанавливаете "вручную" из исходных кодов (например, с помощью команд ./configure, make, make install), а не через системный менеджер пакетов (вроде apt, yum или dnf).

Ключевые отличия от /opt и других папок


Сравнение с /opt


Характеристика /usr/local /opt
Метод установки Чаще всего ручная компиляция из исходников (make install). Чаще всего копирование готового пакета от стороннего вендора.
Структура Соблюдает внутреннюю иерархию (bin, lib, share). Каждое приложение имеет свой собственный изолированный подкаталог (/opt/appname/).
Назначение Расширение системных утилит, установленных пользователем. Установка полностью независимых, сторонних приложений.
Таким образом, /usr/local — это "песочница" для ваших собственных скомпилированных программ, которая позволяет держать их отдельно от основных системных файлов, поддерживаемых операционной системой.


Но это я как бы давно знаю как пользователь. Но предположим я бы не знал, тогда напрашивается запрос.

в какую папку устанавливать программы в unix

Выбор папки для установки программ в Unix или Linux зависит от нескольких факторов:


Вот краткое руководство по основным папкам:


Папка Назначение Пример использования
/usr/bin Системные исполняемые файлы. Сюда устанавливаются программы, которые поставляются с вашей операционной системой (например, ls, grep, python). Вы не должны устанавливать сюда программы вручную.
/usr/local Локально скомпилированные программы. Используется для программ, которые вы скачали в виде исходного кода и скомпилировали вручную (используя make install). Это стандартное место для локальных расширений системы. Установка последней версии NodeJS из исходников.
/opt Сторонние (опциональные) приложения. Используется для полностью самостоятельных программ, которые распространяются сторонними поставщиками в готовом виде (например, Google Chrome, Spotify, Oracle Database). Установка проприетарного ПО.
~/.local/bin Программы только для вашего пользователя. Если у вас нет прав администратора (root) или вы хотите установить программу, доступную только вам. (Символ ~ обозначает ваш домашний каталог, например, /home/user/). Установка персональных скриптов или утилит.

Рекомендации:



Теперь что касается практики. Тот же Qt как раз установит себя в /opt, как и много других программ. Но файлы конфигурации своей программы на Qt не обязательно должны лежать в папке с программой. Я создавал файлы *.ini из своей программы, и выяснил, что их ещё потом надо удалять при деинсталляции.

А между тем QSettings предлагает хранить настройки в Windows, GNU/Linux, MacOS и Android в разных местах. Для Windows это реестр 32 и 64 битной ветки, а для того же GNU/Linux тоже есть папка у пользователя, ну и так далее.

В общем я веду к тому, что саму программу с библиотеками и ресурсами можно запихнуть в /opt, а настройки можно хранить где-то по умолчанию в другом месте, в котором по крайне мере будет разрешение на запись и что не придётся потом чистить деинсталлятором.

Я сейчас не буду смотреть куда та же QSettings дела у меня файлы настройки, когда не записываешь их принудительно в *.ini в папку с программой, но предположим такой запрос.

в какой папке qsetting хранит настройки в linux

В Linux QSettings по умолчанию хранит настройки в файлах формата INI в следующих местах:


Обратите внимание:



Скорее всего это был $HOME/.config, проверять не буду. Но вряд ли /etc, хотя можно было бы их записывать куда угодно.

Причём заметь, всё это относилось к развёртыванию программ на компьютерах пользователей. А разрабатывать программу можно где-нибудь в $HOME/work (/home/user/work), или примонтированный диск /mnt/data00 можно виндовый, или ещё где.

Но как я уже сказал, посыл моего комментария в том, что по сути всё можно ... думаю ... нагуглить в режиме ии или ещё где. Каких-то особых фишек здесь нет чтобы их расписывать. Советы от случайных людей могут быть ещё и хуже галлюценерации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.