Планета Calculate
Блоги пользователей
Облако тэгов
Перенос Portage в Git
Неделю назад мы вопрос переноса портежей в Git репозиторий. Предложение вызвало множество положительных отзывов и было принято единогласно.
Итак, начиная со Stage версии 20111114 портежи по умолчанию синхронизируются с нашим Git-сервером, размещенным в Санкт-Петербурге. В Git репозитории хранится копия портежей с урезанной информацией Manifest и Changelog, что позволит компенсировать излишнее место, отводимое под Git. Скорость выполнения eix-sync, спустя пару дней без синхронизации на 10 Мб канале составляет около 30 секунд. Повторное выполнение синхронизации уже в основном уходит на обновление кэша портежей и составляет около 20 секунд.
К запуску копии портежей мы изменили расположение оверлея. Теперь портежи и оверлей Calculate расположены по следующему пути: git://git.calculate.ru/calculate/portage и overlay.
Помимо скорости, у нововведения есть ещё одно важное преимущество. Во время подготовки обновления бинарных пакетов, мы исправляем маскировки, USE-флаги и нередко зависимости. Спустя считанные минуты после обновления портежи продолжают обновляться, зачастую приводя к новым маскам и изменениям USE-флагов: пакеты замещаются новыми, без смены версии пакета меняются USE-флаги. Все это заставляет в лучшем случае компилировать пакеты, для которых существует бинарный вариант, в худшем использовать функцию autounmask. Использование среза портежей позволит исключить подобные сложности в обновлении, т.к. портежи, оверлей и бинарные пакеты теперь будут полностью соответствовать.
Calculate Portage не вносят изменений в оригинальные портежи. Соответственно можно всегда вернуться на Gentoo Portage с синхронизацией по RSYNC.
Ещё одно нововведение - поддержка загрузки Git по протоколу http. При отсутствии прямого доступа к сети Интернет, вы можете настроить обновление оверлея и портежей через прокси, сменив путь к репозиторию с git:// на http://.
Для изменения ссылки к Calculate Overlay достаточно удалить и затем добавить оверлей Calculate:
layman -d calculate
layman -a calculate
Для миграции портежей на Git, выполните:
cd /usr
git clone --depth 1 git://git.calculate.ru/calculate/portage portage-git
rm -rf portage
mv portage-git portage
emerge -u1 portage
eix-sync
Для включения обновления через прокси выполните следующие действия:
echo "proxy : http://PROXY:8080" >>/etc/layman/layman.cfg git config --global http.proxy PROXY:8080 sed -ri 's|(url = )git://|\1http://|' /var/lib/layman/calculate/.git/config sed -ri 's|(url = )git://|\1http://|' /usr/portage/.git/config
Для загрузки файлов через прокси вам может понадобиться изменить настройки wget файле /etc/wgetrc.
Синхронизация по протоколу http будет выполняться заметно дольше, т.к. на данный момент не поддерживается параметр "--depth 1". Следовательно будут загружаться все коммиты, что несколько увеличит трафик. Тем не менее это все же лучше, чем использовать RSYNC.
В будущих версиях мы научим cl-install настраивать обновление через прокси.
Успешной работы!
Комментарии
Добавил(а) Alexander Zaycev 6 месяца назад
Сделал. Все отлично работает.
Спасибо!
Добавил(а) Алексей Гриценко 6 месяца назад
Добавил(а) Alexander Tratsevskiy 6 месяца назад
По всей видимости Вы удалили оверлей для смены адреса, но не добавили его после этого. Выполните
Добавил(а) Алексей Гриценко 6 месяца назад
Сейчас попробую сделать еще раз - все делал по инструкции.
P.S. Спасибо,все получилось (странно,что с первого раза не заработало,хотя все команды вводил по порядку).
Добавил(а) Павел Дружинин 6 месяца назад
Проверил на 3-х системах, работает :-)
Пачка команд одним куском, кому лень построчно копипастить ;)
layman -d calculate && layman -a calculate && cd /usr && git clone --depth 1 git://git.calculate.ru/calculate/portage portage-git && rm -rf portage && mv portage-git portage && emerge -u portage && eix-syncДобавил(а) Сергей Сиделев 6 месяца назад
Странно, решил обновиться "по старинке" ради интереса - оверлей нормально обновился мигнув в конце что-то об изменениях в оверлее.
То есть
можно пропустить?
может он и миграцию портежей на Git сам выполнит? ;-)
Добавил(а) Alexander Tratsevskiy 6 месяца назад
Overlay давно переехал на Git (с SVN). Layman информирует Вас, что сменился путь. Т.к. информация в нем уже обновлена.
Добавил(а) Ромен Тевин 6 месяца назад
всё работает, отлично и быстро, поздравляю всё сообщество!
Добавил(а) Петр Свирщевский 6 месяца назад
Как теперь обновляться? Прежним способом, описанным в документации (layman -s calculate && eix-update && eix-sync) или теперь каким-то другим?
Добавил(а) Alexander Tratsevskiy 6 месяца назад
Ничего не поменялось.
Только eix-sync выполняет вызовы layman -s calculate и eix-update. Отдельно обновлять оверлей уже нет необходимости. Для обновления лучше всего использовать вызов:
Добавил(а) Александр Прунцов 6 месяца назад
ну вот, перебрался с gentoo на funtoo. в том числе чтобы попробовать портежи не гите. теперь, если прикручу ваше дерево какой то фантулейт получится :)
Добавил(а) Alexander Tratsevskiy 6 месяца назад
Да... фантушники на лоре мочат кальку от зависти :)
Добавил(а) Олег Виниченко 6 месяца назад
Дабы немного приспустить с небес разработчиков calculate, funtoo использует git для дерева уже более 3 лет. Переход, организация github занял не более 3 дней. О какой зависти может идти речь. Считаете, что вырвались на корпус вперед от gentoo? (когда это все сделали уже до Вас). В вашем блоге (ранее) была помещена некорректная информация, мне видится умысел с целью псевдо-рекламы вашего дистрибутива (для пользователей не очень разбирающихся в sync коде).На ЛОРе тоже висят трепачи. Мне очень симпатизирует Ваш дистрибутив, может быть он в чем-то лучше Sabayon. При все уважении к разработчикам, извините за негативную реакцию.
Добавил(а) Alexander Tratsevskiy 6 месяца назад
Спасибо Олег за Ваше мнение. Очень хорошо что Вы написали здесь, а не на лоре, где любой спор может прийти на банальные оскорбления.
Я ни в коем случае никого не хотел обидеть и уж тем более как-то ущимить вклад в развитие. Или наоборот, выехать на этом. gentoo/funtoo/sabayon/calculate по сути дополняют друг друга. Было бы глупо меряться наработками, что часто предлагают делать на лоре, т.к. задачи у всех проектов - разные. Скорей наработки других открытых проектов нужно перенимать. И тут будет намного больше общего, чем у нас например с убунтой.
Я позволил себе написать шуточный комментарий проведя некоторое время на лоре под впечатлением услышанного. Мне было смешно, возможно немного обидно. Но шутка - прекрасное решение любой сложной ситуации.
Что касается блога. Да, я знаю что funtoo давно использует Git для синхронизации портежей. И я смотрел его примерно год назад. Насколько я помню, в портежах были ядра убунты, возможно другие изменения. Я считаю, что это уже не копия портежей, а скорее форк, на подобие того, как мы сделали с genkernel. Если я откажусь от портежей, у меня повиснут без поддержки установленные пакеты. Недавно на глаза попался проект reGen2, как я понимаю форк funtoo с аналогичным подходом. Я написал в блогеи не то, что портежи funtoo/regen2 не совместимы с gentoo, а то, что мы не вносим в portage своих изменений. Сейчас я удалил упоминание о funtoo в новости, т.к. считаю, что это упоминание было лишним. Я очень уважаю разработчиков Gentoo, Funtoo и Sabayon, т.к. вместе мы делаем одно дело. Gentoo дает нам инструмент, а мы делаем из него уже окружение пользователя.
Что касается Calculate Portage. Основная проблема перехода заключалась скорей в синхронизации обновлений, чтобы копия оверлея полностью соответствовала портежам и бинарным пакетам. Это была главная цель и она успешно достигнута. Пользователи более не будут пересобирать gcc, только потому, что на днях к нему добавили USE флаг, а в репозитории пакет ещё не обновлен. Мы долго готовились к переходу, осознавая дополнительную нагрузку и оценивая преимущества, которые этот переход сулит.
Да и вообще. Любые подвижки в стане Gentoo должны идти только на пользу всем. Ведь сосуществует же огромное количество *buntu. И никто не топчет новости, хваля какую-то одну версию, никогда!
Я попытался ответить развернуто.
Добавил(а) Александр Прунцов 6 месяца назад
действительно на ЛОРе есть несколько человек активно не любящих Calculate. совершенно не понимаю их позицию, если им не нужно, это еще не значит что в принципе никому не пригодится.
то что можно прикрутить дерево на гите, пусть и неоффициальное, плюс для всех пользователей gentoo-based дистрибутивов. чем больше выбор, тем лучше для всех другими словами.
хоть сейчас и не пользуюсь калькулейт, всегда слежу за новостями/блогами, нередко узнавая что-нибудь полезное для себя.
зы: подключил ваше дерево как оверлей, основное дерево и профиль funtoo. просто зафиксировал источник у некоторых пакетов, теперь не надо заморачиваться с локальным оверлеем :) спасибо
Добавил(а) Aleksey Vasilyevich 6 месяца назад
Правильно ли я понял, что данную операцию можно проделать и в gentoo, для миграции портежей на Git, и чем это мне грозит?
ЗЫ. Можно не отвечать, нашел , пришлось правда прочесть коменты до конца %)...
Добавил(а) Виктор Кустов 5 месяца назад
вариант:
Теперь вроде всё готово, но если сделать eix-sync, получим сообщение "Unrecognized protocol: SYNC='git://...."
Это потому что у нас нет метаданных. А их в стандартном портеже нет, потому
Для ленивых:
echo "=sys-apps/portage-2.2*" >> /etc/portage/package.unmask && echo "<sys-apps/portage-7777 **" >> /etc/portage/package.keywords && emerge portage && echo "dev-vcs/git -gtk -curl -perl" >> /etc/portage/package.use && emerge git && echo 'SYNC="git://git.calculate.ru/calculate/portage"' >> /etc/make.conf && cd /usr && git clone --depth 1 git://git.calculate.ru/calculate/portage portage-git && rm -rf portage && mv portage-git portage && emerge --metadata