The installer now has version v1.6 and contains some optimisations during installation and updating. When selecting the update or install option in the installer, it will ask whether or not you want to update the system. Dependencies will be installed when selecting the update or install option. This helps reduce the updating time, fixes problems with missing dependencies and makes the installation process a bit faster. Also added the option to 'update-anyway' when selecting the update option which bypasses the check for the configuration file in the Calendar folder. Apart from that, some important information will be displayed with a small delay on the Terminal instead of all at once. Lastly, colours have been added on some output lines. This version of the installer has been tested on a Raspberry Pi Zero W running on Raspbian Lite form April 2019.
258 lines
10 KiB
Bash
258 lines
10 KiB
Bash
#!/bin/bash
|
|
# E-Paper-Calendar software installer for Raspberry pi
|
|
# Version: 1.6 (Mid April 2019)
|
|
# Stability status of this installer: Stable
|
|
|
|
echo -e "\e[1mPlease select an option from below:"
|
|
echo -e "\e[97mEnter \e[91m1 \e[97m to update the E-Paper software"
|
|
echo -e "\e[97mEnter \e[91m2 \e[97m to install the E-Paper software"
|
|
echo -e "\e[97mEnter \e[91m3 \e[97m to uninstall the E-Paper software"
|
|
echo -e "\e[97mConfirm your selection with [ENTER]"
|
|
read -r -p 'Waiting for input... ' option
|
|
|
|
if [ "$option" != 1 ] && [ "$option" != 2 ] && [ "$option" != 3 ]; then
|
|
echo -e "invalid number, aborting now"
|
|
exit
|
|
fi
|
|
if [ -z "$option" ]; then
|
|
echo -e "You didn't enter anything, aborting now."
|
|
exit
|
|
fi
|
|
if [ "$option" = 3 ]; then
|
|
echo -e "\e[1;36m"Removing the E-Paper software now..."\e[0m"
|
|
pip3 uninstall Pillow -y && sudo pip3 uninstall Pillow -y && sudo pip3 uninstall pyowm -y&& sudo pip3 uninstall ics -y && pip3 uninstall pyowm -y && pip3 uninstall ics -y && sudo apt-get remove supervisor -y && pip3 uninstall feedparser -y && sudo pip3 uninstall feedparser -y && sudo apt-get clean && sudo apt-get autoremove -y
|
|
if [ -e /etc/supervisor/conf.d/E-Paper.conf ]; then
|
|
sudo rm /etc/supervisor/conf.d/E-Paper.conf
|
|
fi
|
|
echo -e "\e[1;36m"The libraries have been removed successfully"\e[0m"
|
|
sleep 1
|
|
echo -e "Removing the Inky-Calendar folder if it exists"
|
|
if [ -d "/home/pi/Inky-Calendar" ]; then
|
|
sudo rm -r /home/pi/Inky-Calendar/
|
|
echo -e "\e[1;36m"Found the E-Paper-software folder and deleted it"\e[0m"
|
|
fi
|
|
echo -e "\e[1;36m"All done!"\e[0m"
|
|
fi
|
|
|
|
if [ "$option" = 1 ]; then
|
|
echo -e "\e[1;36m"Checking if the settings.py exists..."\e[0m"
|
|
if [ -e /home/pi/Inky-Calendar/Calendar/settings.py ]; then
|
|
echo -e "Found an E-Paper settings file."
|
|
sleep 2
|
|
echo "Backing up the current settings file in the home directory."
|
|
sleep 2
|
|
cp /home/pi/Inky-Calendar/Calendar/settings.py /home/pi/settings-old.py
|
|
echo -e "renaming the old E-Paper software folder"
|
|
sleep 2
|
|
cp -r /home/pi/Inky-Calendar /home/pi/Inky-Calendar-old
|
|
sudo rm -r /home/pi/Inky-Calendar
|
|
echo "Updating now..."
|
|
cd
|
|
else
|
|
# Ask to update anyway. May not work always, but can help with new versions.
|
|
echo -e "\e[1;36m"Could not find the configuration file -settings.py- in /home/pi/Inky-Calendar/Calendar"\e[0m"
|
|
sleep 2
|
|
echo -e "\e[1;36m"Would you like to update the Inky-Calendar software anyway?"\e[0m"
|
|
echo -e "\e[97mPlease type [y] for yes or [n] for no and confirm your selection with [ENTER]"
|
|
read -r -p 'Waiting for input... ' update_anyway
|
|
|
|
if [ "$update_anyway" != Y ] && [ "$update_anyway" != y ] && [ "$update_anyway" != N ] && [ "$update_anyway" != n ]; then
|
|
echo -e "invalid input, aborting now"
|
|
exit
|
|
fi
|
|
if [ -z "$update_anyway" ]; then
|
|
echo -e "You didn't enter anything, aborting now."
|
|
exit
|
|
fi
|
|
|
|
if [ "$update_anyway" = Y ] || [ "$update_anyway" = y ]; then
|
|
echo "Updating now..."
|
|
else
|
|
echo -e "Not attempting to update, exiting now."
|
|
exit
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ "$option" = 2 ]; then
|
|
echo -e "\e[1;36m"Setting up the system by installing some required libraries for python3"\e[0m"
|
|
|
|
# Installing a few packages which are missing on Raspbian Stretch Lite
|
|
echo -e "\e[1;36m"Installing a few packages that are missing on Raspbian Stretch Lite..."\e[0m"
|
|
sudo apt-get install python3-pip -y python-rpi.gpio-dbgsym -y python3-rpi.gpio -y python-rpi.gpio -y python3-rpi.gpio-dbgsym -y python3-spidev -y git -y libopenjp2-7-dev -y libtiff5 -y python3-numpy -y
|
|
echo ""
|
|
|
|
# Running apt-get clean and apt-get autoremove
|
|
echo -e "\e[1;36m"Cleaning a bit of mess to free up some space..."\e[0m"
|
|
sudo apt-get clean && sudo apt-get autoremove -y
|
|
echo ""
|
|
fi
|
|
|
|
if [ "$option" = 1 ] || [ "$option" = 2 ]; then
|
|
# Ask to update system
|
|
echo -e "\e[1;36m"Would you like to update and upgrade the operating system first?"\e[0m"
|
|
sleep 1
|
|
echo -e "\e[97mIt is not scrictly required, but highly recommended."
|
|
sleep 1
|
|
echo -e "\e[97mPlease note that updating may take quite some time, in rare cases up to 1 hour."
|
|
sleep 1
|
|
echo -e "\e[97mPlease type [y] for yes or [n] for no and confirm your selection with [ENTER]"
|
|
read -r -p 'Waiting for input... ' update
|
|
|
|
if [ "$update" != Y ] && [ "$update" != y ] && [ "$update" != N ] && [ "$update" != n ]; then
|
|
echo -e "invalid input, aborting now"
|
|
exit
|
|
fi
|
|
if [ -z "$update" ]; then
|
|
echo -e "You didn't enter anything, aborting now."
|
|
exit
|
|
fi
|
|
|
|
if [ "$update" = Y ] || [ "$update" = y ]; then
|
|
# Updating and upgrading the system, without taking too much space
|
|
echo -e "\e[1;36m"Running apt-get update and apt-get dist-upgrade for you..."\e[0m"
|
|
sleep 1
|
|
echo -e "\e[1;36m"This will take a while, sometimes up to 1 hour"\e[0m"
|
|
sudo apt-get update && sudo apt-get dist-upgrade -y
|
|
echo -e "\e[1;36m"System successfully updated and upgraded!"\e[0m"
|
|
echo ""
|
|
fi
|
|
|
|
# Installing dependencies
|
|
|
|
#PYOWM for user pi
|
|
echo -e "\e[1;36m"Installing dependencies for the Inky-Calendar software"\e[0m"
|
|
|
|
echo -e "\e[1;36m"Checking if pyowm is installed for user pi"\e[0m"
|
|
if python3.5 -c "import pyowm" &> /dev/null; then
|
|
echo 'pyowm is installed, skipping installation of this package.'
|
|
else
|
|
echo 'pywom is not installed, attempting to install now'
|
|
pip3 install pyowm
|
|
fi
|
|
|
|
#PYOWM for user sudo
|
|
echo -e "\e[1;36m"Checking if pyowm is installed for user sudo"\e[0m"
|
|
if sudo python3.5 -c "import pyowm" &> /dev/null; then
|
|
echo 'pyowm is installed, skipping installation of this package.'
|
|
else
|
|
echo 'pywom is not installed, attempting to install now'
|
|
sudo pip3 install pyowm
|
|
fi
|
|
|
|
#Pillow for user pi
|
|
echo -e "\e[1;36m"Checking if Pillow is installed for user pi"\e[0m"
|
|
if python3.5 -c "import PIL" &> /dev/null; then
|
|
echo 'Pillow is installed, skipping installation of this package.'
|
|
else
|
|
echo 'Pillow is not installed, attempting to install now'
|
|
pip3 install Pillow==5.3.0
|
|
fi
|
|
|
|
#Pillow for user sudo
|
|
echo -e "\e[1;36m"Checking if Pillow is installed for user sudo"\e[0m"
|
|
if sudo python3.5 -c "import PIL" &> /dev/null; then
|
|
echo 'Pillow is installed, skipping installation of this package.'
|
|
else
|
|
echo 'Pillow is not installed, attempting to install now'
|
|
sudo pip3 install Pillow==5.3.0
|
|
fi
|
|
|
|
#Ics.py for user pi
|
|
echo -e "\e[1;36m"Checking if ics is installed for user pi"\e[0m"
|
|
if python3.5 -c "import ics" &> /dev/null; then
|
|
echo 'ics is installed, skipping installation of this package.'
|
|
else
|
|
echo 'ics is not installed, attempting to install now'
|
|
pip3 install ics
|
|
fi
|
|
|
|
#Ics.py for user sudo
|
|
echo -e "\e[1;36m"Checking if ics is installed for user sudo"\e[0m"
|
|
if sudo python3.5 -c "import ics" &> /dev/null; then
|
|
echo 'ics is installed, skipping installation of this package.'
|
|
else
|
|
echo 'ics is not installed, attempting to install now'
|
|
sudo pip3 install ics
|
|
fi
|
|
|
|
#feedparser for user pi
|
|
echo -e "\e[1;36m"Checking if feedparser is installed for user pi"\e[0m"
|
|
if python3.5 -c "import feedparser" &> /dev/null; then
|
|
echo 'feedparser is installed, skipping installation of this package.'
|
|
else
|
|
echo 'feedparser is not installed, attempting to install now'
|
|
pip3 install feedparser
|
|
fi
|
|
|
|
#feedparser for user sudo
|
|
echo -e "\e[1;36m"Checking if feedparser is installed for user sudo"\e[0m"
|
|
if sudo python3.5 -c "import feedparser" &> /dev/null; then
|
|
echo 'feedparser is installed, skipping installation of this package.'
|
|
else
|
|
echo 'feedparser is not installed, attempting to install now'
|
|
sudo pip3 install feedparser
|
|
fi
|
|
|
|
echo -e "\e[1;36m"Finished installing all dependencies"\e[0m"
|
|
|
|
# Clone the repository, then delete some non-required files
|
|
echo -e "\e[1;36m"Installing the Inky-Calendar Software for your display"\e[0m"
|
|
cd
|
|
git clone https://github.com/aceisace/Inky-Calendar Inky-Calendar-temp
|
|
mkdir Inky-Calendar
|
|
cd Inky-Calendar-temp
|
|
cp -r Calendar /home/pi/Inky-Calendar/
|
|
cp README.md /home/pi/Inky-Calendar/
|
|
cp LICENSE /home/pi/Inky-Calendar/
|
|
cp -r .git /home/pi/Inky-Calendar/
|
|
|
|
# Make a copy of the sample settings.py file
|
|
cd /home/pi/Inky-Calendar/Calendar
|
|
cp settings.py.sample settings.py
|
|
|
|
# Remove the downloaded (temporary) directory
|
|
cd
|
|
sudo rm -r Inky-Calendar-temp
|
|
|
|
# add a short info
|
|
cat > /home/pi/Inky-Calendar/Info.txt << EOF
|
|
This document contains a short info of the Inky-Calendar software version
|
|
|
|
Version: 1.6
|
|
Installer version: 1.6 (Mid April 2019)
|
|
configuration file: /home/pi/Inky-Calendar/Calendar/settings.py
|
|
If the time was set correctly, you installed this software on:
|
|
EOF
|
|
echo "$(date)" >> /home/pi/Inky-Calendar/Info.txt
|
|
echo ""
|
|
|
|
# Setting up supervisor
|
|
echo -e "\e[1;36m"Setting up auto-start of script at boot"\e[0m"
|
|
sudo apt-get install supervisor -y
|
|
|
|
sudo bash -c 'cat > /etc/supervisor/conf.d/E-Paper.conf' << EOF
|
|
[program:E-Paper]
|
|
command = sudo /usr/bin/python3.5 /home/pi/Inky-Calendar/Calendar/E-Paper.py
|
|
stdout_logfile = /home/pi/Inky-Calendar/E-Paper.log
|
|
stdout_logfile_maxbytes = 1MB
|
|
stderr_logfile = /home/pi/Inky-Calendar/E-Paper-err.log
|
|
stderr_logfile_maxbytes = 1MB
|
|
EOF
|
|
|
|
sudo service supervisor start E-Paper
|
|
|
|
echo ""
|
|
|
|
# Final words
|
|
echo -e "\e[1;36m"The install was successful"\e[0m"
|
|
echo -e "\e[1;36m"The programm is set to start at every boot."\e[0m"
|
|
echo -e "\e[1;31m"Please enter your details in the file 'settings.py'."\e[0m"
|
|
echo -e "\e[1;31m"If this file is not modified, the programm will not start"\e[0m"
|
|
|
|
echo -e "\e[1;36m"To modify the settings file, enter:"\e[0m"
|
|
echo -e "\e[1;36m"nano /home/pi/Inky-Calendar/Calendar/settings.py"\e[0m"
|
|
echo -e "\e[1;36m"You can test if the programm works by typing:"\e[0m"
|
|
echo -e "\e[1;36m"python3.5 /home/pi/Inky-Calendar/Calendar/E-Paper.py"\e[0m"
|
|
fi
|