SU.C_CPP----------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 19 из 100
 От   : Valentin Nechayev                   2:463/68.300      07 май 23 08:02:28
 К    : Eugene Muzychenko                                     07 май 23 08:48:07
 Тема : Развитие языка
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 2:463/68.300 64573801
@REPLY: 2:5000/14 6425f00c
@CHRS: CP1125 2
@TZUTC: 0300
@TID: hpt 1.2.4-release/bsd 30-05-03
 Hi,

 >>>> Eugene Muzychenko wrote:

 EM> Hа основании чего разработан стандарт, требующий отделять собственные
 EM> библиотеки приложения, которые гарантированно не потребуются никому
 EM> другому? Ты точно понимаешь этот стандарт правильно?

Библиотеки отделяются по одной из трёх типовых причин:
 1. Есть несколько целевых бинарей с общим кодом, который надо
выносить в библиотеку.
 2. Авторы полагают достаточную вероятность их использования чем-то
ещё, а не основным приложением. Скорее всего - видят реальные примеры или
хотя бы запросы для них.
3. Удобство тестирования библиотеки отдельно от приложения.

 Это не всегда значит использование установленной в финальную версию
so`шки - часто используются промежуточные *.a. Hо если библиотеки ставятся,
их очень желательно ставить отдельно, в $prefix/lib[$platform_suffix].

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

Да.

 EM> Если
 EM> да, то хотелось бы узнать определение "свалки и бардака" с точки
 EM> зрения линукса. :)

 Когда соединяется вместе то, что не должно соединяться по каким-то
причинам, включая:

1. Платформенно-зависимые против платформенно-независимых компонентов.
Типа /usr/lib/x86_64-linux-gnu против /usr/share.

2. Исполняемые пути против неисполняемых.
/usr/bin, /usr/libexec... против /usr/libdata.

 3. То, что должно вызываться напрямую пользователем, против того, что
не должно вызываться. То же и для более двух уровней.
 Где-то, например, "moo buka" и "moo zuka" будут вызывать /usr/bin/moo
который после тщательной проверки и подготовки данных будет звать
/usr/libexec/moo/buka и /usr/libexec/moo/zuka соответственно.

 4. То что требует бэкапа для сохранения состояния текущей машины
(как /etc) против того, что не требует, потому что восстанавливается из
дистрибутива.

 5. Управляемое пакетным менеджером против установленного другими
средствами (snap, ручная компиляция для /opt или /site...)

Это с ходу, больше соображений в документе по FHS.

 Разумеется, идеала нет. Постоянно кто-то что-то нарушает, особенно в
корпоративной среде. В одном проекте свалка напрямую в /var без подкаталогов. В
другом конфиги в bin. Hо таких всё-таки малая часть от основного
использования.

 EM> Если ввести отдельные каталоги для текстов и изображений, это тоже
 EM> будет работать десятилетия. А на вопросы можно будет привычно отвечать
 EM> "так заповедано предками", и говорить, что "всех устраивает". :)
 EM> Может, большинство просто никогда не задумывалось?

 В этом тоже может быть смысл, если, например, разные FS будут
оптимизированы под мелкие или сверхкрупные файлы.
 Даже сейчас такое есть в плане количества инодов, но потеряло
актуальность с распространением FS с журналированием метаданных (ext4, UFS с
журналом), поэтому сейчас не актуализируется. Hо может, если опять станет важно.

 Про "не задумывается" неправда, постоянно думают. Вон например в FHS
много лет исключали полезность libexec-каталогов, сейчас восстановили хотя бы
частично.
Активно хотят свести вместе /bin и /usr/bin, аналогично большинство в /usr,
смысл разделения почти пропал. Вместо /var/run теперь /run. И прочая и прочая.
Мир плавно мутирует, рекомендации - вместе с ним.

 EM> Согласен. А текстовый процессор? Я с OO, конечно, почти не имел дела,
 EM> но что-то не припомню, чтоб он для поиска в документе выгружал его в
 EM> текстовый файл, прогонял по нему стандартный grep, после чего разбирал
 EM> его вывод.

 Логику grep легче и включить, особенно в монстра размера OO. Во
всём должна быть мера.

 EM> Можно-то оно можно. Hо как много ты знаешь сколько-нибудь сложных и
 EM> ходовых продуктов (текстовые и графические редакторы, средства
 EM> разработки ПО, отладчики, средства разработки электронных схем и ИС,
 EM> средства научных расчетов и моделирования и т.п.), которые следуют
 EM> unix way, запуская для выполнения каждой функции полностью
 EM> изолированную программу, работающую в отдельном процессе, и общаясь с
 EM> нею средствами межпроцессного общения?

Ты как-то странно понимаешь unix way.
 Если бы он соблюдался, как ты описываешь, на 100%, то, например,
awk звал бы grep для каждого случая проверки шаблона в строке.

 Фактически, именно эта часть классического понятия "unix way" заточена
на то, что пока не становится слишком дорого - максимум кода пишется
последовательно на
1) шелле - всё что ещё можно им поддерживать;
2) скриптовалках (Perl/Python/etc.);
и только после этого включать компилируемые средства.

 Есть примеры продуктов - Git, Fidogate - которые ровно так и
делались. Пока нет причины использовать более низкоуровневые средства - остаются
на уровне повыше.

 EM> Подозреваю, что это никак не зависит от мира. Если есть запрос на
 EM> доступ к функциям ПО в пакетном режиме, то в винде это делается, как я
 EM> уже описал - вынесением кода в DLL, к которой могут обращаться как
 EM> гуевые, так и консольные процессы.

 Это ты описываешь винду начиная где-то так с момента массовой
рекламы использования PowerShell, который стал самопальным аналогом Perl+Python
как скриптующего клея.
 Да, с этого момента оно стало почти таким же - с поправкой на
десяток мелких деталей типа того, что для скриптов на PS постоянно всплывают
и исчезают через секунду консольные окна, заставляя пользователя
нервничать.
 Hо unix way старше лет на 25, за это время дети родились, выросли
и начали делать своё.

 VA>> Hапример, установка по-умолчанию Linux Mint или, скажем, Debian,
 VA>> компилятора не содержит. Что я делаю не так? ;)

 EM> Ты - не знаю. :) А вот люди, продвигающие идею собирать любой софт для
 EM> определенной системы непременно под самой этой системой, явно делают
 EM> что-то не так. :)

 Кросскомпиляции уже лет 60 в принципе. Для сборки под другую систему
есть контейнеры прочее.
Мы собираем, например, под Ubuntu/amd64 софт под RHEL/amd64, Yocto/aarch64,
Debian/arm32 и т.д.

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

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


-netch-

... И этот парашютист задолбал...

---
 * Origin: Dark side of coredump (2:463/68.300)
SEEN-BY: 50/109 250/25 301/1 341/66 450/1024 451/31
452/28 166 455/19 460/58
SEEN-BY: 463/68 877 1331 467/4 888 4500/1 5000/111
5001/100 5005/49 5010/352
SEEN-BY: 5015/42 46 5020/113 545 620 715 830 846
848 1042 4441 12000 5022/128
SEEN-BY: 5030/49 115 1081 5036/26 5049/1 5053/51
5054/89 5058/104 5059/37
SEEN-BY: 5064/56 5083/1 6090/1
@PATH: 463/68 5020/1042 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх