Перенос 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 настраивать обновление через прокси.

Успешной работы!

Сделал. Все отлично работает.
Спасибо!

root@Graleksej:/usr# emerge -u portage


!!! /etc/make.profile is not a symlink and will probably prevent most merges.
!!! It should point into a profile within /usr/portage/profiles/
!!! (You can safely ignore this message when syncing. It's harmless.)


!!! Your current profile is invalid. If you have just changed your profile
!!! configuration, you should revert back to the previous configuration.
!!! Allowed actions are limited to --help, --info, --sync, and --version.

По всей видимости Вы удалили оверлей для смены адреса, но не добавили его после этого. Выполните

layman -a calculate

Сейчас попробую сделать еще раз - все делал по инструкции.
P.S. Спасибо,все получилось (странно,что с первого раза не заработало,хотя все команды вводил по порядку).

Проверил на 3-х системах, работает :slight_smile:
Пачка команд одним куском, кому лень построчно копипастить :wink:

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

Странно, решил обновиться “по старинке” ради интереса - оверлей нормально обновился мигнув в конце что-то об изменениях в оверлее.
То есть

layman -d calculate
layman -a calculate

можно пропустить?

может он и миграцию портежей на Git сам выполнит? :wink:

Overlay давно переехал на Git (с SVN). Layman информирует Вас, что сменился путь. Т.к. информация в нем уже обновлена.

всё работает, отлично и быстро, поздравляю всё сообщество!

Как теперь обновляться? Прежним способом, описанным в документации (layman -s calculate && eix-update && eix-sync) или теперь каким-то другим?

Ничего не поменялось.
Только eix-sync выполняет вызовы layman -s calculate и eix-update. Отдельно обновлять оверлей уже нет необходимости. Для обновления лучше всего использовать вызов:

eix-sync

ну вот, перебрался с gentoo на funtoo. в том числе чтобы попробовать портежи не гите. теперь, если прикручу ваше дерево какой то фантулейт получится :slight_smile:

Да… фантушники на лоре мочат кальку от зависти :slight_smile:

Дабы немного приспустить с небес разработчиков calculate, funtoo использует git для дерева уже более 3 лет. Переход, организация github занял не более 3 дней. О какой зависти может идти речь. Считаете, что вырвались на корпус вперед от gentoo? (когда это все сделали уже до Вас). В вашем блоге (ранее) была помещена некорректная информация, мне видится умысел с целью псевдо-рекламы вашего дистрибутива (для пользователей не очень разбирающихся в sync коде).На ЛОРе тоже висят трепачи. Мне очень симпатизирует Ваш дистрибутив, может быть он в чем-то лучше Sabayon. При все уважении к разработчикам, извините за негативную реакцию.

действительно на ЛОРе есть несколько человек активно не любящих Calculate. совершенно не понимаю их позицию, если им не нужно, это еще не значит что в принципе никому не пригодится.
то что можно прикрутить дерево на гите, пусть и неоффициальное, плюс для всех пользователей gentoo-based дистрибутивов. чем больше выбор, тем лучше для всех другими словами.
хоть сейчас и не пользуюсь калькулейт, всегда слежу за новостями/блогами, нередко узнавая что-нибудь полезное для себя.

зы: подключил ваше дерево как оверлей, основное дерево и профиль funtoo. просто зафиксировал источник у некоторых пакетов, теперь не надо заморачиваться с локальным оверлеем :slight_smile: спасибо

Правильно ли я понял, что данную операцию можно проделать и в gentoo, для миграции портежей на Git, и чем это мне грозит?

ЗЫ. Можно не отвечать, нашел тут, пришлось правда прочесть коменты до конца %)…

Краткая инструкция для подключения gentoo к дереву портежей Calculate через git.
# размаскируем portage 2.2.0

echo "=sys-apps/portage-2.2*" >> /etc/portage/package.unmask
echo "<sys-apps/portage-7777 **" >> /etc/portage/package.keywords

вариант:

echo "=sys-apps/portage-2.2*" >> /etc/portage/package.unmask/portage
echo "<sys-apps/portage-7777 **" >> /etc/portage/package.keywords/portage

# поставим portage

emerge portage

# поставим git

echo "dev-vcs/git             -gtk -curl -perl" >> /etc/portage/package.use
emerge git

# пропишем с чего обновляться

echo 'SYNC="git://git.calculate.ru/calculate/portage"' >> /etc/make.conf

Теперь вроде всё готово, но если сделать eix-sync, получим сообщение “Unrecognized protocol: SYNC='git://…”
Это потому что у нас нет метаданных. А их в стандартном портеже нет, потому
# руками клонируем портежи Calculate

cd /usr && git clone --depth 1 git://git.calculate.ru/calculate/portage portage-git && rm -rf portage && mv portage-git portage

# емержим метаданные

 emerge --metadata 

Для ленивых:
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

почему то перестала происходит eix-sync
попробовал сделать
layman -d calculate
layman -a calculate

 * Adding overlay,...
 * Running Git... # ( cd /var/lib/layman  && /usr/bin/git clone git://git.calculate.ru/calculate/overlay.git /var/lib/layman/calculate )
Cloning into '/var/lib/layman/calculate'...
fatal: read error: ?????????? ???????? ?????? ????????
 * Failure result returned from Git
 * Running Git... # ( cd /var/lib/layman/calculate  && /usr/bin/git config user.name "layman" )
 * [Errno 2] No such file or directory: '/var/lib/layman/calculate'
 * Adding repository "calculate" failed!

 * CLI: Errors occurred processing action add
 * Adding repository "calculate" failed!

ручное создание папки /var/lib/layman/calculate
не помогает все равно папка потом исчезает.

сейчас даже эта комманда выдает ошибку
emerge -v git

!!! /etc/make.profile is not a symlink and will probably prevent most merges.
!!! It should point into a profile within /usr/portage/profiles/
!!! (You can safely ignore this message when syncing. It's harmless.)


!!! Your current profile is invalid. If you have just changed your profile
!!! configuration, you should revert back to the previous configuration.
!!! Allowed actions are limited to --help, --info, --search, --sync, and

Спасибо Олег за Ваше мнение. Очень хорошо что Вы написали здесь, а не на лоре, где любой спор может прийти на банальные оскорбления.

Я ни в коем случае никого не хотел обидеть и уж тем более как-то ущемить вклад в развитие. Или наоборот, выехать на этом. gentoo/funtoo/sabayon/calculate по сути дополняют друг друга. Было бы глупо меряться наработками, что часто предлагают делать на лоре, т.к. задачи у всех проектов - разные. Скорей наработки других открытых проектов нужно перенимать. И тут будет намного больше общего, чем у нас например с убунтой.

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

Что касается блога. Да, я знаю что funtoo давно использует Git для синхронизации портежей. И я смотрел его примерно год назад. Насколько я помню, в портежах были ядра убунты, возможно другие изменения. Я считаю, что это уже не копия портежей, а скорее форк, на подобие того, как мы сделали с genkernel. Если я откажусь от портежей, у меня повиснут без поддержки установленные пакеты. Недавно на глаза попался проект reGen2, как я понимаю форк funtoo с аналогичным подходом. Я написал в блогеи не то, что портежи funtoo/regen2 не совместимы с gentoo, а то, что мы не вносим в portage своих изменений. Сейчас я удалил упоминание о funtoo в новости, т.к. считаю, что это упоминание было лишним. Я очень уважаю разработчиков Gentoo, Funtoo и Sabayon, т.к. вместе мы делаем одно дело. Gentoo дает нам инструмент, а мы делаем из него уже окружение пользователя.

Что касается Calculate Portage. Основная проблема перехода заключалась скорей в синхронизации обновлений, чтобы копия оверлея полностью соответствовала портежам и бинарным пакетам. Это была главная цель и она успешно достигнута. Пользователи более не будут пересобирать gcc, только потому, что на днях к нему добавили USE флаг, а в репозитории пакет ещё не обновлен. Мы долго готовились к переходу, осознавая дополнительную нагрузку и оценивая преимущества, которые этот переход сулит.

Да и вообще. Любые подвижки в стане Gentoo должны идти только на пользу всем. Ведь сосуществует же огромное количество *buntu. И никто не топчет новости, хваля какую-то одну версию, никогда!

Я попытался ответить развернуто.