Что нам стоит мир построить?

Докучаев Дмитрий aka Forb

Xakep, номер #059, стр. 059-086-1

(forb@real.xakep.ru)

Удаленный cvsup любимой системы

Переустановка системы всегда была изнуряющей проблемой для пользователя или сетевого администратора. Появление новой версии знаменовалось новыми возможностями операционки, а также патчингом старых багов. Установить OS на сервер, который не должен выключаться более чем на одну минуту – большая проблема. Но не для FreeBSD.

Как ты думаешь, почему платформу BSD так полюбили администраторы? Ведь она сильно отличается от старого доброго Linux как синтаксисом команд, так и своим устройством. Одним из преимуществ BSD (FreeBSD, в частности) перед другими сетевыми операционками является cvsup – синхронизация исходных текстов системы. Такая поддержка позволяет не только обновлять отдельные компоненты системы, но и всю ось в целом, что очень удобно.

Как это работает?

Принцип вышеописанной организации довольно прост. На отдельных серверах по всему миру устанавливается демон cvsupd, в задачи которого входит обмен данными между клиентом по специальному протоколу. Приложение соединяется с сервером и просит показать ему последние изменения в исходных текстах системы. Синхронизация с содержимым каталога /usr/src (с исходниками фряхи) позволяет экономить трафик и не стягивать уже имеющиеся файлы. Ах да, совсем забыл – перед запуском cvsup администратор должен составить конфиг для клиента, где указывается, что именно необходимо обновить. После такой процедуры осуществляется переход в “/usr/src/проект” и компиляция сишных файлов. Здесь нет ничего хитрого.

Сборка системы

Как я уже говорил, с появлением cvsup быстрая переустановка системы становится возможной. Даже удаленно. Поэтому моя задача – описать процесс именно ремоутного апдейта системы. Конечно, это рискованно – один неверный шаг, и контакт с операционкой будет потерян. Но кто сказал, что ты ошибешься? ;) Итак, представим: ты имеешь доверенный (скарженный, сворованный, подаренный – нужное подчеркнуть) шелл с поднятой на нем FreeBSD 4.2. На момент установки это была чуть ли не самая стабильная система, но спустя несколько лет все изменилось. Операционка оказалась дырявой, а накладывать патчи на каждый ее компонент весьма гиморно. Выход один – переустановка. Последняя на сегодня стабильная версия 4.8-RELEASE. Ее тексты мы и будем накладывать на текущую фряху.

Клиентская часть

Не торопись переходить к составлению конфа и процессу синхронизации. Перед этим необходимо собрать клиент cvsup. Воспользуемся услугами портов, хотя версия, которую испечет make, будет непригодной для использования. Это связано со старой базой портов (посмотри еще раз на релиз нашей фряхи), а также с изменением протокола обмена в новой версии клиента. Но из-за туевой хучи зависимостей, сборка зависимостей из портов будет наилучшим вариантом. Переходим в папку /usr/ports/net/cvsup и отдаем команду “make depends”. Умная система соберет базу m3, необходимую для клиента. Теперь можешь компилировать клиент. Для этого скачай свежий cvsup по адресу http://people.freebsd.org/~jdp/s1g/cvsup-snap-16.1e.tar.gz и распакуй архив. Компилировать клиент нужно с опцией –WITHOUT_X11, чтобы не устанавливать ненужные библиотеки XFree (приложение способно поддерживать гуевую оболочку). Для этого используется команда make -DWITHOUT_X11. Когда клиент будет успешно скомпилен, можно переходить к следующему шагу – составлению конфа.

Содержание  Вперед на стр. 059-086-2
ttfb: 5.3682327270508 ms