Subversion Repositories ALCASAR

Rev

Rev 1164 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
872 richard 1
#!/bin/bash
230 franck 2
# $Id: alcasar-urpmi.sh 1207 2013-09-14 16:21:46Z richard $
672 richard 3
 
4
# alcasar-urpmi.sh
1003 richard 5
# by 3abtux and Rexy
672 richard 6
# This script is distributed under the Gnu General Public License (GPL)
7
 
497 richard 8
# script de mise en place des dépots RPM 
672 richard 9
# configure the RPM repository
230 franck 10
 
1060 richard 11
Lang=`echo $LANG|cut -c 1-2`
1003 richard 12
VERSION="2"
525 richard 13
ARCH="i586" 
1207 richard 14
# The kernel version we compile netflow for
15
KERNEL="kernel-desktop-3.4.45-1.mga2-1-1.mga2"
532 richard 16
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
1207 richard 17
PACKAGES="sudo freeradius freeradius-mysql freeradius-ldap freeradius-web apache-mpm-prefork apache-mod_ssl apache-mod_php iptables squid dansguardian postfix mariadb logwatch ntp bind-utils openssh-server php-xml php-ldap php-mysql pam_ccreds rng-utils dnsmasq syslinux rsync cronie-anacron clamav pm-fallback-policy php-mbstring perl-rrdtool perl-MailTools perl-Socket6 php-sockets fail2ban"
18
 
497 richard 19
rpm_repository_sync ()
20
{
835 richard 21
cat <<EOF > /etc/urpmi/urpmi.cfg
22
{
23
downloader: wget
497 richard 24
}
835 richard 25
EOF
1003 richard 26
echo ${!MIRRORLIST}
27
urpmi.addmedia core --probe-synthesis --mirrorlist ${!MIRRORLIST} /media/core/release
28
urpmi.addmedia core-updates --update --probe-synthesis --mirrorlist ${!MIRRORLIST} /media/core/updates
835 richard 29
}
497 richard 30
 
532 richard 31
rpm_error ()
32
{
33
echo
1060 richard 34
if [ $Lang == "fr" ]
35
then	
36
	echo "Relancez l'installation ultérieurement."
37
	echo "Si vous rencontrez à nouveau ce problème, modifier les variables MIRRORLIST[1&2] du fichier 'scripts/alcasar-urpmi.sh'"
38
else
39
	echo "Try an other install later."
40
	echo "If this problem occurs again, change the MIRRORLIST[1&2] variables in the file 'scripts/alcasar-urpmi.sh'"
41
fi
532 richard 42
}
1003 richard 43
# extract the current Mandriva/Mageia version and hardware architecture (i586 ou X64)
230 franck 44
fic=`cat /etc/product.id`
1003 richard 45
unknown_os=0
457 richard 46
old="$IFS"
47
IFS=","
230 franck 48
set $fic
49
for i in $*
50
do
1003 richard 51
	if [ "`echo $i|grep distribution|cut -d'=' -f1`" == "distribution" ]
52
	then 
53
		DISTRIBUTION=`echo $i|cut -d"=" -f2`
54
		unknown_os=`expr $unknown_os + 1`
55
	fi
230 franck 56
	if [ "`echo $i|grep version|cut -d'=' -f1`" == "version" ]
57
	then 
457 richard 58
		CURRENT_VERSION=`echo $i|cut -d"=" -f2`
1003 richard 59
		unknown_os=`expr $unknown_os + 1`
230 franck 60
	fi
456 franck 61
	if [ "`echo $i|grep arch|cut -d'=' -f1`" == "arch" ]
62
	then 
63
		ARCH=`echo $i|cut -d"=" -f2`
1003 richard 64
		unknown_os=`expr $unknown_os + 1`
456 franck 65
	fi
230 franck 66
done
457 richard 67
IFS="$old"
1012 richard 68
if [[ ( $unknown_os != 3 || "$DISTRIBUTION" != "Mageia" ) && ( "$CURRENT_VERSION" != "2" ) ]]
1060 richard 69
then
70
	if [ $Lang == "fr" ]
71
	then	
72
		echo "La migration automatique d'ALCASAR ne peut pas être réalisée."
1062 richard 73
		echo "Le système d'exploitation doit être remplacé"
1060 richard 74
	else
75
		echo "The automatic update of ALCASAR can't be performed."
76
		echo "The OS must be replaced"
77
	fi
78
	if [ -e /tmp/alcasar-conf.tar.gz ]
1003 richard 79
	then
1012 richard 80
		echo
1060 richard 81
		if [ $Lang == "fr" ]
82
		then	
83
			echo "1 - Récupérez le fichier de configuration actuel (/tmp/alcasar-conf.tar.gz)."
84
			echo "2 - Installez Linux-Mageia2 (cf. doc d'installation)"
1062 richard 85
			echo "3 - copiez le fichier 'alcasar-conf.tar.gz' dans le répertoire '/tmp' avant de lancer l'installation d'ALCASAR"
1060 richard 86
		else
87
			echo "1 - Retrieve the configuration file (/tmp/alcasar-conf.tar.gz)"
88
			echo "2 - Install Linux-Mageia2 (cf. installation doc)"
89
			echo "3 - Copy the file 'alcasar-conf.tar.gz' in the folder '/tmp' before launching the installation of ALCASAR"
90
		fi
1012 richard 91
	fi
1003 richard 92
	exit 1
93
fi
532 richard 94
# We prefer wget than curl
582 richard 95
urpmi --no-verify-rpm --auto conf/rpms/$ARCH/wget*.rpm
497 richard 96
# Set the RPM repository
525 richard 97
MIRROR_NBR=2
1003 richard 98
#                       For Europeans 
99
MIRRORLIST1="http://www.mirrorservice.org/sites/mageia.org/pub/mageia/distrib/$VERSION/$ARCH"
525 richard 100
#                       For International install
1003 richard 101
MIRRORLIST2="http://mirrors.mageia.org/api/mageia.$VERSION.$ARCH.list"
497 richard 102
try_nb="0"; nb_repository="0"
1003 richard 103
while [ "$nb_repository" != "2" ]
497 richard 104
do
105
	try_nb=`expr $try_nb + 1`
106
	MIRRORLIST="MIRRORLIST$try_nb"
107
	rpm_repository_sync 
108
	nb_repository=`cat /etc/urpmi/urpmi.cfg|grep mirrorlist|wc -l`
1003 richard 109
	if [ "$nb_repository" != "2" ]
497 richard 110
	then
1060 richard 111
		if [ $Lang == "fr" ]
112
		then	
113
			echo "Une erreur a été détectée lors de la synchronisation avec le dépot N°$try_nb."
114
		else
115
			echo "An error occurs when synchronising the repositories N°$try_nb"
116
		fi
497 richard 117
		if [ $(expr $try_nb) -eq $MIRROR_NBR ]
118
		then
532 richard 119
			rpm_error
497 richard 120
			exit 1
121
		fi
1060 richard 122
		if [ $Lang == "fr" ]
123
		then	
124
			echo "Voulez-vous tenter une synchronisation avec un autre dépôt?"
125
		else
126
			echo "Do you wan't to try a synchronisation with an other repository?"
127
		fi
497 richard 128
		response=0
129
		PTN='^[oOnNyY]$'
130
		until [[ $(expr $response : $PTN) -gt 0 ]]
131
		do
132
			read response
133
		done
134
		if [ "$response" = "n" ] || [ "$response" = "N" ] 
135
		then
136
			exit 1
137
		fi
138
	fi
139
done
772 richard 140
# delete unused RPMs
1207 richard 141
if [ $Lang == "fr" ]
142
then
143
	echo "Cleaning the system : "
144
else
145
	echo "Nettoyage du système : "
146
fi
1076 richard 147
for rm_rpm in shorewall mandi radeontool avahi
772 richard 148
do
149
	/usr/sbin/urpme --auto $rm_rpm --auto-orphans 2>/dev/null
150
	echo -n "."
151
done
1207 richard 152
# download the kernel used by ALCASAR and fix its version
1060 richard 153
if [ $Lang == "fr" ]
154
then	
1207 richard 155
	echo "Récupération du noyau Linux exploité par ALCASAR. Veuillez patienter ..."
156
else
157
	echo "Download the Linux kernel used by ALCASAR. Please wait ..."
158
fi
159
urpmi --auto --quiet $KERNEL
160
echo "/^kernel/" > /etc/urpmi/skip.list
161
# download updated RPM in cache 
162
if [ $Lang == "fr" ]
163
then	
1060 richard 164
	echo "Récupération des paquetages de mise à jour. Veuillez patienter ..."
165
	echo "Il est temps d'aller prendre un café (ou une bonne bière) ;-)"
166
else
167
	echo "Updated RPM download. Please wait ..."
168
	echo "You should now take a coffe (or a good beer) ;-)"
169
fi
835 richard 170
urpmi --auto --auto-update --quiet --test --retry 2
460 richard 171
if [ "$?" != "0" ]
172
then
173
	echo
1060 richard 174
	if [ $Lang == "fr" ]
175
	then	
176
		echo "Une erreur a été détectée lors de la récupération des paquetages."
177
	else
178
		echo "An error occurs when downloading RPMS"
179
	fi
532 richard 180
	rpm_error
470 richard 181
	exit 1
460 richard 182
fi
183
# update with cached RPM
184
urpmi --auto --auto-update
799 richard 185
if [ "$?" != "0" ]
186
then
187
	echo
1060 richard 188
	if [ $Lang == "fr" ]
189
	then	
190
		echo "Une erreur a été détectée lors de la mise à jour des paquetages."
191
	else
192
		echo "An error occurs when updating packages"
193
	fi
799 richard 194
	rpm_error
195
	exit 1
196
fi
772 richard 197
# Clean the RPM cache
198
urpmi --clean
532 richard 199
# Download of ALCASAR specifics RPM in cache (and test)
1060 richard 200
if [ $Lang == "fr" ]
201
then	
202
	echo "Récupération des paquetages complémentaires. Veuillez patienter ..."
203
else
204
	echo "Download of complementary packages. Please wait ..."
205
fi
835 richard 206
urpmi --auto $PACKAGES --quiet --test --retry 2
532 richard 207
if [ "$?" != "0" ]
208
then
209
	echo
1060 richard 210
	if [ $Lang == "fr" ]
211
	then	
212
		echo "Une erreur a été détectée lors de la récupération des paquetages complémentaires."
213
	else
214
		echo "An error occurs when downloading complementary packages"
215
	fi
532 richard 216
	rpm_error
217
	exit 1
218
fi
219
# update with cached RPM
220
urpmi --auto $PACKAGES 
799 richard 221
if [ "$?" != "0" ]
222
then
223
	echo
1060 richard 224
	if [ $Lang == "fr" ]
225
	then	
226
		echo "Une erreur a été détectée lors de l'installation des paquetages complémentaires."
227
	else
228
		echo "An error occurs when installing complementary packages"
229
	fi
799 richard 230
	rpm_error
231
	exit 1
232
fi
1207 richard 233
# Keep only the kernel version we compil netflow with, and remove all others
234
kernelVersion=$(rpm -qa | grep "kernel-desktop")
235
for i in $kernelVersion
236
do
237
	if [ ! $i = $KERNEL ];then
238
		urpme --auto $i
239
	fi
240
done
1006 richard 241
# delete old alcasar RPMs and unused services
1007 richard 242
for rm_rpm in c-icap-server lib64chilli0 libchilli0 python-coova-chilli cyrus-sasl mageia-gfxboot-theme
532 richard 243
do
244
	/usr/sbin/urpme --auto $rm_rpm --auto-orphans 2>/dev/null
245
done
1207 richard 246
 
972 richard 247
# Save chilli launch script (erase with new rpm one)
1007 richard 248
[ -e /etc/chilli.conf ] && cp /etc/chilli.conf /tmp/
972 richard 249
# Install home made RPMs
532 richard 250
urpmi --no-verify --auto conf/rpms/$ARCH/*.rpm
972 richard 251
# restore chilli launch script
1007 richard 252
[ -e /tmp/chilli.conf ] && mv /tmp/chilli.conf /etc/
532 richard 253
# Clean the RPM cache
254
urpmi --clean
1159 crox53 255
 
230 franck 256
exit 0