LINUX.ORG.RU
ФорумTalks

Гентушники, есть чё по мелочи?

 ,


1

4

Думаю, большинство гентушников согласится, что невыносимо тормозной ПМ - это вторая по неприятности проблема генты. Так как сами разработчики портежа не хотят лезть в это адское спагетти из пистона и баша, выдвигаю такое предложение: насобирать на бутылку «Жигуля» и нанять одного-двух пряморуких разрабов, которые полностью перепишут portage, сохранив всю его функциональность.

Конкретных мыслей нет, но я думаю, что это должно быть что-то на C/C++ с феерической многопоточностью и загоном ебилдов в какую-нибудь БД с простым интерфейсом для включения новых ебилдов (т.е. по сути написание новых ебилдов должно быть сведено к простому заполнению полей БД или как оно там называется, я в базах не дровосек).

Кто что думает?

P.S. Если насобираем на две бутыки «Жигуля», то можно будет ещё попробовать прикрутить к новому ПМ (назовём его кодовым именем «Portak») модуль полного взаимопонимания с dpkg и rpm. Чтобы можно было грабить PPA и вообще.


Ответ на: комментарий от NeverLoved

Только при наличии соответствующих ебилдов.

FRCTLL
() автор топика

модуль полного взаимопонимания с dpkg и rpm.

Что, даже бинарники можно будет пересобирать?

devl547 ★★★★★
()

я думаю, что это должно быть что-то на C/C++ с феерической многопоточностью и загоном ебилдов в какую-нибудь БД с простым интерфейсом для включения новых ебилдов (т.е. по сути написание новых ебилдов должно быть сведено к простому заполнению полей БД или как оно там называется, я в базах не дровосек).

Тут камаз водки нужен, а не бутылка жигуля.

crowbar
()
Ответ на: комментарий от O02eg

Paludis? Он какой-то норкоманский и тормозит так же как и portage.

FRCTLL
() автор топика

Я подозреваю, что это фундаментальная проблема source-based дистров, их пакетным менеджерам намного больше данных приходится обрабатывать: зависимости сборки, юз-флаги, зависимости рантайма, а у бинарных - только зависимости рантайма.

Так что забей и не парься

Harald ★★★★★
()

сохранив всю его функциональность

Получится очередной палудис. И да, быстрее он не будет :]

А вот если переписать с sh на xml..

Wait... OH SHI~~~

vasily_pupkin ★★★★★
()
Ответ на: комментарий от Harald

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

FRCTLL
() автор топика

Суть в том, чито портаж ещё делает очень много операций с диском, ровно как и с вычислениями (потомУ что портажу больше работы, чем всяким пакманам). Хотя я не отрицаю, что его можно сделать быстрее, но максимум тебя врядли удивит.

a1batross ★★★★★
()

фрактал уже гентушников троллить начал, ужос

registrant ★★★★★
()

не соглашусь. для поиска есть быстрый eix, а апдейт раз в две недели накатить, так это не проблема, я вообще сознательно добавляю --with-bdeps=yes. хотя можно попробывать и переписать, да.

а какая первая проблема?

x0r ★★★★★
()
Ответ на: комментарий от a1batross

портаж ещё делает очень много операций с диском

Из всего времени его тупежа на i/o приходится от силы десятая часть. Остальное время он висит и жрёт одно ядро проца.

FRCTLL
() автор топика
Ответ на: комментарий от FRCTLL

Не знаю, не копал глубоко. Но один из разрабов писал, что решение зависимостей относится к классу NP-трудных задач

feofan ★★★★★
()

Попробую написать об этом в gentoo-dev в ключе возрождении идеи а-ля Gentoo Bug Hunt. Мне идея кажется стоящей.

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

Конкретных мыслей нет, но я думаю, что это должно быть что-то на C/C++

paludis уже есть - результат спорный. В некоторых местах - лютый вин, кое-где - фэйл.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)

Поддерживаю. Надо написать задание на каком-нибудь сайте по сбору бабла.

xorik ★★★★★
()
Ответ на: комментарий от feofan

Ну вот есть у пакета зависимость А и зависимость В. А у них - свои зависимости. Что мешает обсчитывать их параллельно?

FRCTLL
() автор топика
Ответ на: комментарий от feofan

ну я только что откопал пдфку с вырезкой из журнала 1983 года, где про распараллеливание топологической сортировки говорится, а она лежит в основе разрешения зависимостей

Harald ★★★★★
()
Ответ на: комментарий от FRCTLL

Что мешает обсчитывать их параллельно?

То, что там слишком много условий, включая circular dependency, sub-slot blockers и т.д.

Ты вообще с Portage team связывался? В курсе какие там алгоритмы крутятся, чтобы знать от чего плясать?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Harald

Возьмешься накидать на коленке параллельный алгоритм для такого решателя для gentoo, глядя в код portage?

feofan ★★★★★
()

Хотя не, раз уж речь о source-based, то я бы портировал пакетные утилиты из Lunar Linux (lin, lrm, lvu и т.д.) - они действительно быстрее, чем портаж.

neocrust ★★★★★
()

У меня кстати идея была для одной фичи в еапи следующий. Чтобы портаж хранил время сборки пакета, например гцц. В ебилды пишется число — время сборки, у которой за одну единицу считается время сборки того же гцц. А потом при выводе, например с ключом -v, портаж брал это число, перемножал и показывал примерное время.

Эх, просто оффтоп для этой темы.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)

было бы хорошо,если бы портежи могли rpm архивы устанавливать,а то делать из rpmа ебилд обновы 1С это пиздец.

erzent ☆☆
()
Ответ на: комментарий от a1batross

Бесполезно. Во время прошлой сборки я, например, спал и portage утилизировал все ресурсы системы. А теперь я, например, смотрю фильм, качаю торренты и собираю ядро парралельно сборке того же ебилда. Время получится сильно разным. Тем более, какая разница, сколька займет времени фоновая сборка?

feofan ★★★★★
()

Сам о таким думал

Разгребусь с проблемами — и готов внедриться в проект на досуге.

Лично мое видение проекта (ясен пень, лично моё, которым я себе представлял, и вы можете на него положить):

  • 100% совместимость с portage. Нельзя ломать существующие вещи и делать их по своему. Ломать можно, только если их ломает сам portage. Иначе это может убить проект в зародыше. Вот когда он станет настолько успешным, что сможет диктовать свои правила...
  • БД — это хорошо. SQLite или легкая NoSQL (вроде BerkeleyDB, Tokyo/Kyoto Cabinet). Я склоняюсь к NoSQL.
  • Любые дополнительные плюшки (та же работа с БД, например) никак не должны мешать работе portage. Т.е., чтобы можно было установить и удалить сишный клиент в любое время, и он не похерил после себя ничего.
  • Язык C/C++. Лично я склоняюсь к C++ (стандарт C++11). С умными поинтерами, for-loop, rvalue и прочими плюшками, позволяющими писать более читабельный, быстрый и безопасный код.
  • Сразу обмазаться valgrind и статическими анализаторами. PM должен быть молниеносный (как eix, или даже быстрее, если это возможно). Чтобы не получилось тормозное говно вроде portage или aptitude.
  • Сделать обертку для обновления основного дерева и оверлеев (аналог eix-sync, eix-update, eix-remote update). Чтобы во время синхронизации заполнять БД и строить графы зависимостей. В будущем можно попытаться отказаться от emerge --sync, но это не приоритетная задача.
Chaser_Andrey ★★★★★
()
Ответ на: Сам о таким думал от Chaser_Andrey

100% совместимость с portage

Отлично.

Я склоняюсь к NoSQL.

Почему?

Сразу обмазаться valgrind

Что думаешь по поводу преждевременной оптимизации?

feofan ★★★★★
()

и загоном ебилдов в какую-нибудь БД с простым интерфейсом для включения новых ебилдов (т.е. по сути написание новых ебилдов должно быть сведено к простому заполнению полей БД или как оно там называется, я в базах не дровосек).

Мне кажется, что это на таком этапе вовсе лишнее. Надо оставить работу с ebuild в виде файлов, но, как я написал выше, сделать обертки для обновления дерева или оверлеев.

Правда, не совсем ясно, что делать с ручным редактированием ебилда прямо в /usr/portage или /var/lib/layman. Или написать хелпер, или (для разработчиков) добавить очень легковесный демон, который будет лишь мониторить изменения файлов через inotify (только это ж сотни тысяч дескрипторов... если оно через epoll работает — тогда ладно, а если нет? а память?).

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от init_6

зачастую говорят что это их paludis ничем не лучше portage.

Лучше хотя бы тем, что применяет user patches независимо от того, дописали ли мейнтейнеры ебилда epatch_user в этот ебилд (а ещё в portage есть ебилды, которые написаны на древнем EAPI, в котором нет epatch_user).

Deleted
()
Ответ на: комментарий от erzent

было бы хорошо,если бы портежи могли rpm архивы устанавливать,а то делать из rpmа ебилд обновы 1С это пиздец.

Было бы замечательно если б ты для начала хоть немного мануалы осилил Gentoo Development Guide - RPM Sources

init_6 ★★★★★
()
Ответ на: комментарий от feofan

Я склоняюсь к NoSQL.

Почему?

Я полагаю, что в случае, когда в таблицах будут сотни тысяч или даже миллионы значений (связи, зависимости), то NoSQL тут будет более уместен, чем SQL (мы же говорим об безсерверных БД? а кроме SQLite ничего в голову не приходит из SQL).

Нам нужны очень быстрые выборки по ключам, а не слишком заумные SQL запросы с кучами JOIN (которые могут долго исполняться и ставят под угрозу скорость всего проекта). IMHO.

Что думаешь по поводу преждевременной оптимизации?

эээ... тогда стоит заняться оптимизацией после первого рабочего прототипа. Не фанатично, но и вовсе не забывать о ней.

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Deleted

Лучше хотя бы тем, что применяет user patches независимо от того, дописали ли мейнтейнеры ебилда epatch_user в этот ебилд (а ещё в portage есть ебилды, которые написаны на древнем EAPI, в котором нет epatch_user).

{Наличие/Отсутствие} user patches спорная фича. Наличием нечего гордится потому что значит в аппстриме либо в ebuild-е что-то не так. И отсутствие тоже не минус потому что либо значит „именно так и задумано“ ™ либо майнтрейнер невменяемый упоротый слоупок.

init_6 ★★★★★
()
Ответ на: комментарий от a1batross

У меня кстати идея была для одной фичи в еапи следующий. Чтобы портаж хранил время сборки пакета, например гцц. В ебилды пишется число — время сборки, у которой за одну единицу считается время сборки того же гцц. А потом при выводе, например с ключом -v, портаж брал это число, перемножал и показывал примерное время.

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

Axon ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

мы же говорим об безсерверных БД?

Не вижу проблемы при необходимости использовать серверную.

А вообще, ИМХО, тут нужно масштабное тестирование.

feofan ★★★★★
()
Ответ на: комментарий от a1batross

За эталон принято брать время сборки bash'a. Не могу найти, где читал об этом.
Время получится очень примерное, потому что зависит от числа потоков сборки и параллебельности компиляции пакета.

kaffeine
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.