metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-08-24 08:35 pm

Отслеживание зависимостей пакетов при сборке дистрибутива

http://ru.wikipedia.org/wiki/Rosa_Linux
http://techquisitor.livejournal.com/236159.html?thread=617599#t617599
Вычитал по ссылке такое: "Ещё одна фича сборочной системы - циклический контроль зависимостей. К выходу 2012.1 наши инженеры проделали то, что есть, пожалуй, только у ALT Linux. А именно, все зависимости теперь жёстко контролируются и весь софт в репозитории не имеет внешних зависимостей. Т.е. ситуация, когда ты ставишь какую-либо программу, а она тебе говорит, что не хватает libfoo, потому что она вообще в каком-то другом репозтории лежит или её нет в дистрибутиве - теперь исключена"

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

[identity profile] kostyasha.livejournal.com 2014-08-24 10:45 pm (UTC)(link)
Прежде чем комментить лучше бы собрал метапакет с кучей Requires: blabla зависимостей. Я это решал дублированием R в BR.

[identity profile] kostyasha.livejournal.com 2014-08-24 10:46 pm (UTC)(link)
Зависимость самого на себя это BR, см коммент d4s.

[identity profile] d4s.livejournal.com 2014-08-24 11:02 pm (UTC)(link)
Это еще фигня!
/me вспоминает разные карманы в которых оказывались по разным причинам собраны _одинаковые_ библиотеки одной и той же версии, но с разными параметрами/компиляторами/окружениями. Вот это был реальный сюрпрайз для некоторых приложений ;-) Такой себе местечковый вантуз-стайл dll hell на системном уровне ;-)

[identity profile] kostyasha.livejournal.com 2014-08-24 11:03 pm (UTC)(link)

У ROSA хорошие специалисты которые занимались ранее в другой конторе, а ныне в роса разработкой инструментов API/ABI checker
http://ispras.linuxbase.org/index.php/ABI_compliance_checker , upstream-tracker.org , repoclosure.
Утилита для repoclosure есть и у федоры, но они ей не пользуются на автоматизированном уровне и уровне правил/acceptance при сборке/публикации пакетов. Например по R у них просто идет периодическая проверка AFAIK. http://kostyasha.blogspot.com/2014/01/redhat-7beta-release-fail.html
Насчет openSUSE и их OBS, я кидал линки Adrian S., он сказал "интересно". Очевидно это нужно прикручивать (да и много чего другого, на мне было 20% open issues), только у кого есть время на это когда вроде как все и так работает и уже давно?

Ладно мне жалко тратить свое время. Если ты хочешь находить правильные ответы, то задавай их в правильных местах. Если реально интересно - обращайся лично, желательно вживую дабы пальцы о комп не стирать - расскажу что знаю/помню.
Если пост для кормежки троллей и чесания ЧСВ, то умываюсь.

[identity profile] kostyasha.livejournal.com 2014-08-24 11:12 pm (UTC)(link)
Ты же помнишь что у росы rpm5,urpmi, а у ALT перепатченный rpm4? И что да, реально надо тратить силы на написание.

Еще можно вспомнить что ALT признавал что у них нет sat solver'a, как у opensuse. (RH взял libsolv, а альты планировали писать велосипед. Не следил, чем закончилось кстати?)

[identity profile] kostyasha.livejournal.com 2014-08-24 11:18 pm (UTC)(link)
Так у openSUSE с их разными репами естественно будут(есть) проблемы. Логичный вывод не давать смешивать - получаем два продукта Server, Desktop (черт а ведь это уже в RH есть!). А еще с развитием виртуализаций можно будет просто нужный "диалект" в контейнере пускать :)

Вообще нужно делать больше автоматизированных тестов, проверок и прочего, только кто готов заняться?

[identity profile] kostyasha.livejournal.com 2014-08-24 11:31 pm (UTC)(link)
Интересно? Сходи в первоисточники и разберись, хотя бы с тем что есть, а не гадай.
Даже не знаю как этот поток сознания комментировать.
1) Алгоритм сборки может быть воспроизводимым и невоспроизводимым.
2) В OBS после каждого собранного пакета все пересчитывается, алгоритм решения колец не описан, а код на перле я не осилил.
3) То как запакечено и на основе чего строится дерево. Федора/RH получают зависимости раскрывая макросы, которые связаны с окружением из которого они раскрываются что дает рекурсивную сложность. OBS библиотекой строит на основе информации спек файла и конфигурации project где эти спеки лежат.
4) Если взять тему multiarch то вы вообще забьете и будете рады тому что есть и тому как это работает.

[identity profile] kostyasha.livejournal.com 2014-08-24 11:36 pm (UTC)(link)
В окно смотрел? Реальность видел? Или будешь говорить про детские фантазии? Видел сколько conditional вещей внутри кода везде понаписано? А automagic dependencies? А рубимусоргемы?

[identity profile] sbj-ss.livejournal.com 2014-08-24 11:37 pm (UTC)(link)
Я бы предпочёл услышать мнение того, кому адресовался комментарий. Поэтому отвечу только по п.1.
Если алгоритм сборки невоспроизводим, как вы собираетесь это тестировать?

[identity profile] kostyasha.livejournal.com 2014-08-24 11:41 pm (UTC)(link)
Домучались, чувака порвало, сделали https://securityblog.redhat.com/2013/09/18/reproducible-builds-for-fedora/

[identity profile] anonim-legion.livejournal.com 2014-08-25 02:45 am (UTC)(link)
Я вижу декларативный мавен и он мне нравится. А императивщину невозможно автоматически анализировать, поэтому от такого нужно избавляться.

[identity profile] techquisitor.livejournal.com 2014-08-25 06:12 am (UTC)(link)
У нас есть и даже используем, но у нас RPM5. В RPM 4 «мягкие» зависимости только-только появились (судя по всему, Джефф таки добился своего) и войдут в выпуск RPM 4.12, если не путаю чего.

[identity profile] techquisitor.livejournal.com 2014-08-25 06:34 am (UTC)(link)
Альты в рамках седьмой платформы что-то вроде даже запилили. Увижу Шигорина где — спрошу.

[identity profile] cottidianus.livejournal.com 2014-08-25 06:41 am (UTC)(link)
> Смешал в кучу разрешение сложных взаимозависимостей, автоматическое определение зависимостей (это вообще на этапе сборки должно делаться) и контроль целостности графа зависимостей в репозитории пакетов.

[ все зависимости теперь жёстко контролируются и весь софт в репозитории не имеет внешних зависимостей. Т.е. ситуация, когда ты ставишь какую-либо программу, а она тебе говорит, что не хватает libfoo, потому что она вообще в каком-то другом репозтории лежит или её нет в дистрибутиве - теперь исключена" ]

У нас исходная задача - это убедиться, что у пакетов нету зависимостей вне этого репозитория. Ок, у вас есть libfoo, которой нужен libbar, которой нужен libbaz, которой нужен libfoo. Вы понимаете, что разрешение цикла здесь не входит в решение задачи "убедиться, что репозиторий замкнут сам на себя"? И что решение этой задачи никак не зависит от решения цикла?
Edited 2014-08-25 07:24 (UTC)

[identity profile] cottidianus.livejournal.com 2014-08-25 06:48 am (UTC)(link)
1.1 совершенно верно
1.2 совершенно верно
2.1 совершенно верно и очевидно
2.2 совершенно верно

[identity profile] cottidianus.livejournal.com 2014-08-25 06:56 am (UTC)(link)
> Разрозненные репозитории усложняют тестирование ввиду уникальности сочетаний выбранных репозиториев у конечного пользователя.
Голословная ложь. Покажи юзкейс доказывающий это.
Edited 2014-08-25 06:58 (UTC)

[identity profile] prepor.livejournal.com 2014-08-25 07:03 am (UTC)(link)
Без всякой виртуализации заигрывания с rpath позволяют пускать сколько угодно версий с чем угодно.

Чем nix (http://nixos.org/nix/) давно и успешно занимается, удивлен, что в треде ни одного упоминания.

[identity profile] kostyasha.livejournal.com 2014-08-25 07:13 am (UTC)(link)
1) Цикл зависимостей мавена и библиотек это просто ад.
2) Судя по всему ты даже не знаешь как мавен обрабатывает транзитивные зависимости
3) Твой опыт разработки очень скуден если тебе достаточно мавена.

[identity profile] kostyasha.livejournal.com 2014-08-25 07:18 am (UTC)(link)
Видел вчера, но темы общения были другие :)

[identity profile] cottidianus.livejournal.com 2014-08-25 07:20 am (UTC)(link)
> Уважаемый, вы сталкивались с задачами этого уровня?
Несколько лет как сталкивались. И это не "уровень", это проблема организационного плана.

> могу ли я где-то посмотреть на Ваши _личные_ наработки и/или исследования в этой области?
я не вижу зачем мне это делать

> Ваши умозрительные построения очень хороши. И пока не доходит дело до практики, то кажется, что все действительно так просто, как вы описали. Я примерно так же заблуждался. Лет этак 5-7 назад.
Вы заблуждаетесь в том как оно работает, а работает оно на самом деле очень просто.

> Первая ключевая ошибка, которую вы сделали -- предположили, что описания пакетов (которые, кстати, только в некоторых ветках дистров выглядят как папка с файлами) содержат всю необходимую информацию.
Это не ошибка. Соблюдение depends-списка пакета - это гарант того, что пакет соберётся/запустится. Если список неадекватен, то это баг и он должен быть починен.

> Вторая, не менее грубая ошибка -- забыли, что репозиторий не является статическим.
Тоже не ошибка. Любой новый пакет должен удовлетворять условиям из предыдущего пункта про полноту depends-списка. Чтобы enshure это у генты есть repoman, у ексхербо есть пир ревью (кмк пир ревью даёт лучше результаты), у других дистров есть что-то другое.

В лайманских терминах: вы путаете две проблемы: замкнутость репозитория на самого себя и баги в пакетах предоставляющих неполный список. Если совсем просто, то если вы собираете phenom и линкер грохается на "не могу слинковаться с libvlc", а в build-depends в пакете нету ни слова о vlc, то у вас баг в пакете. И его надо починить. Если ваш дистрибьютив считает поломанные и неадекватные пакеты нормальным делом, то ваш дистрибьютив - помойка, а для проверки на замкнутость не достаточно информации.

> мне интересно ваше мнение по алгоритмизации разрешения кольцевых сборочных зависимостей и альтернативных провайдеров зависимостей, автоматизации бутстрапа сборочной системы и методик построения замкнутых и воспроизводимых мультиархитектурных репозиториев
Я могу рассказать, но не в формате "в жж у метакласса". Найдёте меня на конференции, подойдите, поговорим.
Edited 2014-08-25 07:21 (UTC)

[identity profile] kostyasha.livejournal.com 2014-08-25 07:25 am (UTC)(link)
Что ты тогда имеешь ввиду под "разрешением цикла"?
При анализе замкнутости репозитория если попал в цикл ты должен это понять и проверить что он самодостаточен в этом репозитории.

[identity profile] kostyasha.livejournal.com 2014-08-25 07:29 am (UTC)(link)
Они были в openSUSE. Если войдут в апстрим, то хорошо.

[identity profile] techquisitor.livejournal.com 2014-08-25 07:33 am (UTC)(link)
За openSUSE не скажу, просто не в курсе. Хотя у них там много на RPM своего навешано, да. Может в самом деле не джеффовские, а сусёвые патчи взяли.

[identity profile] anonim-legion.livejournal.com 2014-08-25 07:37 am (UTC)(link)
>Цикл зависимостей мавена и библиотек это просто ад.

Чуть ниже поминается код на перле. И неполная информация о зависимостях в пакетах (восхитительно). И "невоспроизводимый алгорит сборки" (это как? там совсем берега потеряли - из детерменированной системы делать случайную?)

В общем, Олдово, Инженерно, Перлово.

Те, кто это писал - SQL не знали. И математику. Зато были хорошими энергичными инженеграми, сколхозили нечто, что в принципе не может работать хорошо, теперь подпирают костылями. Молодцы, отличная job security.

[identity profile] kostyasha.livejournal.com 2014-08-25 07:40 am (UTC)(link)
>я не вижу зачем мне это делать
Короче теоретик.

Page 2 of 3