Subversion Repositories ALCASAR

Rev

Rev 2988 | Rev 3049 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

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