uninstall.in 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. #!/bin/sh
  2. # Initialize variables
  3. quiet=0
  4. prompt=0
  5. verb=0
  6. progs=0
  7. config=0
  8. start=0
  9. force="-f"
  10. redir="2>/dev/null"
  11. # Set file and path names
  12. NAME=@PKG_NAME@
  13. SBINDIR=@sbindir@
  14. LIBEXECDIR=@libexecdir@
  15. PLUGINSDIR=@pluginsdir@
  16. PIDDIR=@piddir@
  17. CFGDIR=@pkgsysconfdir@
  18. INIT_TYPE=@init_type@
  19. INIT_DIR=@initdir@
  20. INIT_FILE=@initname@
  21. INETD_TYPE=@inetd_type@
  22. INETD_DIR=@inetddir@
  23. INETD_FILE=@inetdname@
  24. SRC_INETD=@src_inetd@
  25. SRC_INIT=@src_init@
  26. # Display usage message
  27. usage () {
  28. echo "Usage: $0 [-q] [-p] [-v] progs|config|startup|all"
  29. echo " -q Do not print what is happening"
  30. echo " -p Prompt for each action"
  31. echo " -v Be a little more verbose about what is happening"
  32. echo " progs Delete the program files"
  33. echo " config Delete configuration file(s)"
  34. echo " startup Delete startup files (inetd, init, etc.)"
  35. exit 1
  36. }
  37. get_opts () {
  38. while test $# -gt 0 ; do
  39. arg=$1
  40. shift
  41. case "$arg" in
  42. -q) quiet=1 ;;
  43. -p) prompt=1 ;;
  44. progs) progs=1 ;;
  45. config) config=1 ;;
  46. startup) start=1 ;;
  47. -v) verb=1; force=""; redir="" ;;
  48. all) progs=1; config=1; start=1 ;;
  49. *) echo "Invalid argument: $arg"; usage ;;
  50. esac
  51. done
  52. if test $prompt -eq 1 -a $quiet -eq 1 ; then
  53. echo "The -p and -q flags are mutually exclusive"
  54. echo Please specify one or the other
  55. exit 1
  56. fi
  57. if test $verb -eq 1 -a $quiet -eq 1 ; then
  58. echo "The -v and -q flags are mutually exclusive"
  59. echo Please specify one or the other
  60. exit 1
  61. fi
  62. if test $progs -eq 0 -a $config -eq 0 -a $start -eq 0 ; then
  63. usage
  64. fi
  65. }
  66. prt_msg () {
  67. if test $quiet -eq 1 ; then
  68. return 0
  69. fi
  70. case $1 in
  71. 0) indent="" ;;
  72. 1) indent=" " ;;
  73. 2) indent=" " ;;
  74. *) indent="" ;;
  75. esac
  76. shift
  77. if test $1 -eq 1 -a $verb -eq 0 -a $prompt -eq 0 ; then
  78. return 0
  79. fi
  80. shift
  81. if test $1 -eq 1 -a $prompt -eq 1 ; then
  82. shift
  83. echo -n "${indent}$*"
  84. echo -n "? [Y|n] "
  85. read yn
  86. if test "x$yn" = x -o x$yn = xy -o x$yn = xY ; then
  87. return 0
  88. else
  89. return 1
  90. fi
  91. fi
  92. shift
  93. echo "${indent}$*"
  94. return 0
  95. }
  96. rm_progs () {
  97. num=0
  98. prt_msg 1 0 0 "*** Uninstalling Progs"
  99. if test -f "$PLUGINSDIR/check_nrpe" ; then
  100. num=1
  101. prt_msg 2 0 1 "Delete $PLUGINSDIR/check_nrpe" && {
  102. rm $force "$PLUGINSDIR/check_nrpe"
  103. prt_msg 2 1 0 "Remove directory $PLUGINSDIR"
  104. rmdir "$PLUGINSDIR" $redir
  105. prt_msg 2 1 0 "Remove directory $LIBEXECDIR"
  106. rmdir "$LIBEXECDIR" $redir
  107. }
  108. fi
  109. if test -f "$SBINDIR/$NAME" ; then
  110. num=0
  111. prt_msg 2 0 1 "Delete $SBINDIR/$NAME" && {
  112. rm $force "$SBINDIR/$NAME"
  113. }
  114. fi
  115. if test -d "$PIDDIR" ; then
  116. num=0
  117. prt_msg 2 0 1 "Remove directory $PIDDIR" && {
  118. rmdir "$PIDDIR" $redir
  119. }
  120. fi
  121. if test $num -eq 0; then
  122. prt_msg 2 0 0 "There was nothing to uninstall"
  123. fi
  124. }
  125. rm_startup () {
  126. num=0
  127. prt_msg 1 0 0 "*** Uninstalling Startup"
  128. if test "$SRC_INETD" != unknown; then
  129. if test "$INETD_TYPE" = inetd; then
  130. rc=`grep -E -q "^\W*@PKG_NAME@\s+" "$INETD_DIR/$INETD_FILE"`
  131. if test $rc -eq 0; then
  132. num=1
  133. prt_msg 2 0 1 "($INETD_TYPE) Remove entries from $INETD_DIR/$INETD_FILE" && {
  134. prt_msg 2 1 0 "($INETD_TYPE) Creating temp file: $INETD_DIR/$INETD_FILE.$NAME.unin"
  135. grep -v -q "\W*@PKG_NAME@\s+" "$INETD_DIR/$INETD_FILE" > "$INETD_DIR/$INETD_FILE.$NAME.unin"
  136. prt_msg 2 1 0 "($INETD_TYPE) Renaming original to: $INETD_DIR/$INETD_FILE.$NAME_save"
  137. mv "$INETD_DIR/$INETD_FILE" "$INETD_DIR/$INETD_FILE.$NAME_save"
  138. prt_msg 2 1 0 "($INETD_TYPE) Renaming $INETD_DIR/$INETD_FILE.unin to $INETD_DIR/$INETD_FILE"
  139. mv "$INETD_DIR/$INETD_FILE.unin" "$INETD_DIR/$INETD_FILE"
  140. prt_msg 2 0 0 "($INETD_TYPE) Old $INETD_DIR/$INETD_FILE saved as $INETD_DIR/$INETD_FILE.$NAME_save"
  141. }
  142. fi
  143. elif test -f "$INETD_DIR/$INETD_FILE"; then
  144. num=1
  145. if test "$INETD_TYPE" != xinetd; then
  146. prt_msg 2 0 1 "($INETD_TYPE) Stop and disable $NAME)" && {
  147. case "$INETD_TYPE" in
  148. systemd)
  149. systemctl stop $NAME; systemctl disable $NAME
  150. ;;
  151. upstart)
  152. stop $NAME
  153. ;;
  154. launchd)
  155. launchctl unload $INETD_FILE; launchctl remove $INETD_FILE;
  156. ;;
  157. smf*)
  158. svcadm disable -s $NAME
  159. ;;
  160. esac
  161. }
  162. fi
  163. prt_msg 2 0 1 "($INETD_TYPE) Delete $INETD_DIR/$INETD_FILE" && {
  164. rm $force "$INETD_DIR/$INETD_FILE"
  165. if test "$INETD_TYPE" = systemd; then
  166. INETD_FILE=`echo "$INETD_FILE" | sed -e 's/socket$/service/'`
  167. prt_msg 2 0 1 "($INETD_TYPE) Delete $INETD_DIR/$INETD_FILE" && {
  168. rm $force "$INETD_DIR/$INETD_FILE"
  169. }
  170. fi
  171. }
  172. fi
  173. fi
  174. if test "$SRC_INIT" != unknown; then
  175. if test -f "$INIT_DIR/$INIT_FILE"; then
  176. num=1
  177. prt_msg 2 0 1 "($INIT_TYPE) Stop and disable $NAME" && {
  178. case "$INIT_TYPE" in
  179. systemd)
  180. systemctl stop $NAME; systemctl disable $NAME
  181. ;;
  182. upstart)
  183. stop $NAME
  184. ;;
  185. launchd)
  186. launchctl unload $INIT_FILE; launchctl remove $INIT_FILE;
  187. ;;
  188. *bsd)
  189. if test -x $INIT_DIR/$INIT_FILE ; then
  190. $INIT_DIR/$INIT_FILE stop
  191. fi
  192. chmod 0644 $INIT_DIR/$INIT_FILE
  193. ;;
  194. openrc|gentoo)
  195. /sbin/start-stop-daemon --stop $NAME
  196. /sbin/rc-update del $NAME
  197. ;;
  198. smf*)
  199. svcadm disable -s $NAME
  200. ;;
  201. sysv)
  202. service stop $NAME; chkconfig --del $NAME
  203. ;;
  204. esac
  205. }
  206. prt_msg 2 0 1 "($INIT_TYPE) Delete $INETD_DIR/$INIT_FILE" && {
  207. rm $force "$INIT_DIR/$INIT_FILE"
  208. }
  209. fi
  210. fi
  211. if test $num -eq 0; then
  212. prt_msg 2 0 0 "There was nothing to uninstall"
  213. fi
  214. }
  215. rm_config () {
  216. num=0
  217. prt_msg 1 0 0 "*** Uninstalling Config"
  218. if test -f "$CFGDIR/$NAME.cfg"; then
  219. num=1
  220. prt_msg 2 0 1 "Delete $CFGDIR/$NAME.cfg" || return
  221. rm $force "$CFGDIR/$NAME.cfg"
  222. prt_msg 2 1 0 "Removing directory $CFGDIR"
  223. rm $force "$CFGDIR"
  224. fi
  225. if test $num -eq 0; then
  226. prt_msg 2 0 0 "There was nothing to uninstall"
  227. fi
  228. }
  229. get_opts $@
  230. prt_msg 0 0 0 "* * * Uninstall Starting * * *"
  231. if test $progs -eq 1 ; then rm_progs; fi
  232. if test $start -eq 1 ; then rm_startup; fi
  233. if test $config -eq 1 ; then rm_config; fi
  234. prt_msg 0 0 0 "* * * Uninstall Complete * * *"