#! /bin/bash # vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh: # download and install a2server tools: # mkatinit, mkvolinfo, afptype, afpsync, aliases, nulib2 # Ensure URL we'll use ends in a / case "$A2SERVER_SCRIPT_URL" in */) scriptURL="$A2SERVER_SCRIPT_URL" ;; *) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;; esac case "$A2SERVER_BINARY_URL" in */) binaryURL="$A2SERVER_BINARY_URL" ;; *) binaryURL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files}/" ;; esac useExternalURL=1 [[ $A2SERVER_NO_EXTERNAL ]] && useExternalURL= debianVersion=$(cat /etc/debian_version 2> /dev/null) isRpi= arch= if [[ -f /usr/bin/raspi-config ]]; then isRpi=1 arch='rpi' elif lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ $(cut -c 1 <<< $debianVersion) -ge "7" ]]; then uname_m="$(uname -m)" if [[ $uname_m == "i686" ]]; then arch='debian_x86' elif [[ $uname_m == "x86_64" ]]; then arch='debian_x64' fi fi debianName= if [[ $debianVersion ]]; then debianMajor=$(cut -c 1-2 <<< $debianVersion) if [[ $debianMajor == "8." ]]; then debianName="jessie" elif [[ $debianMajor == "7." ]]; then debianName="wheezy" else debianName="unknown" fi fi echo "A2SERVER: Installing A2SERVER tools..." # delete older nulib2 which doesn't correctly handle zero-length forks in GSHK-created archives if hash nulib2 &> /dev/null; then nulib2version=$(nulib2 | sed -n 2p | sed 's|^.*v\([0-9]\)\.\([0-9]\)\.\([0-9]\).*$|\1\2\3|' 2> /dev/null) if (( $nulib2version < 310 )); then sudo apt-get -y purge nulib2 &> /dev/null sudo rm $(command -v nulib2) &> /dev/null fi fi if ! hash nulib2 &> /dev/null; then echo "A2SERVER: Installing nulib2..." cd /tmp if [[ $arch && ! -f /tmp/a2server-compileAlways ]]; then { wget -qO- "${binaryURL}precompiled/nulib2-3.1.0a1-${arch}.tgz" | sudo tar Pzx; } &> /dev/null fi if ! hash nulib2 &> /dev/null; then if [[ ! -f /tmp/a2server-packageReposUpdated ]]; then # prepare for installing packages sudo apt-get -y update touch /tmp/a2server-packageReposUpdated fi # Dependencies: build-dep for nulib sudo apt-get -y install build-essential zlib1g-dev sudo apt-get -y clean cd /tmp rm -rf /tmp/nulib2 &> /dev/null mkdir /tmp/nulib2 cd /tmp/nulib2 if [[ $useExternalURL ]]; then wget -q -O nulib2-3.1.0a1.zip "https://github.com/fadden/nulib2/archive/51af83986cd5798daa7e0d82a161c9d3963c72bc.zip" unzip nulib2-3.1.0a1.zip 2> /dev/null rm nulib2-3.1.0a1.zip &> /dev/null fi if [ ! -d nulib2* ]; then wget -q -O nulib2-3.1.0a1.zip "${binaryURL}external/source/nulib2-3.1.0a1.zip" unzip nulib2-3.1.0a1.zip 2> /dev/null rm nulib2-3.1.0a1.zip &> /dev/null fi cd nulib2* cd nufxlib ./configure make sudo make install cd ../nulib2 ./configure make sudo make install cd rm -rf /tmp/nulib2 fi else echo "A2SERVER: Nulib2 has already been installed." fi # download and install The Unarchiver, for expanding Apple disk images # http://wakaba.c3.cx/s/apps/unarchiver.html if ! hash unar &> /dev/null; then echo "A2SERVER: Installing The Unarchiver..." if [[ ! -f /tmp/a2server-packageReposUpdated ]]; then # prepare for installing packages sudo apt-get -y update touch /tmp/a2server-packageReposUpdated fi # jessie and later: Just use the unar package if [[ $debianName == "jessie" ]]; then sudo apt-get -y install unar sudo apt-get clean fi if ! hash unar &> /dev/null; then if [[ $arch && ! -f /tmp/a2server-compileAlways ]]; then # Dependencies: for unar sudo apt-get -y install libgnustep-base1.22 sudo apt-get clean { wget -qO- "${binaryURL}precompiled/unar-${arch}_${debianName}.tgz" | sudo tar Pzx; } &> /dev/null fi # If all else fails, compile from source. if ! hash unar &> /dev/null; then # Dependencies: build-deps for unar sudo apt-get -y install build-essential libgnustep-base-dev libz-dev libbz2-dev libssl-dev libicu-dev unzip sudo apt-get clean rm -rf /tmp/unar &> /dev/null mkdir /tmp/unar cd /tmp/unar if [[ $useExternalURL ]]; then wget -O unar-1.8.1.zip https://github.com/incbee/Unarchiver/archive/unar-1.8.1.zip unzip -o unar-1.8.1.zip &> /dev/null fi if [ ! -d *Unarchiver*/XADMaster ]; then # need single bracket for glob wget -O unar-1.8.1.zip ${binaryURL}external/source/unar-1.8.1.zip unzip -o unar-1.8.1.zip &> /dev/null fi cd *Unarchiver*/XADMaster make -f Makefile.linux sudo mv lsar unar /usr/local/bin cd ../Extra sudo mv lsar.1 unar.1 /usr/local/man/man1 cd rm -rf /tmp/unar fi sudo mandb &> /dev/null fi else echo "A2SERVER: The Unarchiver has already been installed." fi if ! hash unzip &> /dev/null; then echo "A2SERVER: Installing unzip..." if [[ ! -f /tmp/a2server-packageReposUpdated ]]; then # prepare for installing packages sudo apt-get -y update touch /tmp/a2server-packageReposUpdated fi # Dependencies: unzip sudo apt-get -y install unzip sudo apt-get clean else echo "A2SERVER: unzip has already been installed." fi sudo wget -q -O /usr/local/bin/afpsync "${scriptURL}scripts/tools/afpsync.txt" sudo chmod ugo+x /usr/local/bin/afpsync sudo wget -q -O /usr/local/bin/afptype "${scriptURL}scripts/tools/afptype.txt" sudo chmod ugo+x /usr/local/bin/afptype sudo wget -q -O /usr/local/bin/mkatinit "${scriptURL}scripts/tools/mkatinit.txt" sudo chmod ugo+x /usr/local/bin/mkatinit sudo wget -q -O /usr/local/bin/mkvolinfo "${scriptURL}scripts/tools/mkvolinfo.txt" sudo chmod ugo+x /usr/local/bin/mkvolinfo sudo wget -q -O /usr/local/bin/cppo "${scriptURL}scripts/tools/cppo.txt" sudo chmod ugo+x /usr/local/bin/cppo sudo wget -q -O /usr/local/etc/a2server-help.txt "${scriptURL}scripts/tools/a2server-help.txt" sudo wget -q -O /usr/local/etc/a2server-aliases "${scriptURL}scripts/tools/a2server-aliases.txt" sudo wget -q -O /usr/local/etc/a2serverrc "${scriptURL}scripts/tools/a2serverrc.txt" # 1.3.0: a2serverrc is now called from /etc/bash.bashrc, # which in turn calls a2server-aliases grep 'a2server-aliases' /etc/bash.bashrc > /dev/null && \ sudo sed -i 's/a2server-aliases/a2serverrc/' /etc/bash.bashrc grep 'a2serverrc' /etc/bash.bashrc > /dev/null || \ echo "source /usr/local/etc/a2serverrc" | sudo tee -a /etc/bash.bashrc > /dev/null motd="/etc/motd" if [[ ! $(grep A2SERVER $motd) ]]; then echo | sudo tee -a $motd > /dev/null echo "Type 'system-shutdown' to turn off A2SERVER." | sudo tee -a $motd > /dev/null echo "Type 'a2server-setup' to configure network boot." | sudo tee -a $motd > /dev/null echo "Type 'a2server-help' for a list of other commands." | sudo tee -a $motd > /dev/null echo | sudo tee -a $motd > /dev/null fi