суббота, 14 мая 2011 г.

Автоматизация пересборки FreeBSD

1. Обновление исходников

csup-файл:
*default host=cvsup11.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default tag=RELENG_8
*default delete use-rel-suffix
*default compress
src-all


Скрипт обновления исходников:
#!/bin/csh
set SYSTEMPOOL=selena
set TIMESTAMP=`date -u +%Y%m%d%H%M`
#-zfs snapshot ${SYSTEMPOOL}/usr/src@${TIMESTAMP}
cd /usr/src && chflags -R noschg *
csup /etc/sys-supfile
head -25 /usr/src/UPDATING
cd /usr/src/sys/`uname -m`/conf/ && diff `uname -i` GENERIC


2. Скрипт компиляции и сборки

#!/bin/csh
set LOG=/var/log/update_system_build.log
set DONE="System Build Failed."
set TIMESTAMP=`date -u +%Y%m%d%H%M`
cd /usr/src/ && chflags -R noschg * && make cleandir && make cleandir buildworld buildkernel && set DONE="System Build Success."
echo "${TIMESTAMP}: ${DONE}" >> ${LOG}
tail -n1 ${LOG}


3. Ручная работа

shutdown now
cd /usr/src/ && make installkernel installworld
mergemaster
shutdown -r now
shutdown now
cd /usr/src/ && make BATCH_DELETE_OLD_FILES=true delete-old delete-old-libs
shutdown -r now


*) mergemaster я обычно выполняю в диалоговом режиме, чтобы увидеть изменения в системных конфигурационных файлах. В повседневных пересборках, как правило, практически нет критичных изменений и можно смело нажимать [i] для принятия нового.

Комментариев нет: