madf: (Default)
[personal profile] madf
... на чомусь для цього непридатному.
Як ви, мабуть, знаєте, у мене є VPS'ка з Gentoo на борту. Я там довго тримав gitolite і trac для одного проекту — ну так, на пробу. Пам’яті мало, проблем багато. І одна із проблем — неможливість нормального оновлення. Ядро там 2.6.18, а сучасні версії udev хочуть щонайменше 2.6.32. А значить сам udev і все що від нього залежить оновленню не підлягає.
І от, після останніх подій навколо Google Reader я узнав про Tiny Tiny RSS і узнав що Liferea вміє з ним синхронізуватись. А це була моя давня мрія — нормальний RSS Reader з синхронізацією між компами (веб інтерфейси на стільки убогі що використовувати їх можна тільки у безвиході).
Тож вирішив спробувати. Правда, я зараз використовую Akregator, а він синхронізацію не вміє, але як воно заведеться то можна і дописати.

tt-rss написаний на богомерзькому PHP, а значить треба поставити на VPS PHP. На локальну зборку не вистачило пам’яті, тому вирішив поставити бінарний пакет з робочої машини. Та от біда, версія portage tree там річної давнини як мінімум, і тих версій PHP що там є зараз у portage немає вже. Ну що ж, оновимо portage. rsync не вистачило пам’яті на синхронізацію (на диво багато він хоче), тому розпакував тарбол (адреси portage-latest.tar.xz я знаю на пам’ять). Розпакував. Просить оновити профайл з 10.0 до 13.0. Оновив. Після цього вирішив оновити portage, але зась — поточний не вміє EAPI5! Вихід? Відкочуємося на профайл 10.0 (руками, бо у eselect profile list його давно вже немає) і оновлюємо portage. Але в минулому році пошаманили з підписами пакетів, прибрали якийсь старий алгоритм і додали Whirpool. Той OpenSSL що у мене там стояв про Whirpool нічого не знає, а тому провірити підпис жодного пакету не здатен. Засада!
Я поліз у коморуінет і накопав LiveDVD 2012-го року, один із перших. Вирішив витягти з нього більш старе portage tree і оновитись у два етапи. Скачав, змонтував... а там SquashFS, підтримки якої у мене в ядрі немає. Зате можна поставити squsahfs-tools який вміє розпаковувати із образу частини файлової системи. Поставив, висмикнув /usr/portage, запакував і переслав. Оновлення почав з openssl, бо без whirpool життя нема. Зібрав я його, запустив запропоновані revdep-rebuild --library. І тут мені було б непогано здивуватись, чому воно не попросило openssh перезібрати, але я був трохи затурканий і не помітив. І просто revdep-rebuild не зробив. Результат закономірний — втратив контроль над сервером.
Ну дідько з ним, нічого там важливого не було. Репозиторій проекту у мене є локально, а trac був пустий. Створюю VPS „з нуля“. Образ, як водиться, 2008-го року. Починаю все з початку. Знову качаю LiveDVD (бо старий давно видалив), знову розпаковую portage tree із образу у squashfs, знову оновлюю. Цього разу не забуваю перезібрати openssh. Після перезборки додатково перевіряю що доступ не втрачено. Потім „підтягую“ інші пакети. Потім синхронізую дерево і продовжую оновлення. І один із них тягне за собою binutils.
binutils (а точніше gold) для для компіляції хоче забагато пам’яті, навіть старі трюки не допомагають. Тому збираю бінарник у себе локально і ставлю уже зібраний із бінарника. Після цього перестає збиратись усе, бо binutils злінковані з новою glibc. Ну не страшно, збираю у себе бінарник glibc і ставлю його. Після цього починаються дива. Спочатку бачу незрозумілу лайку від awk — оновлюю gawk. Він не хоче оновлюватись і зависає на configure. При чому висить на sleep 1 — це я бачу у htop. Ставлю бінарником, але дива продовжуються. Більше половини пакетів тупо зависають на sleep 1. Запускаю в консолі sleep 1 — висить! Добре, поставимо strace, подивимось. Ставлю — теж висне на configure. Ставлю бінарник. Запускаю і бачу що nanosleep викликано з абсолютно неадекватною кількістю секунд (менше часу теплової смерті Всесвіту, але все таки). sleep входить у coreutils. Перезбираю coreutils (а точніше знову ставлю з бінарнику) — без толку. Тоді я розпаковую у себе coreutils і дивлюсь на код sleep. Нічого там цікавого немає, крім одного — він свій параметр трактує як floating point number і перетворює на число за допомогою strtod. strtod — частина glibc. У мене закрадаються підозри. Пишу коротеньку тестову програмку яка робить те саме — перетворює argv[1] на double. Збираю на VPS. І дійсно, для нуля все добре, а для інших чисел видає щось несусвітне. Ах ти ж лампочка! У мене ж стоїть -march=native, процесор AMD Phenom II, а на сервері Intel Core I7. „Занулюю“ CFLAGS/CXXFLAGS, перезбираю, перевстановлюю glibc, перевіряю — фух, strtod запрацював нормально, слава Перунові. Ну а далі вже знамо як, перезбираю все що понавстановлював... Зараз от як раз підібрався до PHP. Подивимось як воно піде.
Якщо все буде в порядку, візьму собі нормальний VPS на KVM з гектаром опери. А то якось тіснувато тут. Навіть git доводилось „тюнити“, бо він на великих комітах жер пам’ять як не в себе. Ну і з rsync неподобство.
Мораль... Та яка тут мораль. Чим морочитись із сервером краще б щось корисне зробив. Чи на свіжому повітрі погуляв — у нас тут весна настала, нарешті. Сьогодні, вважай, +20°C було.

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 6th, 2026 05:29 pm
Powered by Dreamwidth Studios