aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/getpkg
diff options
context:
space:
mode:
Diffstat (limited to 'src/getpkg')
-rwxr-xr-xsrc/getpkg241
1 files changed, 0 insertions, 241 deletions
diff --git a/src/getpkg b/src/getpkg
deleted file mode 100755
index 193dace..0000000
--- a/src/getpkg
+++ /dev/null
@@ -1,241 +0,0 @@
1#!/bin/sh
2# Copyright 2009 David M. Syzdek, Anchorage, AK, USA
3# All rights reserved.
4#
5# Redistribution and use of this script, with or without modification, is
6# permitted provided that the following conditions are met:
7#
8# 1. Redistributions of this script must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10#
11# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
12# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21
22if test ! -f /etc/slackware-version;then
23 echo "This utility is designed for Slackware Linux."
24 exit 1
25fi
26
27# set up script
28BIN_AWK=/usr/bin/awk
29BIN_MD5SUM=/usr/bin/md5sum
30BIN_WGET=/usr/bin/wget
31URL_MIRROR=""
32umask 022
33
34usage() {
35 cat << EOF
36Usage: getpkg [options] package_name
37
38getpkg is used to download and install .tgz Slackare packages from a Slackware
39mirror site and install the package.
40
41options:
42 -file STRING (find a package name by file name)
43 -list (list available packages)
44 -mirror URL (override default mirror URL)
45 -search STRING (search packages for STRING)
46 -setmirror URL (set default mirror URL)
47 -root /mnt (install someplace else, like /mnt)
48 -wget /path/to/wget
49 -selfupdate (update package listings from mirror)
50 -upgrade (using upgradepkg instead of installpkg)
51
52Example URL:
53 http://mirror.server.org/path/to/slackware-XX.X/
54
55EOF
56}
57
58# Parse options:
59MODE=install # standard text-mode
60while [ 0 ];do
61 if [ "$1" = "-file" ]; then
62 if [ "$2" = "" ]; then
63 usage;
64 exit;
65 fi
66 FILE_STRING="$2"
67 shift 2
68 elif [ "$1" = "-list" ]; then
69 MODE=list
70 shift 1
71 elif [ "$1" = "-mirror" ];then
72 if [ "$2" = "" ]; then
73 usage;
74 exit;
75 fi
76 URL_MIRROR="$2"
77 shift 2
78 elif [ "$1" = "-root" ];then
79 if [ "$2" = "" ]; then
80 usage;
81 exit;
82 fi
83 FLAGS="$FLAGS -root $2"
84 ROOT="$2"
85 shift 2
86 elif [ "$1" = "-setmirror" ];then
87 if [ "$2" = "" ]; then
88 usage;
89 exit;
90 fi
91 SETMIRROR="$2"
92 shift 2
93 elif [ "$1" = "-wget" ];then
94 BIN_WGET="$2"
95 shift 2
96 elif [ "$1" = "-search" ];then
97 PACKAGE_STRING="$2"
98 MODE=search
99 shift 2
100 elif [ "$1" = "-selfupdate" ];then
101 MODE=selfupdate
102 shift 1
103 elif [ "$1" = "-upgrade" ];then
104 MODE=upgrade
105 shift 1
106 else
107 break;
108 fi
109done
110
111# Set the prefix for the package database directories (getpkg-data).
112ADM_DIR="$ROOT/var/log"
113for PKGDBDIR in getpkg-data setup setup/tmp;do
114 if [ ! -d $ADM_DIR/$PKGDBDIR ]; then
115 rm -rf $ADM_DIR/$PKGDBDIR || exit 1
116 mkdir -p $ADM_DIR/$PKGDBDIR || exit 1
117 chmod 755 $ADM_DIR/$PKGDBDIR || exit 1
118 fi
119done
120
121if [ "$SETMIRROR" != "" ];then
122 echo "URL_MIRROR=\"$SETMIRROR\"" > $ADM_DIR/getpkg-data/getpkg.conf
123 exit
124fi
125
126if test "$URL_MIRROR" = "";then
127 if test -f $ADM_DIR/getpkg-data/getpkg.conf;then
128 . $ADM_DIR/getpkg-data/getpkg.conf
129 fi
130fi
131if test "$URL_MIRROR" = "";then
132 echo "missing Slackware mirror URL"
133 exit 1
134fi
135
136FILES="${FILES} getpkg-data/SLACKWARE.md5:slackware/CHECKSUMS.md5"
137FILES="${FILES} getpkg-data/SLACKWARE.bz2:slackware/MANIFEST.bz2"
138FILES="${FILES} getpkg-data/SLACKWARE.txt:slackware/PACKAGES.TXT"
139FILES="${FILES} getpkg-data/PATCHES.md5:patches/CHECKSUMS.md5"
140FILES="${FILES} getpkg-data/PATCHES.bz2:patches/MANIFEST.bz2"
141FILES="${FILES} getpkg-data/PATCHES.txt:patches/PACKAGES.TXT"
142
143for PAIR in $FILES;do
144 if test ! -x ${BIN_WGET};then
145 echo "missing required package wget"
146 exit 1;
147 fi
148 FILE=`echo $PAIR|awk -F: '{print$1}'`
149 FILE_SUFFIX=`echo $PAIR|awk -F: '{print$2}'`
150 if ! test -f $ADM_DIR/$FILE || test "$MODE" = "selfupdate";then
151 echo "downloading $FILE_SUFFIX..."
152 $BIN_WGET -q -O $ADM_DIR/$FILE \
153 $URL_MIRROR/$FILE_SUFFIX || \
154 { echo "unable to download $FILE_SUFFIX"; exit 1; }
155 fi
156done
157
158if test "$FILE_STRING" != "";then
159 bzip2 -cd $ADM_DIR/getpkg-data/PATCHES.bz2 \
160 $ADM_DIR/getpkg-data/SLACKWARE.bz2 | \
161 egrep -v '^\|\|$' | \
162 egrep "\|\||$FILE_STRING" | \
163 egrep -B 1 "$FILE_STRING" | \
164 sed -e 's/^[-[:alpha:]]\{10,10\} [[:alnum:]]\{1,\}\/[[:alnum:]]\{1,\}[[:space:]]\{1,\}[-: [:digit:]]\{1,\}/ /g' \
165 -e 's/^||[[:space:]]\{1,\}Package:[[:space:]]\{1,\}.\/[[:alpha:]]\{1,\}\//Package: /g'
166 exit
167fi
168
169if test "$MODE" = "list" || test "$MODE" = "search";then
170 cat $ADM_DIR/getpkg-data/SLACKWARE.md5 \
171 $ADM_DIR/getpkg-data/PATCHES.md5 | \
172 egrep '^[[:alnum:]]{32,32} ./[[:alpha:]]{1,10}/' | \
173 sed 's/^[[:alnum:]]\{32,32\} .\/[[:alpha:]]\{1,10\}\///g' | \
174 egrep '.tgz$' |sed 's/.tgz$//g' |sort > $ADM_DIR/setup/tmp/PACKAGES.avl
175 rm -f $ADM_DIR/setup/tmp/PACKAGES.list
176 for PACKAGE in `cat $ADM_DIR/setup/tmp/PACKAGES.avl`;do
177 if test -f /var/log/packages/$PACKAGE;then
178 echo "$PACKAGE (installed)" >> $ADM_DIR/setup/tmp/PACKAGES.list
179 else
180 echo "$PACKAGE (available)" >> $ADM_DIR/setup/tmp/PACKAGES.list
181 fi
182 done
183 grep "$PACKAGE_STRING" $ADM_DIR/setup/tmp/PACKAGES.list
184 rm -f $ADM_DIR/setup/tmp/PACKAGES.avl
185 rm -f $ADM_DIR/setup/tmp/PACKAGES.list
186 exit;
187fi
188
189if test "$MODE" = "selfupdate";then
190 exit;
191elif [ $# = 0 ]; then
192 usage;
193 exit
194fi
195
196for PACKAGE_STRING in $*;do
197 PACKAGE="";
198 PACKAGE_LINE="";
199 PACKAGE_MD5="";
200 PACKAGE_SUFFIX="";
201 PACKAGE_URL="";
202 if test "$PACKAGE_SUFFIX" = "";then
203 PACKAGE_LINE=`egrep "^[[:alnum:]]{32,32} ./[[:alpha:]]{1,10}/$PACKAGE_STRING" $ADM_DIR/getpkg-data/PATCHES.md5|egrep '.tgz$'`
204 PACKAGE_MD5=`echo $PACKAGE_LINE|awk '{print$1}'`
205 PACKAGE_SUFFIX=`echo $PACKAGE_LINE|awk '{print$2}'|sed 's/^./patches/g'`
206 fi
207 if test "$PACKAGE_SUFFIX" = "";then
208 PACKAGE_LINE=`egrep "^[[:alnum:]]{32,32} ./[[:alpha:]]{1,10}/$PACKAGE_STRING" $ADM_DIR/getpkg-data/SLACKWARE.md5|egrep '.tgz$'`
209 PACKAGE_MD5=`echo $PACKAGE_LINE|awk '{print$1}'`
210 PACKAGE_SUFFIX=`echo $PACKAGE_LINE|awk '{print$2}'|sed 's/^./slackware/g'`
211 fi
212 if test "$PACKAGE_SUFFIX" = "";then
213 echo "package is not available"
214 exit 1
215 fi
216 PACKAGE_FILE=`basename $PACKAGE_SUFFIX`
217 PACKAGE_URL="$URL_MIRROR/$PACKAGE_SUFFIX"
218 PACKAGE=`basename $PACKAGE_SUFFIX .tgz`
219
220 CODE=0
221 if test -f /var/log/packages/$PACKAGE;then
222 echo "$PACKAGE is already installed."
223 echo "Try 'getpkg -upgrade $PACKAGE'"
224 else
225 echo "downloading $PACKAGE from $PACKAGE_URL..."
226 $BIN_WGET -q -O $ADM_DIR/setup/tmp/$PACKAGE_FILE $PACKAGE_URL || { echo "unable to download $PACKAGE"; exit 1; }
227 if test "$MODE" = "upgrade";then
228 /sbin/upgradepkg $FLAGS $ADM_DIR/setup/tmp/$PACKAGE_FILE
229 CODE=$?
230 else
231 /sbin/installpkg $FLAGS $ADM_DIR/setup/tmp/$PACKAGE_FILE
232 CODE=$?
233 fi
234 fi
235 rm -f $ADM_DIR/setup/tmp/$PACKAGE_FILE
236 if test $CODE -ne 0;then
237 exit $CODE
238 fi
239done
240
241# end of script