[sisyphus] Re: стабильный... нестабильный...
Michael Shigorin
=?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Пт Июн 24 20:17:35 MSD 2005
On Fri, Jun 24, 2005 at 07:18:52PM +0400, Dmitry V. Levin wrote:
> > > > Иван, а не хотите потихоньку (может, с 3.0) съезжать со всем
> > > > этим хозяйством с сизифа на что-то более предсказуемое плюс
> > > > бэкпорты по вкусу [и с Вашим участием]?
> > > Думаю, что это очень нездравое предложение.
> > Поясни?
> Ты предлагаешь человеку, который может позволить себе
> тестировать не самые широко используемые компоненты Сизифа и
> тем самым делать их лучше, прекратить тестирование.
Я предлагаю подумать. Подумав сам, что именно предлагаю.
> А ведь это нанесёт больший ущерб Сизифу, чем все ругающие ALT
> вместе взятые в качестве показателя экспоненты.
Если человек в очередной взрыв психанёт и уйдёт из сообщества,
будет хуже. К сожалению, так было и не раз (и не с самыми
наивными людьми).
Как ты можешь помнить, в теме "стабильный сизиф" я всеми
конечностями держался за тезис "если можно не разламывать или
локализовать проблемы -- давайте постараемся делать так".
Бишь мне как разработчику на базе Sisyphus, а не дистрибутивов,
*критично* качество части его пакетной базы.
Но рекомендации даются не из эгоистических побуждений --
я считаю, что гораздо более уместным вариантом тестирования
Sisyphus является наличие у тестирующего:
- системы снапшотов (свой кривой скрипт и ещё пару прилагаю);
- тестовых систем (возможно, находящихся в эксплуатации, но легко
выводимых из неё и/или некритичных -- как, например, один или
несколько узлов в кластере);
- систем, которые работают на снапшоте, прошедшем предварительную
обкатку на тестовых агрегатах.
На данный момент моё понимание ситуации говорит о том, что без
подобной буферизации тестирование может обойтись слишком дорого
человеку, а вследствие этого -- проекту.
PS: повешено на http://wiki.sisyphus.ru/admin/HandyAdvice,
comments are welcome.
--
---- WBR, Michael Shigorin <mike на altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
#!/bin/sh
# script by Michael Shigorin <mike на osdn.org.ua> for snapshotting
# ALT Linux Sisyphus locally; feel free to use and modify, would
# be glad to hear back about changes
# v0.2: fix STUPID bug which manifested when doing several
# syncs per day *and* the first wasn't done off complete (stable)
# mirror
# v0.3: better $DEST handling in case of repeated rsync failures
# during some period of time *but* with some data transferred
# so they better not get lost and re-rsynced
# v0.4: TIMESTAMP fix by Denis Smirnov (mithraen на altlinux) induced
# by discussion with Dmitry Levin (ldv на altlinux)
# v0.5: altlinux-release is searched in noarch instead of i586
# mirror/site-specific
SRC="ftp.altlinux.org.ua::ALTLinux/Sisyphus/"
BASEDIR="/var/ftp/pub/EMT/Sisyphus/"
# retry params
MAXCOUNT=5
TIMEOUT=60
# shouldn't need to be changed
DATE=`date +%Y%m%d`
LOGDIR="$BASEDIR/log/"
LOGFILE="$LOGDIR/$DATE.log"
DEST="$BASEDIR/.syncing/"
RSYNCARGS="-av --partial --delete --bwlimit=120"
RPMARGS="-qp --queryformat %{RELEASE}\n"
TAGFILE="$DEST/files/noarch/RPMS/altlinux-release-Sisyphus-alt*.noarch.rpm"
unset OK
# init env
mkdir -p "$BASEDIR" "$LOGDIR"
cd "$BASEDIR"
# create hardlinked copy or init dir
LAST=`ls -d1 20?????? 2>/dev/null | tail -1`
[ -d "$DEST" ] || mkdir -p "$DEST"
[ -n "$LAST" ] && {
[ `/bin/du -s "$LAST" |cut -f1` -gt `/bin/du -s "$DEST" |cut -f1` ] && {
cp -alf "$LAST"/* "$DEST"
}
}
# try to sync up
for attempt in `seq 1 $MAXCOUNT`; do
rsync $RSYNCARGS "$SRC" "$DEST" 2>&1 >> "$LOGFILE" && {
OK="yes"
break
}
sleep "$TIMEOUT"
done
[ -z "$OK" ] && exit 1
# get timestamp from specific package and move to it
#TIMESTAMP=`rpm $RPMARGS $TAGFILE | tail -1 | sed 's/alt//'`
TIMESTAMP=$(date +"%Y%m%d" -d "$(grep ^Date: $TAGFILE | sed 's!.*\([0-9][0-9] ... [0-9][0-9][0-9][0-9]\).*!\1!')")
[ -d "$TIMESTAMP" ] && {
rsync $RSYNCARGS "$DEST" "$TIMESTAMP"/ 2>&1 >> "$LOGFILE"
} || {
mv "$DEST" "$TIMESTAMP" 2>>"$LOGFILE"
}
touch -d "$DATE" "$TIMESTAMP"
rm -f current
ln -s "$TIMESTAMP" current
rm -rf "$DEST"
# that's all :)
echo "** $TIMESTAMP sync OK" >> "$LOGFILE"
----------- следующая часть -----------
#!/bin/sh
#
# Copyright 2004 (c) Michael Shigorin <mike на osdn.org.ua>
# Copyright 2004-2005 (c) Ivan Fedorov <ns на altlinux.ru>
# script for snapshotting ALT Linux Sisyphus locally.
#
#
# mirror/site-specific
SRC="rsync.altlinux.ru::ALTLinux/Sisyphus/"
BASEDIR="/var/ftp/pub/distributions/ALTLinux/Sisyphus-daily/"
########################################
###SRC="sisyphus.irkutsk.ru::ALTLinux/Sisyphus/"
###BASEDIR="/var/tmp/SIS/Sisyphus-daily/"
########################################
# retry params
MAXCOUNT=10
TIMEOUT=60
# shouldn't need to be changed
DATE=`date +%Y%m%d`
DATE_P=`date +%Y/%m/%d`
DATE_Y=`date +%Y`
DATE_M=`date +%m`
########################################
###DATE=`date +%Y%m%d -d 1day`
###DATE_P=`date +%Y/%m/%d -d 1day`
########################################
LOGDIR="$BASEDIR/../log/"
LOGFILE="$LOGDIR/Sisyphus_$DATE.log"
DEST="$BASEDIR/.syncing"
RSYNCARGS="-vaz --stats --delete-after"
unset OK
# init env
mkdir -p "$BASEDIR/$DATE_Y/$DATE_M" "$LOGDIR"
cd "$BASEDIR" || exit 1
# create hardlinked copy or init dir; order critical
LAST=`ls -d1 20??/??/?? 2>/dev/null | sort | tail -1`
########################################
###LAST="2005/01/19"
########################################
rm -rf "$DEST"
mkdir -p "$DEST"
[ ! -d "$LAST" ] && {
echo "Can't create $DEST" >> "$LOGFILE"
exit 1
}
for attempt in `seq 1 $MAXCOUNT`; do
rsync $RSYNCARGS "$SRC" "$DEST" --link-dest "$BASEDIR/$LAST" 2>&1 >> "$LOGFILE" && {
OK="yes"
break
}
sleep "$TIMEOUT"
done
[ -z "$OK" ] && {
echo "Syncing problems" | tee -a "$LOGFILE"
exit 1
}
[ ! -d "$BASEDIR/$DATE_P" ] && {
mv "$DEST" "$DATE_P"
# fix symlink
rm -f $BASEDIR/../Sisyphus
ln -s Sisyphus-daily/"$DATE_P" $BASEDIR/../Sisyphus
} || {
echo "$DATE_P already exists" | tee -a "$LOGFILE"
mv "$DEST" "$DATE_P.new"
exit 2
}
echo "** $DATE sync OK" >> "$LOGFILE"
----------- следующая часть -----------
#!/bin/sh -e
PROG="${0##*/}"
Fatal()
{
echo "${0##*/}: $*" >&2
exit 1
}
export LC_ALL=C
sisyphus=/path/to/Sisyphus
pattern='^/path/to/archive/Sisyphus/[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}$'
format='/path/to/archive/Sisyphus/%CY/%Cm/%Cd\n/path/to/archive/Sisyphus/%TY/%Tm/%Td\n'
old="$(find /path/to/archive/Sisyphus/ -type d -mindepth 3 -maxdepth 3 |egrep "$pattern" |sort -r |head -1)" ||
Fatal "old sisyphus lookup failed."
[ -n "$old" -a -d "$old" ] ||
Fatal "old sisyphus lookup failed."
new="$(find "$sisyphus"/i?86/base -mindepth 1 -maxdepth 1 -type f -name pkglist.\* -printf "$format")" ||
Fatal "new sisyphus lookup failed."
new="$(echo "$new" |egrep "$pattern" |sort -r |head -1)"
[ -n "$new" ] ||
Fatal "new sisyphus lookup failed."
if [ "$old" = "$new" ]; then
echo "$old: latest snapshot already exists."
exit 0
fi
if [ -d "$new" ]; then
echo "$old: NON-latest snapshot already exists."
exit 0
fi
echo "New snapshot to be created: $new"
mkdir -pv ${new%/*}
cp -al "$old" "$new"
rsync -va --delete-after --stats "$sisyphus"/ "$new"/
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20050624/08967f27/attachment-0003.bin>
Подробная информация о списке рассылки Sisyphus