preinst 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. set -e
  3. NAME=jellyfin
  4. DEFAULT_FILE=/etc/default/${NAME}
  5. # Source Jellyfin default configuration
  6. if [[ -f $DEFAULT_FILE ]]; then
  7. . $DEFAULT_FILE
  8. fi
  9. # Data directories for program data (cache, db), configs, and logs
  10. PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME}
  11. CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME}
  12. LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME}
  13. CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME}
  14. # In case this system is running systemd, we make systemd reload the unit files
  15. # to pick up changes.
  16. if [[ -d /run/systemd/system ]] ; then
  17. systemctl --system daemon-reload >/dev/null || true
  18. fi
  19. case "$1" in
  20. install|upgrade)
  21. # try graceful termination;
  22. if [[ -d /run/systemd/system ]]; then
  23. deb-systemd-invoke stop ${NAME}.service > /dev/null 2>&1 || true
  24. elif [ -x "/etc/init.d/${NAME}" ] || [ -e "/etc/init/${NAME}.conf" ]; then
  25. invoke-rc.d ${NAME} stop > /dev/null 2>&1 || true
  26. fi
  27. # try and figure out if jellyfin is running
  28. PIDFILE=$(find /var/run/ -maxdepth 1 -mindepth 1 -name "jellyfin*.pid" -print -quit)
  29. [[ -n "$PIDFILE" ]] && [[ -s "$PIDFILE" ]] && JELLYFIN_PID=$(cat ${PIDFILE})
  30. # if its running, let's stop it
  31. if [[ -n "$JELLYFIN_PID" ]]; then
  32. echo "Stopping Jellyfin!"
  33. # if jellyfin is still running, kill it
  34. if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
  35. CPIDS=$(pgrep -P $JELLYFIN_PID)
  36. sleep 2 && kill -KILL $CPIDS
  37. kill -TERM $CPIDS > /dev/null 2>&1
  38. fi
  39. sleep 1
  40. # if it's still running, show error
  41. if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
  42. echo "Could not successfully stop JellyfinServer, please do so before uninstalling."
  43. exit 1
  44. else
  45. [[ -f $PIDFILE ]] && rm $PIDFILE
  46. fi
  47. fi
  48. # Clean up old Emby cruft that can break the user's system
  49. [[ -f /etc/sudoers.d/emby ]] && rm -f /etc/sudoers.d/emby
  50. # If we have existing config, log, or cache dirs in /var/lib/jellyfin, move them into the right place
  51. if [[ -d $PROGRAMDATA/config ]]; then
  52. mv $PROGRAMDATA/config $CONFIGDATA
  53. fi
  54. if [[ -d $PROGRAMDATA/logs ]]; then
  55. mv $PROGRAMDATA/logs $LOGDATA
  56. fi
  57. if [[ -d $PROGRAMDATA/logs ]]; then
  58. mv $PROGRAMDATA/cache $CACHEDATA
  59. fi
  60. ;;
  61. abort-upgrade)
  62. ;;
  63. *)
  64. echo "preinst called with unknown argument \`$1'" >&2
  65. exit 1
  66. ;;
  67. esac
  68. #DEBHELPER#
  69. exit 0