zed.0xff.me
Gentoo: миграция no-multilib -> multilib
Если при устновке/конфигурации amd64 генты был установлен профиль no-multilib, то официальная документация говорит нам:
bq{background:#ffbbbb}. Warning: Currently you cannot switch from a no-multilib to a multilib-enabled profile, so think over your decision twice before you use the no-multilib profile.
Но при наличии навыка гугления можно нарыть следующую линку: Howto switch to multilib, где описывается следующий грязный хак:
- распаковка “родного” amd64 stage3
- chroot в него
- заворачивание “родных” gcc и glibc в бинарные пакеты
- chroot оттуда :)
- мерж бинарных пакетов в целевую систему
- обновление gcc и glibc до последних/нужных стандартным emerge’м
Чем мы сейчас и займемся :)
Шаг №1. Меняем профиль.
(старый профиль ссылался на ../usr/portage/profiles/default/linux/amd64/2008.0/no-multilib
)
1 2 3 |
cd /etc rm make.profile ln -s ../usr/portage/profiles/default/linux/amd64/2008.0/server make.profile |
Шаг №2. Разворачиваем stage3
(не забываем заменить /path/to/
на реальный путь к stage3)
1 2 3 4 5 6 7 8 9 |
mkdir /mnt/gentoo cd /mnt/gentoo tar xvjpf /path/to/stage3-amd64-2008.0.tar.bz2 mount -t proc none /mnt/gentoo/proc mount -o bind /dev /mnt/gentoo/dev mount -o bind /usr/portage /mnt/gentoo/usr/portage cp -r /usr/portage /mnt/gentoo/usr chroot /mnt/gentoo /bin/bash env-update |
(если всё прошло без ошибок – то мы находимся внутри chroot-а свежераспакованного stage3)
Шаг №3. Заворачиваем glibc и gcc в бинарные пакеты
1 2 3 |
quickpkg glibc quickpkg gcc exit |
(если всё прошло без ошибок – то должны создаться пакеты /usr/portage/packages/sys-devel/gcc-4.1.2.tbz2 и /usr/portage/packages/sys-libs/glibc-2.6.1.tbz2)
(версии могут отличаться если stage3 был не 2008.0)
Шаг №4. Ставим gcc и glibc из бинарных пакетов в целевую систему
1 |
emerge -Ktva glibc gcc |
Шаг №5. Обновляем gcc и glibc до свежих
1 |
emerge -tva1 glibc gcc |
Шаг №6. Cleanup
(выполнять только если все предыдущие шаги прошли успешно :)
1 2 3 4 |
umount /mnt/gentoo/proc umount /mnt/gentoo/dev umount /mnt/gentoo/usr/portage rm -rf /mnt/gentoo |
Шаг №7. Profit!! :)
Можем себя поздравить, всё прошло успешно! :) справедливость multilib
ность восстановлена! :)
PS: перевод “Howto switch to multilib” не дословный! Отражены некоторые вещи, отражающие более современную действительность и (imho) более системный подход.