The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Для Qt 6 развивается пакетный менеджер. Выпуск Выпуск Qt for..."
Отправлено Ordu, 23-Дек-20 15:55 
>> Я полагаю дело в том, что разработчику проекта максимально упрощается задача создания "пакета", который может быть автоматически скачан вместе со всеми депендансами и собран.
> всё верно. но зачастую результатом gem/pip/cargo etc является то, что сборочная среда
> называется рабочей и отправляется пользователю в продакшен. это как раз то,
> что как пользователю мне не нравится.

А это не проблемы разработчика. Разработчик может собрать appimage какой-нибудь, и дать пользователю бинарь. Это ок, и этот бинарь никак не зависит от сборочной среды. Либо разработчик может дать пользователю всё вместе со сборочной средой -- бери и собирай вручную. Но думать о том, как правильно интегрировать софтину в тот или иной дистр -- это не проблема разработчика. Это проблема мейнтейнера. Не, если мейнтейнер ко мне обратится, и объяснит свои проблемы, я, скорее всего, совершу какие-нибудь телодвижения, которые сделают его задачу проще. Но по своей инициативе я не полезу разбираться с тем, как в разных дистрах обустроена установка софта.

Я к тому, что мне как разработчику, нужны инструменты для разработки. Мне удобен git для разработки? Я использую git. Мне удобен cargo, я использую cargo. Я не собираюсь отказываться от удобных инструментов, в пользу тех костылей, которые "продакшн" использует для сборки.

> Хорошим решением я бы назвал такую систему управления исходниками и бинарями, которая бы позволяла решать задачи разработчика и пользователя легко и универсально.

Я бы тоже называл такую систему хорошим решением, но я очень сомневаюсь, что такая система в принципе возможна. Задачи разработчика и пользователя очень различны.

Пользователь хочет сказать что-то типа "возьми версию софтины x.y.z, скачай её, посчитай депендансы, докачай чего не хватает, обнови что надо обновить, собери и поставь. И чтоб всё работало".

Разработчик же часто жонглирует сырыми кусками кода, ему совершенно не нужно ставить софт в систему -- ещё не хватало, чтобы каждый раз когда я скачиваю библиотеку, чтобы посмотреть что она из себя представляет, у меня бы пересобиралась половина системы и потом ещё и не работало бы. Мне нужно _чёткое_ разделение системного пакетного менагера, и рабочего. Если рабочий мне собирает всё в build директории проекта, включая и депендансы тоже -- то это очень удобно, я потом сделаю rm -rf на этом build'е, и удалю всё к чертям. Если рабочий пакетный манагер выкачивает мне зависимости только под этот проект, не оглядываясь на системно-установленный у меня софт -- это удобно, это даёт мне рабочее окружение, которое минимально отличается от рабочих окружений других разработчиков, которые могут сидеть на других дистрибутивах, и при этом может они последние три года забывали обновлять софт.

Более того, для разных языков программирования нужны разные пакетные менагеры, потому как в них по-разному всё происходит. Если начать пихать в один пакетный менагер всё, что может понадобиться любому, то получится такая хрень, что через неё не продерёшься. Ты не читал историю языка программирования PL/1? В него попытались напихать всё-всё-всё. Кончилось это провалом. В Common Lisp'е довольно часто наблюдается попытка напихать в библиотеку все-все-все возможности, в результате получается ТАКОЕ, что сам чёрт ногу сломит. Это общий инженерный принцип: надо всегда решать конкретную задачу. Чем более конкретную, тем лучше. Неконкретная попытка "сделать хорошо всем" кончается кучей навоза.

> Чехарда с "пакетными менеджерами для каждого языка" даёт тактический выигрыш, но это совершеннейший стратегический тупик. Ну или как вариант - отказ от концепции операционной системы вообще, что-то типа предельного развития концепции  qubernetes

Ты путаешь пакетные менагеры и пакетные менагеры. Есть системный пакетный менагер, есть пакетный менагер разработчика. Они разные и для разных целей созданы. Пакетный менагер разработчика, между прочим, делает жизнь мейнтейнера дистрибутива проще: глянь на те же autotools. ebuild в gentoo отлично пользуется autotools, делигируя им собственно сборку, но забирая себе такие задачи как копирование файлов в систему. Ничто не запрещает разработчикам ebuild'а связаться с разработчиками cargo, и объяснить свои нужды: в какие задачи выполняемые cargo им надо вмешаться, и что сделать иначе. А потом написать eclass, и может пачку скриптов, которые взаимодействуя с cargo напишут заготовку ebuild'а. Но, ты ж понимаешь, это не задача разработчиков cargo решать как лучше будет для мейнтейнеров gentoo? Скажем, надо ли в ebuild'е для растовой программы выписывать растовые депендансы? Или не надо? Может только C'шных депендансов хватит, которые как dll используются?

Разработчики gentoo в состоянии свой ebuild заточить под разные компиляторы? Почему они не могут заточить его под разные системы сборки?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру