Как я после 3 лет Gentoo обновлял
Понадобилось тут мне развернуть новую машинку, и полез я за когда-то подготовленным OVF-образом. А образ то оказался довольно таки старым - последнее обновление в июне 2015. Ну и, естесственно, обновляться нормально не захотела.
При попытке обновления portage
оно выдало, что мне может обновить (ну... зависимости), ибо EAPI=6
.
Так вот годного решения я не нашёл, впрочем мне почти сразу пришла мысль (но сперва решил посмотреть, какие есть варианты) - сделать это вручную.
ebuild /usr/portage/sys-apps/portage/portage-2.3.8.ebuild merge
Ну... тут мы ругаемся на то, что хотим Python 3.6, которого естесственно тоже в системе нет. Ну и, так, заодно, у него уже идёт EAPI=6. Его, разумеется, нужно изменить на наш (5). Но, т.к. нам нужно будет потом делать digest
, то тут есть 2 варианта, либо правим в каждом ebuild'е, либо удаляем ненужные. Мне не сложно, я отредактировал все :)
vim /usr/portage/dev-lang/python/python-*.ebuild ebuild /usr/portage/dev-lang/python/python-3.6.3-r1 digest ebuild /usr/portage/dev-lang/python/python-3.6.3-r1 merge
Ну и на этом веселье не закончилось, теперь тоже самое нужно было проделать с automake
, ибо питон хотел один из последних. После чего снова пытаемся снова merge питона. Всё ок. Далее portage. И тут всё ок.
Закончили (я специально выбирал НЕ последние версии, чтобы потом просто сделать (а его нужно делать) emerge -e @system
. Ну и далее классический апгрейд - обновляем binutils и libtool, затем gcc, затем переключаемся на новый gcc, пересобираем снова binutils и libtool и после этого систему.
ЗЫ. Были, кстати, и ещё нюансы при обновлении, но это уже было связано скорее с особенностью построения именно моей системы.
ЗЗЫ. Я одного никак понять не могу, зачем декларировать в ebuild'ах новый EAPI, если он и на старом прекрасно собирается?