Subversion Repositories ALCASAR

Rev

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

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