LINUX.ORG.RU

[Gentoo] Наступил на грабли при апгрейде

 


0

1

Решил недели две назад обновить систему на своей SGI O2 (mips). Сказано - поехали! Поскольку машина по скорости компиляции в 6 примерно раз медленее моего десктопа (на котором Slackware), а он в свою очередь примерно в 8 раз медленее среднего прошлогоднего AMD Barton 2300BE (кажется так, уж не помню точно, друг давал машину на время) - то просто «пересобрать всё» выглядело ну очень утомительным процессом. Решил обновлять пакеты по-одному, или небольшими группами. Успешно обновил gcc до 4.4.4 (почти словив OOM, сейчас почитал http://hostingfu.com/article/compiling-with-gcc-on-low-memory-vps , добавил эти параметры, ещё раньше убрал -pipe из CFLAGS). Успешно обновил большую часть media-libs, скомпилировал audacious и GIMP-2.6.10 (размаскировав оба). Audacious играет, правда процентов 40-45 от mips r5k/180Mhz/512K L2 ест. ладно, поставлен был «для красоты» (ну и посмотреть, соберётся ли). ГИМП оказался тоже достаточно рабочим для создания скриншота, как минимум (http://img196.imageshack.us/img196/8307/gimp2610mips1.jpg). Правда, для него пришлось пересобрать pygtk/pyobject , а для них - numpy (от количества warnings в котором мой экран скроллился несколько раз, при emerge предупреждения фиксируются и потом отдельно выдаются на экран, мол не приставайте к нам с багами, бегом на страницу проекта, который так код пишет.).

И всё было хорошо, пока я не стал пересобирать gtk+ . Оно вывалилось с ошибкой, оказалось при апгрейде libpng 1.2 -> 1.4 я забыл запустить прилагаемый скрипт, который в свою очередь хотел portage-utils, которые пришлось поставить. В общем странное осталось ощущение - простейшие операции _специально_ не автоматизируются, видимо чтобы админ не спал, а читал что ему пишут на экране. Ладно, обновил gtk - обновлю и X сервер! Обновил ... правда, несмотря на обычную тщательность (просмотр вывода emerge -p , установка USE флагов по необходимости) пропустил казалось бы безобидное обновление udev. X-то запустились, правда конфиг был не тот немного, и они проигнорировали «устаревшие» драйвера kbd/mouse. ладно, ребут .... И тут отваливается udev. Не очень страшно, если грузишься по сети, и вся система - на NFS. Нашёл казалось бы решение - нужно пересобрать glibc с новыми kernel-headers (2.6.35 поставил, вместо старых 2.6.24). Стал пересобирать ... Правда, меня предупредили на #gentoo-mips, что апгрейд до 2.11.2 может вылиться в сегфолт. Ну, я сделал quickpkg для текущей glibc, и полный бэкап всего, что было на NFS root.

Обновив glibc - нарвался на сегфолты, почти всего, начиная от gawk и заканчивая gcc. Обидно, но emerge работает. Указываю ему на /usr/portage/packages/sys-libs/glibc-версия.tbz2 - ругается что «install by path is broken!» а потом вообще отказывается делать downgrade! (т.е. вернуться на старую версию glibc). Пришлось делать emerge --unmerge glibc (оно оказалось даже не в защищенных), потом tar'ом распаковывать архив-пакет со старой glibc, и водворять её на место (это на NFS сервере). Гружусь, emerge работает, предлагает поставить glibc. Умно. Маскирую новую версию glibc, заодно с udev-162. На этапе компиляции выясняется, что куда-то потерялся /usr/lib/crt1.o Ого. Достаю его из полного бэкапа (который на x86 машине, в виде squashfs4-образа, который достаточно смонтировать). После полусуток компиляции (из которых часа 2 генерились локали - надо бы это поправить ....) кажется получил рабочую glibc-2.9

Стал пересобирать систему. Но сначала пришлось мигрировать на openrc. А для этого пришлось пересмотреть кучу файликов (сорок), которые etc-update посчитал устаревшими. В большинстве случаев их можно было спокойно заменить, устаревший вариант на новый. В двух случая оставил старые настройки. Наверное, такая пляска была бы в любом дистре, захоти я его после почти полугода простоя обновить.

Openrc на этой медленной машине действительно грузит систему заметно быстрее, но не уверен что произойдёт, если он отвалится, по какой-то причине (glibc опять ....). Всё-таки поддержание gentoo в рабочей форме требует усилий, на быстрой машине это не так заметно, а тут .... две недели и всё ещё не обновился толком. Правда, и засады с glibc на x86 как я понимаю нет, да и на mips она не везде проявляется.

https://bugs.gentoo.org/show_bug.cgi?id=340243 - в эту багу мне предлагали отписаться, но я пока дождусь результатов emerge system, для glibc-2.9 А потом можно ещё один образ сделать, и экспериментировать с glibc-2.11

В общем хорошо конечно, что хоть один дистрибутив поддерживает старые SGI машины. И хорошо что системный компилятор до сих пор компилирует себя на 256 мегабайтах оперативки без свопа. Но всё же я всерьез начал думать о distcc .....

★★★★

Именно поэтому старые машины остаются лишь там, где их поддерживать дешевле, чем переносить загрузку на новое - например, в оборонке или каком-нибудь спермбанке.
Гемора выше крыши с сопровождением раритетов.

Hokum ☆☆☆☆
()
Ответ на: комментарий от iZEN

> Такого ужаса на FreeBSD нет.

FreeBSD не пробовал, но NetBSD на той же машине (машинах - тоже через NFS) довёл до полузагружабельного состояния, через какое-то время. Ленивый я, и при том - нетерпелив впридачу, все спешу сделать побыстрее, то etc-update забуду, то quckpkg во время работы emerge запущу (возможная причина получения битого пакета), то решу что сам помню все зависимости ... В общем я везде найду грабли. Пока смотрим на ужасно медленное и скучное emerge -e system.

Andrew-R ★★★★
() автор топика

> они проигнорировали «устаревшие» драйвера kbd/mouse
вообще то после обновки иксов надо пересобирать иксо-дрова

а потом вообще отказывается делать downgrade!

естессно

megabaks ★★★★
()
Ответ на: комментарий от Andrew-R

FEATURES=«buildpkg» в /etc/make.conf поможет. Устаревшие можно чистить с помощью eclean.

Ну и distcc или лучше кросскомпиляцию тоже хорошо бы сделать.

CyberTribe ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.