luisbandalap

luisbandalap / opkg_list_installed.sh

Last active 2 hours ago

Like 0

from https://gist.github.com/luisbandalap/2e17ba58e4f9f18d95704de24e17bc83

luisbandalap revised this gist 2 hours ago · 8a522d5

1 file changed, 50 insertions

opkg_list_installed.sh (file created)
@@ -0,0 +1,50 @@
1 + #!/bin/ash
2 +
3 + list_pkgs() {
4 + opkg list-installed | cut -f 1 -d " "
5 + }
6 +
7 + show_deps() {
8 + opkg depends $1 | sed -e 1d -e 's/^\s*//'
9 + }
10 +
11 + if [ $(id -u) != 0 ]; then
12 + echo 'you must be root.'
13 + exit 1
14 + fi
15 +
16 + TMPDIR=/tmp/$$
17 + if [ -d $TMPDIR ]; then
18 + rm -rf $TMPDIR
19 + fi
20 + mkdir $TMPDIR
21 +
22 + trap "rm -rf $TMPDIR; exit 1" 1 2 3 15
23 +
24 + # listup default packages
25 + echo "entware-opt" > $TMPDIR/defaults
26 + show_deps entware-opt >> $TMPDIR/defaults
27 +
28 + # listup installed, but not default
29 + touch $TMPDIR/pkgs_not_default
30 + mkdir $TMPDIR/deps
31 + for p in $(list_pkgs); do
32 + egrep "^$p\$" $TMPDIR/defaults > /dev/null
33 + if [ $? != 0 ]; then
34 + echo $p >> $TMPDIR/pkgs_not_default
35 + # listup depends
36 + show_deps $p > $TMPDIR/deps/$p.deps
37 + fi
38 + done
39 +
40 + # listup not depended by any others from not defaults
41 + for p in $(cat $TMPDIR/pkgs_not_default); do
42 + egrep "^$p\$" $TMPDIR/deps/* > /dev/null
43 + if [ $? != 0 ]; then
44 + echo $p
45 + fi
46 + done
47 +
48 + rm -rf $TMPDIR
49 +
50 + exit 0