postinst 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. case "$1" in
  15. configure)
  16. # create jellyfin group if it does not exist
  17. if [[ -z "$(getent group jellyfin)" ]]; then
  18. addgroup --quiet --system jellyfin > /dev/null 2>&1
  19. fi
  20. # create jellyfin user if it does not exist
  21. if [[ -z "$(getent passwd jellyfin)" ]]; then
  22. adduser --system --ingroup jellyfin --shell /bin/false jellyfin --no-create-home --home ${PROGRAMDATA} \
  23. --gecos "Jellyfin default user" > /dev/null 2>&1
  24. fi
  25. # ensure $PROGRAMDATA exists
  26. if [[ ! -d $PROGRAMDATA ]]; then
  27. mkdir $PROGRAMDATA
  28. fi
  29. # ensure $CONFIGDATA exists
  30. if [[ ! -d $CONFIGDATA ]]; then
  31. mkdir $CONFIGDATA
  32. fi
  33. # ensure $LOGDATA exists
  34. if [[ ! -d $LOGDATA ]]; then
  35. mkdir $LOGDATA
  36. fi
  37. # ensure $CACHEDATA exists
  38. if [[ ! -d $CACHEDATA ]]; then
  39. mkdir $CACHEDATA
  40. fi
  41. # Ensure permissions are correct on all config directories
  42. chown -R jellyfin $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  43. chgrp adm $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  44. chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  45. chmod +x /usr/lib/jellyfin/restart.sh > /dev/null 2>&1 || true
  46. # Install jellyfin symlink into /usr/bin
  47. ln -sf /usr/lib/jellyfin/bin/jellyfin /usr/bin/jellyfin
  48. ;;
  49. abort-upgrade|abort-remove|abort-deconfigure)
  50. ;;
  51. *)
  52. echo "postinst called with unknown argument \`$1'" >&2
  53. exit 1
  54. ;;
  55. esac
  56. #DEBHELPER
  57. if [[ -x "/usr/bin/deb-systemd-helper" ]]; then
  58. # Manual init script handling
  59. deb-systemd-helper unmask jellyfin.service >/dev/null || true
  60. # was-enabled defaults to true, so new installations run enable.
  61. if deb-systemd-helper --quiet was-enabled jellyfin.service; then
  62. # Enables the unit on first installation, creates new
  63. # symlinks on upgrades if the unit file has changed.
  64. deb-systemd-helper enable jellyfin.service >/dev/null || true
  65. else
  66. # Update the statefile to add new symlinks (if any), which need to be
  67. # cleaned up on purge. Also remove old symlinks.
  68. deb-systemd-helper update-state jellyfin.service >/dev/null || true
  69. fi
  70. fi
  71. # End automatically added section
  72. # Automatically added by dh_installinit
  73. if [[ "$1" == "configure" ]] || [[ "$1" == "abort-upgrade" ]]; then
  74. if [[ -d "/run/systemd/systemd" ]]; then
  75. systemctl --system daemon-reload >/dev/null || true
  76. deb-systemd-invoke start jellyfin >/dev/null || true
  77. elif [[ -x "/etc/init.d/jellyfin" ]] || [[ -e "/etc/init/jellyfin.conf" ]]; then
  78. update-rc.d jellyfin defaults >/dev/null
  79. invoke-rc.d jellyfin start || exit $?
  80. fi
  81. fi
  82. exit 0