Re[3]: file system hierarchy
От: velkin Земля  
Дата: 15.12.25 15:47
Оценка:
Здравствуйте, Лазар Бешкенадзе, Вы писали:

V>>Если хочешь сделать как в Windows, тогда используй папку /opt.

ЛБ>В своем сообщении я дал ссылку на описание стандартной иерархии в документации — у меня такая. Директории /opt нет и в корне создавать я сам ничего не буду.

/opt это стандарт для распространения из нестандартных пакетов для операционки.

https://ru.wikipedia.org/wiki/FHS
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

У тебя скорее всего основная операционка для десктопа винда, а юниксы только по работе. Я когда-то годами использовал только основной репозиторий и директория /opt мне была не нужна. Только когда мне стала нужна последняя откомпилированная версия софта, причём с сайта разработчика, а не из репозиториев я и открыл для себя папку /opt, потому что софт ставился туда.

Мораль здесь в том, что /usr/local тоже имеет стандартное предназначение, и /etc тоже имеет стандартное предназначение. Если в /usr/local был make install, то должен быть и make uninstall. Ну и всё в таком роде. Но в целом из исходников установка получается грязной и люди даже в /usr/local рекомендуют сразу компилировать установочные пакеты, которые использует текущая операционка.

В принципе Pzz тебе уже дал ответ делать как удобно, потому что распространять ты не собираешься. Это значит тебе не нужен ни /opt, ни /usr/local. И то что ты намусорил сразу в папке пользователя, а не создал в ней папку /work, /projects или что-то от себя то это тоже твоё дело.

Просто вот такое
ЛБ>Расклад как в Windows позволяет на одном компьютере держать три версии, одну stable — /usr/local/myprog/ для проходимцев из Internet, и две в разработке /home/user1/myprog/ и /home/user2/myprog/. Каждая слушает на своем порту номер которого берется из ./myprog.conf.
не имеет смысла.

Всё это нужно держать в папке с git, или отдельную для проекта, или как у меня общий монорепозиторий для всего. Внутри stable это или тег git, или просто копипаста в какую-нибудь папку версии, или сразу оба. Пример тегов или папок, 0.1, 0.2, 0.3-beta1.

Если другим людям нравится /usr/local, вот пусть и качают твой репозиторий git с твоей программой туда, это их дело. А для тебя важнее должны быть резервные копии в git твоей программы, нежели кто куда это бросает, раз ты всё равно не делаешь пакеты для распространения ни для FreeBSD, ни сторонние.

Но особо не важно, сам потом поймёшь. Я в принципе тоже много лет занимался подобной ерундой, пока не стал более продвинутым пользователем. Прямо как твои советчики, типа давайте кинем исходник в /usr/local. Ого, так ведь в инструкции написано для чего-то там не знаю для чего, но надо.

А сейчас у меня папки больше напоминают то, что видно в проектах на том же sourceforge. Первичен репозиторий git причём где-нибудь на надёжном сервере, потому что операционка на десктопе у тебя без году неделя навернётся и что будешь делать.

Вот ты пишешь, я создам /usr/local/myprog, а не /usr/local/bin, например, в целях тестирования. А вопрос, зачем пользователи сделали папку /usr/local/bin, там же и с названиями программ могут быть пересечения.

А затем, что /usr/bin из коробки внесена в системные пути, то есть программы можно запускать не набирая полный путь. А /usr/local/bin или внесена или может быть внесена вручную. То есть ты не сможешь написать myprog и чтобы у тебя программа запустилась из случайной папки вроде /usr/local/myprog.

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

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

Если хочется понять для чего сделано то или это посмотри команду PATH.

Обычно в переменную $PATH входят каталоги /bin, /usr/bin и /usr/local/bin.

Ну моя практика показывает, что /usr/local/bin может входить, а потом со временем может и не входить. А вот /bin и /usr/bin входят сразу из коробки. Причём всё это можно изменить для текущей консоли когда угодно, да и в целом для операционки.

И раз уж затронута эта тема, то исходник копируется в /usr/local/src, а не в /usr/local. То есть должно быть /usr/local/src/myprog, а после компиляции с помощью make файлы должны распределиться по подпапкам /usr/local, таких как /usr/local/bin и так далее.

А если ты не хочешь соблюдать эту логику, и делаешь /home/user/myprog, тогда озаботься, чтобы был хоть какой-нибудь репозиторий вроде /home/user/myprog/.git и далее можно использовать .gitignore и теневую сборку, то есть непосредственный билд в /home/user/build*-myprog.

Можно, кстати, делать билды и в /usr/local, при том, что она сама может лежать где угодно. В конце концов программа твоя и специально копировать её в /usr/local/src нет смысла. В общем со временем сам поймёшь и документацию будешь читать не формально, а по назначению.

Я вот открыл сейчас твою ссылку.
https://man.freebsd.org/cgi/man.cgi?query=hier&sektion=7&format=html

/usr/ contains the majority of user utilities and applications
-local/ local executables, libraries, etc, installed by pkg(7) or ports(7)
--bin/ local user utilities, see intro(1)
--etc/ local program configurations
--include/ local library headers
--lib/ local libraries
--lib32/ local 32-bit compatability libraries
--libdata/ local utility data files
--libexec/ utilities executed by local utilities
--sbin/ local administration utilities
--share/ local architecture-independent files
--share/doc/ local documentation
--share/doc/freebsd/ articles, books, FAQ, and handbooks available from the FreeBSD project
--share/man/ local manual pages; see man(1)

Где папка /usr/local/src? Теперь я вспоминаю твой комментарий.

ЛБ>В своем сообщении я дал ссылку на описание стандартной иерархии в документации — у меня такая. Директории /opt нет и в корне создавать я сам ничего не буду.


А, ну понятно, значит по твоей логике и /usr/local/src создавать тоже не надо. Я не считаю себя каким-то экспертом, но прочитанные когда-то давно пару статеек на эту тему всё же сделали из меня больше, чем совсем уж новичка. Действуя формально и опираясь на взятый откуда-то ограниченный источник знаний ты придумал /usr/local/myprog.

В чём причина? Ну потому что вот есть документация, о которой неизвестно, что она неполная. И есть желание сделать как в винде. И получатся какая-то ерунда бесполезная как для юниксов, так и для тебя. Потому я и говорю, благодаря поиску с помощью нейронок и книг программисты вступают в эру повышенной экспертности.

Причём экспертность эта самих программистов, а не просто внешних инструментов. Проблема здесь всё та же, Почему программисты прошлого были умнее (26.05.2022). Слишком быстрый перескок на новые технологии в основе которых лежат старые технологии, причём не сложные для понимания, просто их учат не все, или лучше сказать не только лишь все.

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