Subversion Repositories ALCASAR

Rev

Rev 3049 | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
2941 rexy 1
#!/bin/bash
2
 
3
# alcasar-rpm.sh
4
# by 3abtux and Rexy
5
# This script is distributed under the Gnu General Public License (GPL)
6
 
2990 rexy 7
# script de mise en place des dépots RPM + installation des RPM complémentaires
8
# configure the RPM repository + complementary RPM installation
2941 rexy 9
 
10
Lang=`echo $LANG|cut -c 1-2`
2971 rexy 11
SED="/bin/sed -i"
2941 rexy 12
VERSION="7"
13
ARCH="x86_64"
14
# The kernel version we compile netflow for
2968 rexy 15
KERNEL="kernel-server-5.10.46-1.mga7-1-1.mga7"
2941 rexy 16
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
17
# (old) perl-Socket6 : needed by nfsen
18
# "fonts-dejavu-common" & "fonts-ttf-dejavu" : fonts needed by wkhtmltopdf
19
# "lsscsi" & nvme-cli" : needed by phpsysinfo
20
# "socat" : avoid a warning when run the install script of letsencrypt ("acme.sh")
21
# "sudo" : needed after a reinstallation (to be investigated)
2990 rexy 22
# "clamav" + "clamav-db" : needed because of a lack of mutual dependance
23
# "postfix" + "cyrus-sasl" : email registration method
3051 rexy 24
PACKAGES="vim-enhanced freeradius freeradius-mysql freeradius-ldap lighttpd lighttpd-mod_auth php-fpm php-gd php-ldap php-mysqli php-mbstring php-sockets php-curl php-pdo_sqlite php-cli unbound e2guardian postfix mariadb ntp bind-utils openssh-server rng-utils rsync clamav clamav-db clamd fail2ban gnupg2 ulogd ipset usb_modeswitch vnstat dos2unix p7zip msec kernel-userspace-headers kernel-firmware-nonfree dnsmasq dhcp-server tcpdump fonts-dejavu-common fonts-ttf-dejavu lsscsi nvme-cli sudo socat postfix cyrus-sasl"
2941 rexy 25
 
26
rpm_repository_sync ()
27
{
28
cat <<EOF > /etc/urpmi/urpmi.cfg
29
{
30
downloader: wget
31
}
32
EOF
33
echo ${!MIRRORLIST}
34
urpmi.addmedia core --probe-synthesis --mirrorlist ${!MIRRORLIST} /media/core/release
35
urpmi.addmedia core-updates --update --probe-synthesis --mirrorlist ${!MIRRORLIST} /media/core/updates
36
urpmi.addmedia nonfree --probe-synthesis --mirrorlist ${!MIRRORLIST} /media/nonfree/release
37
urpmi.addmedia nonfree-updates --update --probe-synthesis --mirrorlist ${!MIRRORLIST} /media/nonfree/updates
38
}
39
 
40
rpm_error ()
41
{
42
echo
43
if [ $Lang == "fr" ]
44
then
45
	echo "Relancez l'installation ultérieurement."
46
	echo "Si vous rencontrez à nouveau ce problème, modifier les variables MIRRORLIST[1&2] du fichier 'scripts/alcasar-rpm.sh'"
47
else
48
	echo "Try an other install later."
49
	echo "If this problem occurs again, change the MIRRORLIST[1&2] variables in the file 'scripts/alcasar-rpm.sh'"
50
fi
51
}
52
 
53
# extract the current Mageia version and hardware architecture (i586 ou X64)
54
fic=`cat /etc/product.id`
55
old="$IFS"
56
IFS=","
57
set $fic
58
for i in $*
59
do
60
	if [ "`echo $i|grep distribution|cut -d'=' -f1`" == "distribution" ]
61
	then
62
		DISTRIBUTION=`echo $i|cut -d"=" -f2`
63
	fi
64
	if [ "`echo $i|grep version|cut -d'=' -f1`" == "version" ]
65
	then
66
		CURRENT_VERSION=`echo $i|cut -d"=" -f2`
67
	fi
68
	if [ "`echo $i|grep arch|cut -d'=' -f1`" == "arch" ]
69
	then
70
		ARCH=`echo $i|cut -d"=" -f2`
71
	fi
72
done
73
IFS="$old"
74
 
75
# We prefer wget than curl
76
urpmi --no-verify-rpm --auto rpms/$ARCH/wget*.rpm
77
 
78
# Set the RPM repository (if not already set)
79
ACTIVE_REPO=`cat /etc/urpmi/urpmi.cfg|grep "mageia.org"|wc -l`
2990 rexy 80
MIRROR_NBR=3
81
#                       For French
82
MIRRORLIST1="http://ftp.free.fr/mirrors/mageia.org/distrib/$VERSION/$ARCH"
2941 rexy 83
#                       For Europeans
2990 rexy 84
MIRRORLIST2="https://www.mirrorservice.org/pub/mageia/distrib/$VERSION/$ARCH"
85
#                       For everybody
86
MIRRORLIST3="https://mirrors.mageia.org/api/mageia.$VERSION.$ARCH.list"
2941 rexy 87
try_nb="0"; nb_repository="0"
88
while [ "$nb_repository" != "4" ]
89
do
90
	try_nb=`expr $try_nb + 1`
91
	MIRRORLIST="MIRRORLIST$try_nb"
92
	rpm_repository_sync
93
	nb_repository=`cat /etc/urpmi/urpmi.cfg|grep mirrorlist|wc -l`
94
	if [ "$nb_repository" != "4" ]
95
	then
96
		if [ $Lang == "fr" ]
97
		then
98
			echo "Une erreur a été détectée lors de la synchronisation avec le dépot N°$try_nb."
99
		else
100
			echo "An error occurs when synchronising the repositories N°$try_nb"
101
		fi
102
		if [ $(expr $try_nb) -eq $MIRROR_NBR ]
103
		then
104
			rpm_error
105
			exit 1
106
		fi
107
		if [ $Lang == "fr" ]
108
		then
109
			echo "Voulez-vous tenter une synchronisation avec un autre dépôt ? (O/n)"
110
		else
111
			echo "Do you want to try a synchronisation with an other repository? (Y/n)"
112
		fi
113
		response=0
114
		PTN='^[oOnNyY]?$'
115
		until [[ "$response" =~ $PTN ]]
116
		do
117
			read response
118
		done
119
		if [ "$response" = "n" ] || [ "$response" = "N" ]
120
		then
121
			exit 1
122
		fi
123
	fi
124
done
125
# download the kernel used by ALCASAR
126
if [ $Lang == "fr" ]
127
then
128
	echo "Récupération du noyau Linux exploité par ALCASAR. Veuillez patienter ..."
129
else
130
	echo "Download the Linux kernel used by ALCASAR. Please wait ..."
131
fi
132
urpmi --auto --quiet $KERNEL
2972 rexy 133
# Remove some RPMs in order to avoid error (or automatic update of "home made" RPM)
134
urpme wkhtmltopdf freeradius-ldap
2971 rexy 135
# At this time, only skip Kernel update
136
echo "/^kernel/" > /etc/urpmi/skip.list
137
if [ `egrep '^exclude=' /etc/dnf/dnf.conf |wc -l` -eq "1" ]; then
138
	$SED "s?^exclude=.*?exclude=kernel\*?g" /etc/dnf/dnf.conf
139
else
140
	echo "exclude=kernel*" >> /etc/dnf/dnf.conf
141
fi
2941 rexy 142
# download updated RPM in cache
143
if [ $Lang == "fr" ]
144
then
145
	echo "Récupération des paquetages de mise à jour. Veuillez patienter ..."
146
	echo "Il est temps d'aller prendre un café (ou une bonne bière) ;-)"
147
else
148
	echo "Updated RPM download. Please wait ..."
149
	echo "You should now take a coffe (or a good beer) ;-)"
150
fi
151
urpmi --auto --auto-update --quiet --test --retry 2
152
if [ "$?" != "0" ]
153
then
154
	echo
155
	if [ $Lang == "fr" ]
156
	then
157
		echo "Une erreur a été détectée lors de la récupération des paquetages."
158
	else
159
		echo "An error occurs when downloading RPMS"
160
	fi
161
	rpm_error
162
	exit 1
163
fi
164
 
165
# update with cached RPM
166
urpmi --auto --auto-update
167
if [ "$?" != "0" ]
168
then
169
	echo
170
	if [ $Lang == "fr" ]
171
	then
172
		echo "Une erreur a été détectée lors de la mise à jour des paquetages."
173
	else
174
		echo "An error occurs when updating packages"
175
	fi
176
	rpm_error
177
	exit 1
178
fi
179
# Clean the RPM cache
180
urpmi --clean
181
 
182
# Download of ALCASAR specifics RPM in cache (and test)
183
if [ $Lang == "fr" ]
184
then
185
	echo "Récupération des paquetages complémentaires. Veuillez patienter ..."
186
else
187
	echo "Download of complementary packages. Please wait ..."
188
fi
189
urpmi --auto --no-recommends $PACKAGES --quiet --test --retry 2
190
if [ "$?" != "0" ]
191
then
192
	echo
193
	if [ $Lang == "fr" ]
194
	then
195
		echo "Une erreur a été détectée lors de la récupération des paquetages complémentaires."
196
	else
197
		echo "An error occurs when downloading complementary packages"
198
	fi
199
	rpm_error
200
	exit 1
201
fi
202
 
203
# update with cached RPM
204
urpmi --auto --no-recommends $PACKAGES
205
if [ "$?" != "0" ]
206
then
207
	echo
208
	if [ $Lang == "fr" ]
209
	then
210
		echo "Une erreur a été détectée lors de l'installation des paquetages complémentaires."
211
	else
212
		echo "An error occurs when installing complementary packages"
213
	fi
214
	rpm_error
215
	exit 1
216
fi
217
 
218
# Keep only the kernel version we compil netflow with, and remove all others
219
kernelVersion=$(rpm -qa | grep -e ^kernel-server -e ^kernel-desktop)
220
for i in $kernelVersion
221
do
222
	if [ $i != $KERNEL ];then
223
		urpme --auto $i
224
	fi
225
done
226
# delete unused RPMs
227
if [ $Lang == "fr" ]
228
then
229
	echo "Cleaning the system : "
230
else
231
	echo "Nettoyage du système : "
232
fi
3049 rexy 233
unused_rpm="shorewall mandi plymouth squid polkit pm-utils"
2988 rexy 234
/usr/sbin/urpme --auto -a $unused_rpm
2941 rexy 235
/usr/sbin/urpme --auto --auto-orphans
236
 
237
# Save chilli launch script (erase with new rpm one)
238
[ -e /etc/chilli.conf ] && cp /etc/chilli.conf /tmp/
239
# Install home made RPMs
240
for pkg in `ls rpms/$ARCH/*.rpm`
241
do
242
    urpmi --no-verify --auto $pkg
243
done
244
# restore chilli launch script
245
[ -e /tmp/chilli.conf ] && mv /tmp/chilli.conf /etc/
246
# Clean the RPM cache
247
urpmi --clean
248
# the ipt-netflow RPM add the kernel module ipt_NETFLOW (the modules dependance tree need to be updated). "2>/dev/null" in order not to display a error (the running kernel is not the ALCASAR one during the installation process)
249
/sbin/depmod -a 2>/dev/null
250
# test if all needed rpms are correctly installed
251
count_pkg=0; nb_pkg=0;
252
for pkg in $PACKAGES
253
do
254
	nb_pkg=`expr $nb_pkg + 1`
255
	if rpm -q --quiet $pkg ; then
256
		count_pkg=`expr $count_pkg + 1`
257
	else
258
		echo "error installing $pkg"
259
	fi
260
done
261
if [ $count_pkg -ne $nb_pkg ]
262
then
263
	exit 1
264
fi
265
# test if all custom rpms are correctly installed
266
count_pkg=0; nb_pkg=0;
267
for pkg in `ls rpms/$ARCH/|sed 's/.x86_64.rpm//'`
268
do
269
	nb_pkg=`expr $nb_pkg + 1`
270
	if rpm -q --quiet $pkg ; then
271
		count_pkg=`expr $count_pkg + 1`
272
	else
273
		echo "error installing $pkg"
274
	fi
275
done
276
if [ $count_pkg -ne $nb_pkg ]
277
then
278
	exit 1
279
fi
280
exit 0