1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
#!/bin/bash
OPT_SPEC="hes:lb:r::"
LONG_OPT_SPEC="http-server:,skip-lock,basedir:,backup-dir:,from-revision:,exec-only,help:"
PARSED_OPTIONS=$(getopt -n "$0" -a -o $OPT_SPEC --long $LONG_OPT_SPEC -- "$@")
OPTIONS_RET=$?
eval set -- "$PARSED_OPTIONS"
help_usage() {
cat <<EOF
UPDATE használata: mayor update [opciók] [modulok]
A parancs segítségével frissíthetjük a MaYoR rendszert, a program forrását és
az adatbázis-szerkezetet. A frissítések letöltése és kicsomagolása mellett
a szkript egyéb módosításokat is végrehajthat, ezért alapértelmezett működés
esetén a frissítés idejére letiltjuk a napló elérését. A zárolás a
/var/run/mayor.lock állomány létrehozásával történik.
A HTTP szervert, a frissítendő modulokat, a szükséges jelszavak és egyéb beál-
lításokat a /etc/mayor/main.conf állományban kell megadni.
Opciók:
-h, --help: A parancs leírása (amit most olvasol...)
-s, --http-server: A szerver ahonnan a frissítéseket letöltjük
-b, --basedir: A telepítési könyvtár
-l, --skip-lock: A frissítés idejére se zároljuk a program működését
-r, --from-revision: A frissítés indítása a megadott revision számtól - függetlenül a
jelenleg eltárolt aktuális számtól
-e, --exec-only: A frissítő szkriptek futtatása új állományok letöltése nélkül.
Csak a --from-revision opcióval együtt használható!
Modulok:
A frissítendő modulok listája, pl: mayor-base mayor-naplo mayor-portal
EOF
}
if [ $OPTIONS_RET -ne 0 ]; then help_usage; exit; fi
declare -i REV
while [ $# -ge 1 ]; do
case $1 in
--help | -h ) help_usage
exit
;;
--skip-lock | -l ) SKIPLOCK=1
export SKIPLOCK
;;
--exec-only | -e ) EXECONLY=1
export EXECONLY
;;
--http-server | -s ) shift
HTTP_SERVER="$1"
echo "HTTP szerver: $HTTP_SERVER"
;;
--basedir | -b ) shift
BASEDIR="$1"
echo "Alapkönyvtár: $BASEDIR"
;;
--from-revision | -r ) shift
REV="$1"
echo "Revision: $REV"
;;
-- ) shift
break
;;
* ) echo "HIBA: ismeretlen opció: $1" # ide elvileg sose jutunk, mert a getopts már kiszűrte a hibás paraméterek
exit
;;
esac
shift
done
TMPMODS=""
while [ $# -ge 1 ]; do
if [[ ! "${MODS[*]}" =~ .*$1.* ]]; then
echo -e "Ismeretlen modul: $1"
else
TMPMODS="$1 $TMPMODS"
fi
shift
done
if [ "$TMPMODS" != '' ]; then
MODULES=$TMPMODS
fi
###########################
if [ -z $UPDATEDIR ]; then
if [ -f ../config/update.conf ]; then
echo -e "\n\nWARNING: elavult konfigurációs állomány! (update.conf)"
echo " A frissítési rendszer a korábbi backup.conf és update.conf állományok helyett"
echo " egy új, rögzített helyen lévő állományt használ: /etc/mayor/main.conf"
echo " Most - ennek hiányában - a régebbi állományt használjuk"
. ../config/update.conf
else
echo -e "\n\nERROR: Hiányzó konfigurációs file: ../config/update.conf"
pwd
exit 10
fi
fi
# Ha paraméterknént nem volt megadva revision
if [ -z "${REV:-}" ]; then
if [ "$EXECONLY" == "1" ]; then
echo "Hiba: Az --exec-only kapcsoló csak a --from-revision paraméterrel együtt használható!"
exit 9
fi
if [ -f $REVISION_FILE ]; then
REV=`cat $REVISION_FILE`
else
REV=0
fi
fi
echo -e "\n%%%%%%%%%%%%%%%%% $DATETIME %%%%%%%%%%%%%%%%%"
echo -e "\nFrissítés $REV számú változatról."
if [ "$EXECONLY" != "1" ]; then
echo -e "\n * Az frissítéshez szükséges állományok letöltése (eltarthat pár percig)... "
if [ "$MODULES" == '' ]; then
echo -e "\n\nERROR: Nincs megadva a frissítendő modulok listája (/etc/mayor/main.conf)!\n"
exit 1
else
declare -i UJ_REV
if [ "$HTTP_SERVER" == '' ]; then
if [ -f $SVN ]; then
# frissítés SVN-ből
$SVN --force export svn+ssh://svn.mayor.hu/var/svn/trunk/mayor-base/bin "$BASEDIR/bin" > /dev/null
for MODULE in $MODULES; do
echo -n " $MODULE... "
chmod +x $BASEDIR/bin/mayor
if [ $? != 0 ]; then exit 2; fi
UJ_REV=`$SVN --force export svn+ssh://svn.mayor.hu/var/svn/trunk/$MODULE/update "$BASEDIR/update" | grep revision | cut -d ' ' -f 3 | uniq | sed -e 's/\.//g'`
if [ $? != 0 ]; then exit 3; fi
echo "kész."
done
else
echo -e "\n\nERROR: A subversion kliens nem található: $SVN"
exit 4
fi
else
# Munkakönyvtár létrehozása
if [ ! -d $TMPDIR ]; then
mkdir $TMPDIR
chown -R 0:0 $TMPDIR
chmod -R 700 $TMPDIR
else
rm -rf $TMPDIR/*
fi
cd $TMPDIR
# Az md5sum állomány leszedáse
if [ -z $VERSION ]; then
wget "http://www.mayor.hu/download/md5sum"
else
wget "http://www.mayor.hu/download/$VERSION/md5sum"
if [[ ! $HTTP_SERVER =~ .*$VERSION.* ]]; then HTTP_SERVER="$HTTP_SERVER/$VERSION"; fi
fi
if [ $? != 0 ]; then exit 5; fi
UJ_REV=`grep Revision md5sum | cut -d ' ' -f 2`
if [ "$REV" -lt "$UJ_REV" ]; then
# csomagok leszedése
for MODULE in $MODULES; do
echo -n " $MODULE... "
MOD=`echo $MODULE | sed "s#/#-#"`
FILE=`grep "$MOD-rev" md5sum | cut -d ' ' -f 3`
if [ "$FILE" != '' ]; then
wget "$HTTP_SERVER/$FILE"
if [ $? != 0 ]; then
echo -e "\n\n ERROR: Az frissítés nem tölthető le: $FILE!\n"
exit 6
fi
grep $FILE md5sum | md5sum -c --status
if [ $? == 0 ]; then
tar xfz $FILE -C $BASEDIR ./update
else
echo -e "\n\n ERROR: Az ellenörző összeg nem egyezik!\n"
exit 7
fi
else
echo 'Nincs ilyen modul!'
exit 8 # nem szabad hiányzó csomagok mellett frissíteni!!
fi
done
fi
cd $BASEDIR/bin
fi
fi
else # exec-only
if [ -f $REVISION_FILE ]; then
UJ_REV=`cat $REVISION_FILE`
else
UJ_REV=0 # nem frissítünk semmit
fi
fi
if [ "$REV" -ge "$UJ_REV" ]; then
echo -e "\nNincs újabb változat.\n"
echo -e "\n * A szükséges jogosultságok beállítása:"
chmod +x $BASEDIR/bin/mayor
echo 'kész.'
else
echo 'kész.'
. $BASEDIR/update/processUpdateScripts.sh
fi
PWDTEX=`pwd`
echo -e "\nMaYoR TeX formátum állomány újragenerálása... "
cd $BASEDIR/print/module-naplo/tex/ && fmtutil-sys --cnffile $BASEDIR/print/module-naplo/tex/mayor.cnf --fmtdir $BASEDIR/print/module-naplo/ --byfmt mayor > /dev/null 2>&1
echo -e "\nMaYoR XeTeX formátum állomány újragenerálása... "
cd $BASEDIR/print/module-naplo/xetex/ && fmtutil-sys --cnffile $BASEDIR/print/module-naplo/xetex/mayor-xetex.cnf --fmtdir $BASEDIR/print/module-naplo/ --byfmt mayor-xetex > /dev/null 2>&1
cd $PWDTEX
echo 'kész.'
echo -e "\nFrissítés vége.\n"
exit 0
|