|
@@ -1,9 +1,9 @@
|
1
|
1
|
#!/bin/sh
|
2
|
2
|
# SlackCheck
|
3
|
3
|
#
|
4
|
|
-# $Id: slcheck.sh,v 1.31 2006/07/06 14:45:24 gf Exp $
|
|
4
|
+# $Id: slcheck.sh,v 1.32 2006/07/06 15:01:49 gf Exp $
|
5
|
5
|
#
|
6
|
|
-# Copyright (c) 2002-2004 Georgi Chorbadzhiyski, Sofia, Bulgaria
|
|
6
|
+# Copyright (c) 2002-2006 Georgi Chorbadzhiyski, Sofia, Bulgaria
|
7
|
7
|
# All rights reserved.
|
8
|
8
|
#
|
9
|
9
|
# Redistribution and use of this script, with or without modification, is
|
|
@@ -24,7 +24,7 @@
|
24
|
24
|
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
25
|
#
|
26
|
26
|
|
27
|
|
-echo "SlackCheck v3.50"
|
|
27
|
+echo "SlackCheck v3.60"
|
28
|
28
|
echo
|
29
|
29
|
|
30
|
30
|
cd $(dirname $0)
|
|
@@ -121,16 +121,6 @@ collect_package_lists() {
|
121
|
121
|
done
|
122
|
122
|
}
|
123
|
123
|
|
124
|
|
-# Used by generate_upgrade_scripts()
|
125
|
|
-package_name() {
|
126
|
|
- name=$(echo $1 | rev | cut -d- -f4- | rev)
|
127
|
|
- if [ "$name" = "" ]; then
|
128
|
|
- echo $1
|
129
|
|
- else
|
130
|
|
- echo $name
|
131
|
|
- fi
|
132
|
|
-}
|
133
|
|
-
|
134
|
124
|
# Generate upgrade scripts
|
135
|
125
|
generate_upgrade_scripts() {
|
136
|
126
|
mkdir ${DIR_UPD} 2>/dev/null
|
|
@@ -149,12 +139,18 @@ generate_upgrade_scripts() {
|
149
|
139
|
rm ${DIR_UPD}/${FILE_UNKPACKS}${HOST} >/dev/null 2>&1
|
150
|
140
|
rm ${DIR_UPD}/${FILE_UPDATES}${HOST} >/dev/null 2>&1
|
151
|
141
|
rm ${DIR_UPD}/${FILE_UPDATES}${HOST}.* >/dev/null 2>&1
|
152
|
|
- # For each package, hostpkg is only package name, NO directories!
|
153
|
|
- cat ${DIR_PKG}/$HOST | grep -v aaa_elflibs | \
|
154
|
|
- while read hostpkg; do
|
|
142
|
+ # Generate file with package basenames
|
|
143
|
+ rev < ${DIR_PKG}/$HOST | cut -d- -f4- | rev > ${DIR_UPD}/${FILE_UPDATES}${HOST}.base
|
|
144
|
+ paste ${DIR_PKG}/$HOST ${DIR_UPD}/${FILE_UPDATES}${HOST}.base | \
|
|
145
|
+ while read hostpkg basepkg
|
|
146
|
+ do
|
|
147
|
+ # aaa_elflibs should not be updated
|
|
148
|
+ if [ "$basepkg" = "aaa_elflibs" ]; then
|
|
149
|
+ continue
|
|
150
|
+ fi
|
155
|
151
|
# Get package from the distro packages
|
156
|
152
|
# This contains FULL directory + package name
|
157
|
|
- distro_package=$(grep /`package_name $hostpkg`-[0-9] ${DIR_PKG}/${FILE_NEWEST} | head -1 2>/dev/null)
|
|
153
|
+ distro_package=$(grep /$basepkg-[0-9] ${DIR_PKG}/${FILE_NEWEST})
|
158
|
154
|
if [ "$distro_package" != "" ]
|
159
|
155
|
then # Host package exist in the distro packages
|
160
|
156
|
distropkg=$(basename $distro_package) # Strip directory
|
|
@@ -174,6 +170,11 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
|
174
|
170
|
echo " SAME: $hostpkg -> $distropkg ($distro_package)"
|
175
|
171
|
fi
|
176
|
172
|
fi
|
|
173
|
+ else # Add to unknown packages
|
|
174
|
+ if [ "$VERBOSE" == "1" ]; then
|
|
175
|
+ echo " UNKN: $hostpkg"
|
|
176
|
+ fi
|
|
177
|
+ echo "$hostpkg" >> ${DIR_UPD}/${FILE_UNKPACKS}${HOST}
|
177
|
178
|
fi
|
178
|
179
|
done
|
179
|
180
|
if [ "$VERBOSE" != "1" ]; then
|
|
@@ -199,8 +200,7 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
|
199
|
200
|
if [ -s ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs ]
|
200
|
201
|
then
|
201
|
202
|
sort ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs > ${DIR_UPD}/.${HOST}.newpkgs.tmp
|
202
|
|
- cat ${DIR_UPD}/.${HOST}.newpkgs.tmp > ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs
|
203
|
|
- rm ${DIR_UPD}/.${HOST}.newpkgs.tmp
|
|
203
|
+ mv ${DIR_UPD}/.${HOST}.newpkgs.tmp ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs
|
204
|
204
|
(echo '#!/bin/sh'
|
205
|
205
|
echo
|
206
|
206
|
echo "DL_HOST=\"${DL_HOST}\""
|
|
@@ -221,14 +221,14 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
|
221
|
221
|
echo
|
222
|
222
|
# Put glibc and elflibs updates first, otherwise
|
223
|
223
|
# something may broke
|
|
224
|
+ # workarounds
|
224
|
225
|
cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | grep a/glibc
|
225
|
226
|
cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | grep a/elflibs
|
226
|
227
|
cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | grep a/pkgtools
|
227
|
228
|
cat ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs | \
|
228
|
|
- grep -v a/glibc | \
|
229
|
|
- grep -v a/elflibs | \
|
230
|
|
- grep -v a/pkgtools
|
231
|
|
- # workarounds
|
|
229
|
+ grep -v a/glibc | \
|
|
230
|
+ grep -v a/elflibs | \
|
|
231
|
+ grep -v a/pkgtools
|
232
|
232
|
echo "PKG_SED=\"`grep sed- ${DIR_PKG}/${FILE_NEWEST} 2>/dev/null`\"";
|
233
|
233
|
echo "PKG_COREUTILS=\"`grep coreutils- ${DIR_PKG}/${FILE_NEWEST} 2>/dev/null`\"";
|
234
|
234
|
echo "PKG_UTEMPTER=\"`grep utempter- ${DIR_PKG}/${FILE_NEWEST} 2>/dev/null`\"";
|
|
@@ -240,6 +240,7 @@ UPDATE=\"\$UPDATE ${distro_package}.tgz\" # EXISTING: ${hostpkg} \
|
240
|
240
|
fi
|
241
|
241
|
# Cleanup
|
242
|
242
|
rm ${DIR_UPD}/${FILE_UPDATES}${HOST}.newpkgs >/dev/null 2>&1
|
|
243
|
+ rm ${DIR_UPD}/${FILE_UPDATES}${HOST}.base >/dev/null 2>&1
|
243
|
244
|
fi
|
244
|
245
|
done
|
245
|
246
|
echo
|
|
@@ -251,11 +252,13 @@ upgrade_machines() {
|
251
|
252
|
echo "===> Upgrating hosts..."
|
252
|
253
|
for HOST in $SLACK_HOSTS
|
253
|
254
|
do
|
|
255
|
+ hname=$(hostname 2>/dev/null)
|
|
256
|
+ hname_full=$(hostname -f 2>/dev/null)
|
254
|
257
|
if [ -f ${DIR_UPD}/${FILE_UPDATES}${HOST} ]
|
255
|
258
|
then
|
256
|
259
|
# Localhost
|
257
|
|
- if [ "$HOST" == "$(hostname)" -o \
|
258
|
|
- "$HOST" == "$(hostname -f)" -o \
|
|
260
|
+ if [ "$HOST" == "$hname" -o \
|
|
261
|
+ "$HOST" == "$hname_full" -o \
|
259
|
262
|
"$HOST" == "localhost" ]
|
260
|
263
|
then
|
261
|
264
|
echo " ---> $HOST (Local machine)"
|
|
@@ -380,9 +383,9 @@ echo -n "---> Hosts: "
|
380
|
383
|
echo $SLACK_HOSTS
|
381
|
384
|
echo
|
382
|
385
|
|
383
|
|
-[ "$DO_SYNC" = "1" ] && (sync_master_list)
|
384
|
|
-[ "$DO_COLLECT" = "1" ] && (collect_package_lists)
|
385
|
|
-[ "$DO_GEN" = "1" ] && (generate_upgrade_scripts)
|
386
|
|
-[ "$DO_DIST" = "1" ] && (distribute_up_scripts)
|
387
|
|
-[ "$DO_UPGRADE" = "1" ] && (upgrade_machines)
|
|
386
|
+[ "$DO_SYNC" = "1" ] && sync_master_list
|
|
387
|
+[ "$DO_COLLECT" = "1" ] && collect_package_lists
|
|
388
|
+[ "$DO_GEN" = "1" ] && generate_upgrade_scripts
|
|
389
|
+[ "$DO_DIST" = "1" ] && distribute_up_scripts
|
|
390
|
+[ "$DO_UPGRADE" = "1" ] && upgrade_machines
|
388
|
391
|
|