LINUX.ORG.RU
ФорумTalks

[арч] [и гентушникам тоже] пересборка : тяжела жизнь грызущих кактус!

 


0

2

Arch.
Каждый день вечером у меня (как, наверное, у многих здесь) запускается полное автообновление бинарных пакетов из основных репозиториев. Это хорошо и приятно.

С обновлениями из Аура всё гораздо неприятней.
1) сорс-пакетов более 9000, поэтому если пересобирать всё - никакого времени не хватит
2) часть пакетов - просто хлам, но нужен по зависимостям. Но этот хлам входит в автоматическую пересборку, хотя по-хорошему его бы вообще никогда не пересобирать.
3) часть пакетов - мастхэв (типа nautilus-elementary), и проверять обновления (для транка - читай «пересобирать») их нужно почаще.
4) никогда неизвестно, какие из зависимостей _действительно_ опциональные, а после установки сложно посмотреть список того, что предлагалось как опциональное в ходе пересборки.
5(!) невозможно воспользоваться результатами сборки, которые уже давно сделали другие члены сообщества.

Выше были факты, теперь имхо-интерпретация.
1) Нет механизма управляения дополнительными зависимостями. Хорошо бы его иметь. Хотя бы в таком виде как у Windows Installer в венде, если кто-то еще помнит что это такое :)
2) Нет механизма управления группами приоритетных пакетов, которые нужно пересобирать в ходе вечернего обновления системы. Нет механизма фильтрации спам.. откровенного шлака. Хорошо бы его иметь.
3) Нет механизма централизованного расшаривания результатов сборки.


По поводу пункта 5/3 подробнее. Понятно что гениальная идея «давайте просто раз в час собирать весь Аур» просто не проканает - за ночь на обычном компьютере весь Аур не собрать.

Но можно сделать централизованный сервак (очень легкий, домашняя пишмашка с мегабитным интернетом проканает), который бы держал на себе «график дежурств». Т.е каждый пользователь Арча берет на себя один из пакетов и обещает согласно выбранному им самим (и опубликованному на центральном сервере) графику пересобирать данный пакет из транка.

Понятно что люди в основном необязательные (по крайней мере я - необязательный), поэтому руками ничего собирать не будут. И за расписанием следить не будут.

Есть решение - ставим на каждый из компьютеров-участников какой-нибудь IntegrationServer типа Hudson. Он сам будет всё пересобирать. График сборки можно сделать в виде простого календарика, в котором можно прощелкать желаемую периодичность (или просто сказать Хадсону пересобирать когда компьютер простаивает). Потом собранные пакеты пушатся на центральный сервер (это позволяет не иметь белого айпи).

Из фич которые можно привертеть - автоматическое определение пакета за который ты будешь ответственным (для людей которым наплевать чо собирать).
Или, возможно, рейтинговую систему - сколько пакетов собрал, столько и скачал, или как-то так. Понятно что люди, которые будут пересобирать «свой пакет» каждый час будут в очевидном выигрыше. Но это и круто - появится больше не просто «ночных сборок», а больше ежечасных обновлений!

Таким макаром, может быть, мы сможем поддерживать бинарную версию Аура с запозданием от исходников максимум в пару дней (а в абсолютном сферическом идеале - иметь «ежечасный бинарный снапшот»).

Правда, что-то придется делать с опциональными зависимостями и архитектурами.

Гентушникам:

1) как вы делаете обновления? Есть ли практика Continuous Integration для unsupported-пакетов? Как вы вообще так живете: у вас ведь полное обновление системы должно занимать больше суток?!!!

2) как вы разруливаете опциональные зависимости и приоритеты зависимостей?

★★★★☆

собирать пакет должен автор пакета, но поськольку это крайне небеопасно, лучше пусть лежат так. нужно просто чаще голосовать, чтоб пакет включили в community

devnullopers
()
Ответ на: комментарий от Sylvia

и вообще наверное скажу такую вещь:

учитывая то, что баги в багзиллах висят месяцами без внимания разработчиков, ставить снапшоты с svn по собственной инициативе и не имея быстрого подхода к разработчикам (например в IRC) - бесполезная трата времени и пользы не принесет


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

Какой nightly-stable? У меня каждый день по 3 пакета наверное пересобирается. Или ты о 9999? Если да, то спасибо, мне - не надо

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

да на типичном десктопе мало пересобирается, меня вот банят достаточно регулярно на rsync серверах, за то что часто --sync делаю

Sylvia ★★★★★
()

Тред не осилил. Про ccache в курсе?

yytreop
()
Ответ на: комментарий от tx

>Не очень понял, что было сделано между «3» и «1».

etc-update

... тут у вас два конфига обновилось. Один я сама оприходовала. Что с другим делать? 1) .. 2) .. 3) смержить вручую

3

... вот вам очередная разница между исходным и новым файлом. Слева старый, справа новый. Какой кусок вам нужен, «l» - левый [старый]

l

... ок, файлы смержены, что делать будем? 1) перезаписать смерженым файлом оригинальный конфиг 2) ...

1

... всё, не смею вас отвлекать больше.

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

для portage есть опция которая кажет что не нужно синхронизировать. Запилите скрипт которий «кажет что _нужно_ синхронизировать». или сделайте feature-request

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

rss есть вообще-то :)

но у меня вредная привычка тыкать в gentooupdate.sh

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

>А если разница будет более глобальная?

Тогда «l» или «r» придётся нажимать столько раз, сколько будет построчных изменений. Он после очередного запроса переходит автоматом к следующему. Есть там и другие сокращения. Например, «er» - взять правый кусок, но вызвать его на редактирование. или «eb» - соединить оба куска, старый и новый, и для этого соединения вызвать редактор. По выходу из редактора, сохранённый результат вставится в объединяемое место и произойдёт переход к следующему.

Правда, бывают очень редкие изменения, когда меняется вся структура конфига, не только построчные изменения. Но такое не каждый год даже бывает :) В этом случае, понятно, ручками. Обычно тупо берётся новый конфиг и правится ручками...

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

> Но такое не каждый год даже бывает :)

ОК.

tx
()

Читал все, рыдал, сильно рыдал :) Понимание не появилось, что делать незнаю. Наверное буду дальше читать откровения

P.S. Пользователь/Администратор/Разработчик CentOS/Debian/Slackware

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

// извиняюсь за немного offtop


хочу спросить, munin входящий траффик рисует на графиках на отрицательной шкале ?

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

>хочу спросить, munin входящий траффик рисует на графиках на отрицательной шкале ?

Не обращал внимания :)
Судя по http://admin.airbase.ru/munin/airbase/airbase/if_eth0-day.png - да. На сервере исходящий больше, значит он рисуется в положительной части шкалы.

KRoN73 ★★★★★
()

у вас ведь полное обновление системы должно занимать больше суток?!!!

У меня полная пересборка мира занимает 1/24 суток.

partyzan ★★★
()

Как вы вообще так живете: у вас ведь полное обновление системы должно занимать больше суток?!!

use ccache

rafister
()

централизованного расшаривания результатов сборки

А если какой-нибудь негодяй подсунет свой троян в бинарник?

В случае «самообслуживания» я могу изучить на наличие закладок содержимое небольшого файла PKGBUILD и быть спокойным по этому поводу. (При условии, что тарболл с сорцами качается с оффсайта, а автору программы я доверяю)

nexeuse
()
Ответ на: комментарий от rafister

>use ccache

Он реально только [умеренно] помогает при пересборках пакетов. Но не при сборке новых. Может, ты имел в виду distcc?

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

Не дай мне аллах каждый вечер мир пересобирать, это ж времени на лор не останется! =)

Разве в Gentoo фоновая пересборка системымира не работает? O_o.

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

На самом деле те пакеты, которые уже собраны, конпелять заново не нужно. Вот и вся недолга.

+1000

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

А что насчёт безопасности?

А её нет по факту. Всё на доверии.

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

>Разве в Gentoo фоновая пересборка системымира не работает? O_o.

Работает. Но я ж написал, что не могу в фоне это делать, меня так и тянет в течение часа созерцать выхлоп емерже под Iran Maiden...

Zhbert ★★★★★
()

1) Нет механизма управляения дополнительными зависимостями. Хорошо бы его иметь. Хотя бы в таком виде как у Windows Installer в венде, если кто-то еще помнит что это такое :)
optdepends=()
2) Нет механизма управления группами приоритетных пакетов, которые нужно пересобирать в ходе вечернего обновления системы. Нет механизма фильтрации спам.. откровенного шлака. Хорошо бы его иметь.
ignoregroup(), ignorepkg()
3) Нет механизма централизованного расшаривания результатов сборки.
$ repo-add repo *pkg.tar.*

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

p.s. в дебиане со всем этим проблем никаких нет вообще :P

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

>хм...а разве ты собираешь новую версию программы где всего пару багфиксов он не будет работать?

В этом случае - будет. Фактически он просто позволяет не компилить заново те компоненты, что не менялись.

KRoN73 ★★★★★
()

1) сорс-пакетов более 9000, поэтому если пересобирать всё - никакого времени не хватит

Но зачем?!

8 из AURа и 10 devel. Пересобираются сильно меньше часа.

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