-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUPGRADE.sh
More file actions
87 lines (81 loc) · 3.47 KB
/
Copy pathUPGRADE.sh
File metadata and controls
87 lines (81 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/sh
# UPGRADE.sh - shell script to provide an automated upgrade of all installed
# packages for which an upgrade has been retrieved.
#
# 2005-09-25 Sylvain Robitaille: Start thinking about doing this via a
# Makefile, actually ...
# 2009-11-15 Sylvain Robitaille: allow for 64-bit Slackware; allow also for
# *.txz packages,
# 2015-07-07 Sylvain Robitaille: loop around command-line arguments
# to permit patches for multiple
# distribution versions to be obtained
# in a single call to the script.
# CONFIGURE:
FTP_HOST=ftp.slackware.com
GPG_HOME=~`who am i| cut -d\ -f1`/.gnupg
DOWNLOAD_BASE=${DOWNLOAD_BASE:-/local/var/slackware}
INSTALLED_PATH=${INSTALLED_PATH:-/var/log/packages}
SYSTEM_VERSION=`cat /etc/slackware-version |\
tr '[A-Z]' '[a-z]' |\
sed 's/\([1-9]*\.[0-9]*\)\(\.[0-9]*\)*$/\1/; s/ /-/g'`
# x86 64-bit?
if [ "`uname -m`" = "x86_64" ]; then
# yes; we need to be sure the version string takes that into account:
SYSTEM_VERSION=`echo ${SYSTEM_VERSION} |sed 's/slackware-/slackware64-/'`
else
# not x86 64-bit; leave as is ...
/bin/true
fi
do_upgrade () {
opts="$*"
# Of all the packages we have downloaded, for which we have an older
# version installed, upgrade the package:
if [ ${LISTING_FILE} -nt ${INSTALLED_PATH} ]; then
for file in `find -L ${DOWNLOADED_PATH}/{extra,patches/packages} \
-type f \
-name "*.t[bgx]z" \
-newer ${INSTALLED_PATH}`; do
gpg --homedir ${GPG_HOME} --verify ${file}.asc 1>/dev/null 2>&1 && \
upgradepkg ${opts} ${file}
done
fi
}
for version in ${*:-${SYSTEM_VERSION}}; do
SLACKWARE_VERSION=${version}
DOWNLOADED_PATH=${DOWNLOAD_BASE}/${SLACKWARE_VERSION}
LISTING_FILE=${DOWNLOADED_PATH}/.listing
PATCH_PATH=pub/slackware/${SLACKWARE_VERSION}/patches
EXTRA_PATH=pub/slackware/${SLACKWARE_VERSION}/extra
TSTNG_PATH=pub/slackware/${SLACKWARE_VERSION}/testing
PATH_COUNT=`echo ${PATCH_PATH} |grep -o / |wc -l`
# If we're operating as root, upgrade to the newer packages,
# else retrieve new packages and report what would be upgraded:
case `whoami` in
root)
if [ "${SYSTEM_VERSION}" == "${SLACKWARE_VERSION}" ]; then
mount -w -o remount /usr
do_upgrade
mount -o remount /usr
fi
;;
*)
cd ${DOWNLOADED_PATH} && \
# Special case for slackware-current ...
if [ `echo ${SLACKWARE_VERSION} |cut -d- -f2` == "current" ]; then
PKGS_PATH="pub/slackware/${SLACKWARE_VERSION}/`echo ${SLACKWARE_VERSION} |cut -d- -f1`"
wget -m -nH -np -q --cut-dirs=${PATH_COUNT} ftp://${FTP_HOST}/${PKGS_PATH}
fi
wget -m -nH -np -q --cut-dirs=${PATH_COUNT} ftp://${FTP_HOST}/${PATCH_PATH} && \
wget -m -nH -np -q --cut-dirs=${PATH_COUNT} ftp://${FTP_HOST}/${EXTRA_PATH} && \
wget -m -nH -np -q --cut-dirs=${PATH_COUNT} ftp://${FTP_HOST}/${TSTNG_PATH}
echo
if [ "${SLACKWARE_VERSION}" == "${SYSTEM_VERSION}" ]; then
ID=`id -un`
TEMPDIR=`mktemp -d /tmp/${ID}_XXXXXX`
INSTLOCKDIR=${TEMPDIR}/pkgtools \
do_upgrade --dry-run
echo
fi
;;
esac
done