Binhost через BitTorrent

Совсем недавно Calculate Linux начал поддерживать бинарные репозитории для дистрибутивов CLD, CLDG, CLDX и CDS. Для этого были добавлены новые профили, где помимо установки флага FEATURES=“getbinpkg” выполнена маскировка пакетов, для которых есть бинарные обновления.

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

В течение нескольких дней наблюдались проблемы с хостингом. Поэтому сейчас мы начали проводить исследования на возможность использования BitTorrent для загрузки tbz2 файлов обновлений.

bittorrent.gif

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

Хотелось бы услышать ваши предложения.

идея очень хорошая. Одобряю.
Если подумать в этом направлении, то напрашивается мысль о бинарных пакетах, но с учетом use флагов. То есть. Я собираю пакет, ставлю в систему. В пакет пишутся данные о use флагах и архитектуре используемой при сборке, и все это дело расшаривается через bittorrent. Кто - нибудь, с use флагами и архитектурой как у меня хочет установить пакет, оно видит что я его уже собрал, и качает у меня уже собранный. Таким образом получаем все прелести use флагов, а так же приемушества бинарных пакетов. Но на реализацию такой штуки наверняка понадобится немало человекочасов.

Не всё так просто, но определенные мысли в этом направлении конечно есть. Проблема коллективной сборки в том, что в бинарный файл легко можно подложить вредоносный код.

проверка контрольных сумм по нескольким алгоритмам?

 Я собираю пакет, ставлю в систему. В пакет пишутся данные о use флагах и архитектуре используемой при сборке, и все это дело расшаривается через bittorrent

что в бинарный файл легко можно подложить вредоносный код

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

Насколько я понимаю для каждого пакета необходимо будет генерить отдельный торрент файл и повторять структуру дерева портежей на некоем трекере. Сервера которые в текущий момент занимаются раздачей бинарей сделать сидерами. Думаю особо рассчитывать на то, что пользователи будут участвовать в раздаче не стоит (они то будут, но в самый нужный момент их может не оказаться).
Вопрос к тем кто разбирается: возможно проще будет все сделать на основе Direct Connect (или Advanced Direct Connect)? вопрос сам собой отпадает если просто уже есть человек хорошо ориентирующийся в технологии торрент

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

кроме юзов есть ещё флаги оптимизации…

для работы схемы нужно:

  • генератор метаинфы для пакета(включая бинхост, флаги оптимизации(для них нужна проверка на неблокируемость), юзфлаги, хэш)

  • п2п клиент\демон анонсирующий всё это с метаинфой(в обычный торент это вроде всё не впихать, такчто скорее всего придётся писать что-то своё… p2pbuild)

  • если делаь всё это на ванильном портежем мы узнаем много плохого о портеже…

\\ и да до тех пор пока в сорцы можно вмешаться во время сборки(пускай и модификацией портэжа) только доверие служит гарантией
\\ такчто имхо имеет смысл создание билд сервера, который по запросу будет билдить а потом отдавать пользователю(lasy emerge)ввиду

\\ и да может сначала реализовать инфраструктуру ДНК? которая как-то предлагалась?