Во-во
Сеть для распределенной компиляции (Генту-коммунизм, есть ли такое?)
Модератор: /dev/random
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
-
--=Civil696=--
- Сообщения: 227
- ОС: Gentoo o_O
Re: Сеть для распределенной компиляции
НЕ ПАНИКУЙ © ^_~
-
abs-o-lut
- Сообщения: 420
Re: Сеть для распределенной компиляции
Для начала.
Предлагаете все участникам сети хранить полный срез distfiles?
Предлагаете все участникам сети хранить полный срез distfiles?
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Не будем забывать про заголовки... Тоесть уже минимум не один файл... А может что-то упоминается в другом файле...
-
/dev/random
- Администратор
- Сообщения: 5426
- ОС: Gentoo
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Не знал. Это замечательно.
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
/dev/random писал(а): ↑25.06.2009 03:52
AFAIK, distcc передаёт удалённому компилятору файл, уже прошедший через препроцессор. А значит, все инклуды будут уже внутри.
Во-во! +1
-
Maximus_V
- Сообщения: 432
- ОС: Gentoo, FreeBSD
Re: Сеть для распределенной компиляции
Продолжая идею - с сервера передаются не только адреса, но и версия gcc (она не должна отличаться).
Клиент же, получив такой список, проводит самостоятельное тестирование полученных адресов - пингует, пробует собрать что-нибудь простенькое и т.п. По результатам теста - сортирует список адресов, чтобы вначале стояли быстрые сервера.
Для клиентов с динамическими адресами - еще и скрипт, который будет на сервер передавать новый айпишник при его изменении (наподобие dyndns) - могу сам написать, хотя наверное коряво получится.
И как быть клиентам, которые за NAT? Торренты ведь качаются, но будет ли работать distcc?
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Ну да, как у cmake - test.cpp...
Это интересно, как их - самые быстрые отсеивать? По пингу чтоли? Пинг - не показатель скорости. Сервер с пингом в 200 может быть полезней сервера с 50.
IP меняется при реконнекте, а не во время работы. При реконнекте активный клиент уже бесполезен. Так что все равно когда он снова войдет в сеть и так будет получен новый адрес.
Торренты могут коннектиться через UPnP итд...
Можно сделать пассивный коннект, если тот кто просит компилить с реалом, или вообще передавать через сервер - но для этого какой сервер нужен...
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
Не факт что имеет смысл сортировать сервера по производительности, ведь так на них будет ложиться повышенная нагрузка. Мне кажется более предпочтительным является случайный выбор. Компиляция одного файла - дело недолгое, вряд ли сильно затормозит процесс. А зато если быстрый сервер хорошо справляется distcc ему тут же еще файликов накидает - так получиться самоорганизация.
Про переменный ip я особых проблем не вижу. Один раз заливается на на сервер при запуске и все. У меня реконнекты бывают очень редко, даже без роутера. А с роутером воббще дин адрес можно считать статическим
Но если у кого-то рвется часто коннект - можно обновлять раз в 5 минут данные и все.
Насколько я знаю, distcc работает over ssh. Поэтому проблем быть не должно. Я ssh мост лично перебрасывал через свой роутер. Просто нужно порты открыть и форвардинг прописать.
Что касается версии gcc. Тут мне кажется проблему нужно решить радикальным образом: как известно, отличия в третьей цифре версии допустимы (3.2.1 и 3.2.2 напр), людей же с отличной версией во второй цифре нужно не допускать к сборке. Эталоном будет являться последняя стабильная версия из портежей. Обновить gcc - дело нехитрое, зато не будет геморроя с этой проблемой, а и порядка будет больше.
Про переменный ip я особых проблем не вижу. Один раз заливается на на сервер при запуске и все. У меня реконнекты бывают очень редко, даже без роутера. А с роутером воббще дин адрес можно считать статическим
Насколько я знаю, distcc работает over ssh. Поэтому проблем быть не должно. Я ssh мост лично перебрасывал через свой роутер. Просто нужно порты открыть и форвардинг прописать.
Что касается версии gcc. Тут мне кажется проблему нужно решить радикальным образом: как известно, отличия в третьей цифре версии допустимы (3.2.1 и 3.2.2 напр), людей же с отличной версией во второй цифре нужно не допускать к сборке. Эталоном будет являться последняя стабильная версия из портежей. Обновить gcc - дело нехитрое, зато не будет геморроя с этой проблемой, а и порядка будет больше.
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
А не решает ли опять же эту проблему distcc?
Кстати, покажите мне человека, который намеренно старается сидеть на старом GCC.
Хотя знаю людей, которые на 4.2 сидят )
Кстати, покажите мне человека, который намеренно старается сидеть на старом GCC.
Хотя знаю людей, которые на 4.2 сидят )
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
Re: Сеть для распределенной компиляции
не то что бы намеренно, но вот qemu, допустим, только на 3-шке компилируется...
[x] close
-
DaemonTux
- Сообщения: 1480
- Статус: Юный падаван
- ОС: Gentoo
Re: Сеть для распределенной компиляции
Насколько я помня выпустили новую весию qemu с поддержкой gcc4
Vladivostok Linux User Group
Спасибо сказали:
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
Re: Сеть для распределенной компиляции
о, действительно... с версии 0.10.0 No longer requires GCC 3.x ... буду обновляться...
[x] close
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
У меня, вроде два GCC было и какая-то программа трешкой компилилась вроде.
Сейчас правда после обновлений и депклинов - все норм.
PS. Тема то теперь топовая))
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Вот вырезка из контактовской группы генту, после того как я дал линк сюда:
#2
Валерий Тихонов
24 июн 2009 в 13:11
erlang такое позволяет...
#3
Евгений Варавва
25 июн 2009 в 14:18
вы действительно хотите руткитов в каждом втором бинарнике, скомпилированном на стороне?
#4
Валерий Тихонов
25 июн 2009 в 14:23
не согласен.
можно использовать просто чужие процессорные (и не только их) мощности. При этом пакеты будут компилироваться у тебя. Правда наш мин. связи по-моему запретил такое "расшаривание" железа.
У меня друг - геймер, а у него PS3. Он говорил, что по соглашению какой-то институт может по интернету забирать часть его вычислительных мощностей.
#5
Евгений Варавва
26 июн 2009 в 1:14
ну google://boinc
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
контакт и генту - интересное сочетание 
про erlang сейчас почитаю. Напоминает город немецкий
Вторую цитату не понял.
Про PS3 и институт улыбнуло. Не очень в это вериться.
про erlang сейчас почитаю. Напоминает город немецкий
Вторую цитату не понял.
Про PS3 и институт улыбнуло. Не очень в это вериться.
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
Не.. Ребята вконтакте определенно не догнали о чем речь.
Эрланг - это ваще язык программирования для кластеров, это тут не при чем.
Боинк ближе, но идея другая: просто объединение вычислительных мощностей для решения выч задач.
А тут речь идет о сети для компиляции, причем именно для генту.
Эрланг - это ваще язык программирования для кластеров, это тут не при чем.
Боинк ближе, но идея другая: просто объединение вычислительных мощностей для решения выч задач.
А тут речь идет о сети для компиляции, причем именно для генту.
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Это институт здравоохранения:)
Ну я вродь как на генту, но и был вконтакте и пока есть.
Намек на то, что нехорошие дяди будут инклудить в код свою бяку.
Ну у распределенного вычисления схожие принципы, только в некоторых случаях задачи разбиваются по другому.
Ну почему именно для генту? Чем другая линукс-система с компилятором GCC хуже?
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
Я тоже есть есть в контакте, но я там в основном с друзьями болтаю, да на девок любуюсь 
А проблемы portage там обсуждать для меня несколько необычно.
Про дядей не знаю. В принципе такая возможность есть, конечно. Но, думаю, она скорее теоретическая. Людям же будет выдаваться всего один файл - выдранный кусок из всей программы. Да и то, кода самого видеть никто не будеть, чтобы его изменить, нужно сильно извратиться. Ну те, кто боятся пусть компилят тогда у себя на компе. А палить нехороших людей можно в принципе. Короче, это уже проблема второго порядка.
Другая линукс-система ничем не хуже. Даже винда ни чем не хуже (прости господи). Но люди у которых не source-based дистры не будут заинтересованы в такой сети. Это скорее только для гентушников актуально.
А проблемы portage там обсуждать для меня несколько необычно.
Про дядей не знаю. В принципе такая возможность есть, конечно. Но, думаю, она скорее теоретическая. Людям же будет выдаваться всего один файл - выдранный кусок из всей программы. Да и то, кода самого видеть никто не будеть, чтобы его изменить, нужно сильно извратиться. Ну те, кто боятся пусть компилят тогда у себя на компе. А палить нехороших людей можно в принципе. Короче, это уже проблема второго порядка.
Другая линукс-система ничем не хуже. Даже винда ни чем не хуже (прости господи). Но люди у которых не source-based дистры не будут заинтересованы в такой сети. Это скорее только для гентушников актуально.
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Если не ошибаюсь, это решимо асм вставкой?
Ну не факт... Мелкие программы быстрее компилить тоже пригождается. Да и просто немного добрых людей, думаю найдется.
Система обсуждений ВКонтакте мне тоже ОЧЕНЬ не нравится. Гораздо предпочитаю форумы типа этого.
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
Ну да, вставки можно в принципе делать. Но опять же, если есть код в руках, а его не так просто достать. Кроме того, если уж такая боязнь, можно компилироватьу двух людей, а потом сравнивать - одинаковые ли файлы.
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Ну очевидно, что он будет где-нибудь в temp'е.
А distcc поддерживает разве?
-
/dev/random
- Администратор
- Сообщения: 5426
- ОС: Gentoo
Re: Сеть для распределенной компиляции
На самом деле всё очень просто. distcc получает целиком, со всеми инклудами, один сишный модуль, а возвращает объектный файл. Патчим свой distcc-сервер так, чтобы он проверял, имеется ли там, скажем, функция, идентичная входящей в исходники распространённой сейчас версии ssh, делающая запрос к функции проверки пароля, и вставлял туда написанное вами заранее дополнительное условие, всегда считающее специальный придуманный вами пароль правильным. А ещё круче - не ssh, а pam.
Если знать, что и где патчить в самом ssh/pam/чтототам, то написать соответствующий патч для distcc - дело 15 минут.
Я об этом уже думал. Не пойдёт. Злоумышленник может объявить себя на "трекере" глобального distcc несколько раз. И даже если разрешать только одно объявление с одного IP (что ударит по клиентам провайдеров, не выдающих публичные IP), неужели так сложно получить сразу кучу айпишников? Tor, ipv6, уже заражённые этим способом машины, список можно продолжить. И таким образом можно получить столько "своих" объявлений на "трекере", что полезность сравнения файлов на одинаковость станет нулевой - они практически гарантированно оба будут сгенерированы злоумышленником.
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
Ну тогда, как выход можно систему компилить у себя, а менее важные пакеты с помощью сети.
Либо проверять некоторые файлы не просто из двух источников, а вместе со свим компом.
Хотя, в целом, я согласен - проблема серьезная.
Навряд ли. Это видимо придется руками допиливать.
Либо проверять некоторые файлы не просто из двух источников, а вместе со свим компом.
Хотя, в целом, я согласен - проблема серьезная.
Навряд ли. Это видимо придется руками допиливать.
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
В компиляции не может быть важных и маловажных файлов. Любой кусок исполняемого файла может быть уязвим. Поэтому, конечно, тут можно только в доверенной сети компилить, а проблема уязвимости остается очень важной.
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
Есть программы обладающие правами суперпользователя, а есть просто пользовательские. Хотя, согласен, желательно, чтобы все были прямыми.
А что касается защиты, то возникла такая мысль: нужно пропатчить distcc сл. образом. Сама программа проверяет саму себя на наличие лажи (mp5 сумма например). То же она делает и исходниками: сверяет их с суммой, отосланной клиентом. Затем считает сумму для бинарника и высылает клиенту, и он уже сравнивает то что ему пришло с искомой суммой. Если не совпадает - тогда этот файл отвергается.
Это в качестве затравки.
А вообще, проблема действительно серьезная, и мне кажется вот что:
можно начать писать какие-нибудь простенькие скрипты, если будет понятно, как решить проблему безопасности теоретически, ибо решить ее реально может быть сложно.
Если будет понятно, что проблема решаема, а не фатальна. Тогда можно попытаться сделать простенькую сетку с небольшим числом пользователей и посмотреть будет ли это давать ощутимый выигрыш. В сети из 10-20 участников, вряд ли кто-то будет патчить distcc и тп. А дальше уже можно действовать по ситуации.
-
/dev/random
- Администратор
- Сообщения: 5426
- ОС: Gentoo
Re: Сеть для распределенной компиляции
Извините, это уже идиотизм. При компиляции никак не может быть заранее известна КС - разве что эта компиляция уже проводилась на компе клиента. А если она проводилась, то зачем ему проводить её ещё раз, да ещё удалённо?