spk view spk-rm @ rev 161

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 12:27:19 2019 +0100 (2019-02-26)
parents 365a7811faf7
children
line source
1 #!/bin/sh
2 #
3 # Spk-rm - Remove SliTaz packages. Read the README before adding or
4 # modifying any code in spk!
5 #
6 # Copyright (C) SliTaz GNU/Linux - BSD License
7 # Author: See AUTHORS files
8 #
9 . /usr/lib/slitaz/libspk.sh
11 #
12 # Functions
13 #
15 # Help and usage
16 usage() {
17 name=$(basename $0)
18 cat << EOT
20 $(boldify $(gettext "Usage:")) $name [packages|--options]
22 $(gettext "Remove installed packages and their dependencies")
24 $(boldify $(gettext "Options:"))
25 --confirm $(gettext "Ask before removing any packages")
26 --root= $(gettext "Set the root file system path")
27 --verbose $(gettext "Be more verbose when removing files")
29 $(boldify $(gettext "Examples:"))
30 $name package1 package2 packagesN
31 $name package1 --confirm --verbose
33 EOT
34 exit 0
35 }
37 # Remove a single package
38 remove() {
39 local altered
40 boldify $(gettext "Removing") $pkg
41 separator
42 [ "$verbose" ] && echo "DB: $installed"
44 # Reverse deps
45 for i in $(ls $installed); do
46 is_package_installed $i || continue
47 unset_receipt
48 source_receipt $installed/$i/receipt
49 case " $DEPENDS " in
50 *\ $pkg\ *) altered="$altered $i" ;;
51 esac
52 done
53 unset_receipt
54 source_receipt $installed/$pkg/receipt
56 if [ "$altered" ]; then
57 gettext "The following packages depend on"; colorize 31 " $pkg"
58 for i in $altered; do
59 echo " $(colorize 32 $i)"
60 done
61 fi
63 # Reverse deps are displayed, confirm uninstall.
64 if [ "$confirm" ]; then
65 echo $(gettext "Confirm uninstallation of:") " $pkg"
66 if ! confirm; then
67 gettext "Uninstallation cancelled"
68 newline && continue
69 fi
70 fi
72 # Handle pre_remove
73 if grep -q ^pre_remove $installed/$PACKAGE/receipt; then
74 pre_remove $root
75 fi
77 # Remove all files
78 fileslist=$installed/$PACKAGE/files.list
79 gettext "Installed files:"
80 echo -n " $(wc -l $fileslist | cut -d " " -f 1)"
81 [ "$verbose" ] && newline
82 for file in $(cat $fileslist)
83 do
84 if [ "$verbose" ]; then
85 gettext "Removing:"; echo -n " ${root}${file}"
86 fi
87 remove_file ${root}${file}
88 [ "$verbose" ] && status
89 done
90 [ ! "$verbose" ] && status
92 # Handle post_remove
93 if grep -q ^post_remove $installed/$PACKAGE/receipt; then
94 post_remove $root
95 fi
97 # Remove package receipt.
98 gettext "Removing package receipt..."
99 rm -rf $installed/$PACKAGE
100 sed -i "/$PACKAGE-${VERSION}${EXTRAVERSION}.tazpkg/"d $installed.$SUM
101 status
103 separator
105 # Do we have packages depending on $pkg to remove ?
106 if [ "$altered" ]; then
107 if [ "$confirm" ]; then
108 echo $(gettext "Removing packages depending on:") $pkg
109 if ! confirm; then
110 gettext "Keeping packages..."; newline
111 newline && continue
112 fi
113 fi
114 for i in $altered; do
115 if [ -d "$installed/$i" ]; then
116 spk-rm $i --root=$root
117 fi
118 done
119 else
120 newline
121 fi
122 }
124 #
125 # Commands and exit
126 #
128 case "$1" in
129 ""|*usage|*help) usage ;;
130 esac
132 #
133 # Handle packages
134 #
136 : ${count=0}
137 check_root
139 for pkg in $@
140 do
141 # Skip options
142 case "$pkg" in
143 --*) continue
144 esac
145 # Be sure package is installed
146 if ! is_package_installed $pkg; then
147 echo -n "$(boldify $pkg) "
148 gettext "package is not installed"; newline
149 continue
150 fi
151 count=$(($count + 1))
152 [ "$count" = 1 ] && newline
153 remove
154 log "Removed package: $pkg"
155 done
157 # Show all new counted packages in verbose mode
158 if [ "$verbose" ]; then
159 gettext "Removed packages:"; colorize 34 " $count"
160 fi
162 exit 0