build_gerbera.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #!/bin/bash
  2. Version=2.4
  3. function print_centered {
  4. [[ $# == 0 ]] && return 1
  5. declare -i TERM_COLS="$(tput cols)"
  6. declare -i str_len="${#1}"
  7. [[ $str_len -ge $TERM_COLS ]] && {
  8. echo "$1";
  9. return 0;
  10. }
  11. declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
  12. [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
  13. filler=""
  14. for (( i = 0; i < filler_len; i++ )); do
  15. filler="${filler}${ch}"
  16. done
  17. printf "%s%s%s" "$filler" "$1" "$filler"
  18. [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
  19. printf "\n"
  20. return 0
  21. }
  22. print_centered "$(tput setaf 3)"
  23. print_centered " _____ __ ";
  24. print_centered " / ___/__ ____/ / ___ _______ _";
  25. print_centered "/ (_ / -_) __/ _ \/ -_) __/ _ \`/";
  26. print_centered "\___/\__/_/ /_.__/\__/_/ \_,_/ ";
  27. print_centered " ";
  28. echo -n "$(tput setaf 7)"
  29. print_centered "Gerbera UPNP installation script v$Version"
  30. echo ""
  31. sleep 3
  32. #sudo apt-get update
  33. #sudo apt-get install uuid-dev libsqlite3-dev libmysqlclient-dev libmagic-dev libexif-dev libcurl4-openssl-dev libspdlog-dev libpugixml-dev -y
  34. #sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev libavresample-dev libswscale-dev libswresample-dev libpostproc-dev -y
  35. #sudo apt-get install libebml-dev ffmpeg ffmpegthumbnailer libffmpegthumbnailer-dev imagemagick fmtools libfmt-dev libmatroska-dev -y
  36. echo -e ""
  37. cmake_v="$(cmake --version | grep "version" | awk '{print $3}')"
  38. function version {
  39. echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }';
  40. }
  41. if ! [ $(version $cmake_v) -ge $(version "3.18") ]
  42. then
  43. echo -e "Cmake update:"
  44. version=3.21
  45. build=4
  46. mkdir ~/temp
  47. cd ~/temp
  48. sudo apt-get remove --purge cmake -y
  49. wget https://cmake.org/files/v$version/cmake-$version.$build.tar.gz
  50. tar -xzvf cmake-$version.$build.tar.gz
  51. cd cmake-$version.$build/
  52. ./bootstrap
  53. ./configure
  54. make -j$(nproc)
  55. sudo make install
  56. rm -r -f ~/temp
  57. else
  58. echo -e "Cmake version O.K\n"
  59. fi
  60. cd ~/Build_Cube/options
  61. if [ ! -d gerbera ]
  62. then
  63. #git clone https://github.com/gerbera/gerbera.git
  64. wget -c http://folivier.homelinux.org/cube/pack/gerbera-1.12.1.tar.xz
  65. tar xvfJ gerbera-1.12.1.tar.xz
  66. mv gerbera-1.12.1 gerbera
  67. fi
  68. cd ~/Build_Cube/options/gerbera/scripts
  69. sudo ./install-pupnp.sh
  70. cd ~/Build_Cube/options/gerbera/scripts
  71. sudo ./install-fmt.sh
  72. cd ~/Build_Cube/options/gerbera/scripts
  73. sudo ./install-spdlog.sh
  74. cd ~/Build_Cube/options/gerbera/scripts
  75. sudo ./install-duktape.sh
  76. cd ~/Build_Cube/options/gerbera/scripts
  77. sudo ./install-lastfm.sh
  78. cd ~/Build_Cube/options/gerbera/scripts
  79. sudo ./install-pugixml.sh
  80. sed -i -e "s/rm -R taglib-build/rm -R taglib-build ||true/g" install-taglib.sh
  81. sudo ./install-taglib.sh
  82. echo -e ""
  83. cd ~/Build_Cube/options/gerbera
  84. mkdir build
  85. cd build
  86. cmake .. -DWITH_MAGIC=1 -DWITH_MYSQL=0 -DWITH_CURL=1 -DWITH_JS=1 -DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_FFMPEGTHUMBNAILER=1 -DWITH_EXIF=1 -DWITH_LASTFM=0
  87. make -j2
  88. sudo make install
  89. cd ~
  90. wget -c http://folivier.homelinux.org/cube/pack/gerbera.tar.xz
  91. tar xvfJ gerbera.tar.xz
  92. rm gerbera.tar.xz
  93. echo -e "\n\e[97mEnd of process...\e[0m"
  94. function service_ {
  95. cd /home/wareck
  96. if [ -f gerbera.service ];then rm gerbera.service;fi
  97. cat <<'EOF'>> gerbera.service
  98. [Unit]
  99. Description=Gerbera Media Server
  100. After=network.target
  101. [Service]
  102. Type=simple
  103. User=gerbera
  104. Group=gerbera
  105. ExecStart=/usr/local/bin/gerbera
  106. Restart=on-failure
  107. RestartSec=5
  108. [Install]
  109. EOF
  110. chmod +x gerbera.service
  111. sudo cp gerbera.service /lib/systemd/system/
  112. sudo useradd --system gerbera
  113. sudo mkdir /etc/gerbera
  114. sudo mkdir /home/gerbera/
  115. sudo mkdir /home/gerbera/.config/
  116. sudo mkdir /home/gerbera/.config/gerbera
  117. sudo chown -Rv gerbera:gerbera /etc/gerbera
  118. sudo cp /home/wareck/.config/gerbera/config.xml /home/gerbera/.config/gerbera/
  119. sudo systemctl daemon-reload
  120. sudo systemctl start gerbera.service
  121. rm gerbera.service
  122. echo -e "\n\e[97mEnd of process...\e[0m"
  123. }
  124. while true; do
  125. read -p "Do you want to install service (y/n) ? " yn
  126. case $yn in
  127. [Yy] ) echo ok, we will proceed;
  128. service_ ;
  129. exit 1;;
  130. [Nn] ) echo exiting...;
  131. exit;;
  132. * ) echo invalid response;
  133. exit 1;;
  134. esac
  135. done
  136. echo -e "\n\e[97mEnd of process...\e[0m"