227 lines
6.0 KiB
Bash
227 lines
6.0 KiB
Bash
|
#!/bin/bash
|
|||
|
#######################################################################
|
|||
|
#
|
|||
|
# Project......: libinstaller.sh
|
|||
|
# Creator......: matteyeux
|
|||
|
# Description..: Script to install libimobiledevice on OS X & Debian Distros
|
|||
|
# initials scripts: brew.sh & autobuild.sh by DarkMalloc
|
|||
|
# Type.........: Public
|
|||
|
#
|
|||
|
######################################################################
|
|||
|
# Language :
|
|||
|
# bash
|
|||
|
# Version : 0.2
|
|||
|
#
|
|||
|
# Change Log
|
|||
|
# ==========
|
|||
|
#
|
|||
|
# ===============================================================
|
|||
|
# Date | Who | What
|
|||
|
# ---------------------------------------------------------------
|
|||
|
# 27/12/15 | Mathieu Hautebas | Script creation
|
|||
|
# ---------------------------------------------------------------
|
|||
|
# 10/03/16 | HanSheng Zhang | Fix Stack overflow caused by naming issues
|
|||
|
# ---------------------------------------------------------------
|
|||
|
|
|||
|
function apt-get(){
|
|||
|
sudo apt-get install -y git
|
|||
|
sudo apt-get install -y build-essential
|
|||
|
sudo apt-get install -y make
|
|||
|
sudo apt-get install -y autoconf
|
|||
|
sudo apt-get install -y automake
|
|||
|
sudo apt-get install -y libtool
|
|||
|
sudo apt-get install -y openssl
|
|||
|
sudo apt-get install -y tar
|
|||
|
sudo apt-get install -y perl
|
|||
|
sudo apt-get install -y binutils
|
|||
|
sudo apt-get install -y gcc
|
|||
|
sudo apt-get install -y libstdc++6-dev
|
|||
|
sudo apt-get install -y libc6-dev
|
|||
|
sudo apt-get install -y libssl-dev
|
|||
|
sudo apt-get install -y libusb-1.0
|
|||
|
sudo apt-get install -y gcc4.2
|
|||
|
sudo apt-get install -y g++
|
|||
|
sudo apt-get install -y libcurl4-gnutls-dev
|
|||
|
sudo apt-get install -y fuse
|
|||
|
sudo apt-get install -y libxml2-dev
|
|||
|
|
|||
|
sudo apt-get install -y libgfortran1
|
|||
|
sudo apt-get install -y libgfortran2
|
|||
|
sudo apt-get install -y libgfortran
|
|||
|
sudo apt-get install -y libgcc1
|
|||
|
sudo apt-get install -y libreadline-dev
|
|||
|
sudo apt-get install -y libglib2.0-dev
|
|||
|
sudo apt-get install -y libzip-dev
|
|||
|
sudo apt-get install -y libclutter-1.0-dev
|
|||
|
sudo apt-get install -y libgtk2.0-dev
|
|||
|
sudo apt-get install -y libclutter-gtk-1.0-dev
|
|||
|
sudo apt-get install -y lib32bz2-dev
|
|||
|
sudo apt-get install -y libfuse-dev
|
|||
|
|
|||
|
sudo apt-get install -y subversion
|
|||
|
sudo apt-get install -y cython
|
|||
|
sudo apt-get install -y python-2.7
|
|||
|
sudo apt-get install -y python2.7-numpy
|
|||
|
sudo apt-get install -y libncurses4
|
|||
|
sudo apt-get install -y libncurses5
|
|||
|
sudo apt-get install -y ncurses-base
|
|||
|
}
|
|||
|
|
|||
|
function brewfunc(){
|
|||
|
# Install Hombrew.
|
|||
|
if ! type "brew" > /dev/null; then
|
|||
|
echo "brew Doesn't Exist.Installing"
|
|||
|
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
|||
|
|
|||
|
else
|
|||
|
echo "Brew Exists. Using"
|
|||
|
fi
|
|||
|
|
|||
|
|
|||
|
# Install command-line tools using Homebrew.
|
|||
|
|
|||
|
# Ask for the administrator password upfront.
|
|||
|
sudo -v
|
|||
|
|
|||
|
# Keep-alive: update existing `sudo` time stamp until the script has finished.
|
|||
|
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
|
|||
|
|
|||
|
echo "Make sure we’re using the latest Homebrew."
|
|||
|
brew update
|
|||
|
|
|||
|
echo "Upgrade any already-installed formulae."
|
|||
|
brew upgrade
|
|||
|
|
|||
|
echo "Install GNU core utilities (those that come with OS X are outdated)".
|
|||
|
echo "Don’t forget to add `$(brew --prefix coreutils)/libexec/gnubin` to `$PATH`".
|
|||
|
brew install coreutils
|
|||
|
sudo ln -s /usr/local/bin/gsha256sum /usr/local/bin/sha256sum
|
|||
|
|
|||
|
echo " Install some other useful utilities like `sponge`".
|
|||
|
brew install moreutils
|
|||
|
echo "Install GNU `find`, `locate`, `updatedb`, and `xargs`, `g`-prefixed".
|
|||
|
brew install findutils
|
|||
|
echo "Install GNU `sed`, overwriting the built-in `sed`".
|
|||
|
brew install gnu-sed --with-default-names
|
|||
|
|
|||
|
echo "Install Development Packages";
|
|||
|
brew install libxml2
|
|||
|
brew install libzip
|
|||
|
brew install libplist
|
|||
|
brew install openssl
|
|||
|
brew install clutter
|
|||
|
brew install cogl
|
|||
|
brew install usbmuxd
|
|||
|
|
|||
|
|
|||
|
# Install Software;
|
|||
|
brew install automake
|
|||
|
brew install cmake
|
|||
|
brew install colormake
|
|||
|
brew install autoconf
|
|||
|
brew install libtool
|
|||
|
brew install pkg-config
|
|||
|
brew install gcc
|
|||
|
brew install libusb
|
|||
|
brew install homebrew/fuse/ifuse
|
|||
|
brew install glib
|
|||
|
|
|||
|
# Install Optional;
|
|||
|
brew install screenfetch
|
|||
|
brew install Caskroom/cask/osxfuse
|
|||
|
|
|||
|
# Install extras;
|
|||
|
brew install bfg
|
|||
|
brew install binutils
|
|||
|
brew install binwalk
|
|||
|
brew install cifer
|
|||
|
brew install dex2jar
|
|||
|
brew install dns2tcp
|
|||
|
brew install fcrackzip
|
|||
|
brew install foremost
|
|||
|
brew install hashpump
|
|||
|
brew install hydra
|
|||
|
brew install john
|
|||
|
brew install knock
|
|||
|
brew install nmap
|
|||
|
brew install pngcheck
|
|||
|
brew install socat
|
|||
|
brew install sqlmap
|
|||
|
brew install tcpflow
|
|||
|
brew install tcpreplay
|
|||
|
brew install tcptrace
|
|||
|
brew install ucspi-tcp # `tcpserver` etc.
|
|||
|
brew install xz
|
|||
|
|
|||
|
# Install other useful binaries.
|
|||
|
brew install ack
|
|||
|
#brew install exiv2
|
|||
|
brew install git
|
|||
|
#brew install imagemagick --with-webp
|
|||
|
brew install lua
|
|||
|
brew install lynx
|
|||
|
brew install p7zip
|
|||
|
brew install pigz
|
|||
|
|
|||
|
# Install Node.js. Note: this installs `npm` too, using the recommended
|
|||
|
# installation method.
|
|||
|
brew install node
|
|||
|
|
|||
|
# Remove outdated versions from the cellar.
|
|||
|
brew cleanup
|
|||
|
}
|
|||
|
|
|||
|
function autobuild(){
|
|||
|
successlibs=()
|
|||
|
failedlibs=()
|
|||
|
libs=( "libplist" "libusbmuxd" "libimobiledevice" "usbmuxd" "libirecovery" \
|
|||
|
"ideviceinstaller" "libideviceactivation" "idevicerestore" "sbmanager" "ifuse" )
|
|||
|
|
|||
|
spinner() {
|
|||
|
# What On Earth Is This?
|
|||
|
local pid=$1
|
|||
|
local delay=0.75
|
|||
|
local spinstr='|/-\'
|
|||
|
echo "$pid" > "/tmp/.spinner.pid"
|
|||
|
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
|
|||
|
local temp=${spinstr#?}
|
|||
|
printf " [%c] " "$spinstr"
|
|||
|
local spinstr=$temp${spinstr%"$temp"}
|
|||
|
sleep $delay
|
|||
|
printf "\b\b\b\b\b\b"
|
|||
|
done
|
|||
|
printf " \b\b\b\b"
|
|||
|
}
|
|||
|
|
|||
|
buildlibs() {
|
|||
|
for i in "${libs[@]}"
|
|||
|
do
|
|||
|
echo -e "\033[1;32mFetching $i..."
|
|||
|
git clone https://github.com/libimobiledevice/${i}.git
|
|||
|
cd $i
|
|||
|
echo -e "\033[1;32mConfiguring $i..."
|
|||
|
./autogen.sh
|
|||
|
./configure
|
|||
|
echo -e "\033[1;32mBuilding $i..."
|
|||
|
make && sudo make install
|
|||
|
echo -e "\033[1;32mInstalling $i..."
|
|||
|
cd ..
|
|||
|
done
|
|||
|
echo -e "\033[0m"
|
|||
|
}
|
|||
|
|
|||
|
function buildr {
|
|||
|
buildlibs
|
|||
|
}
|
|||
|
echo -e "\033[1;37mLibimobiledevice library build script - Elrhk 2015"
|
|||
|
buildr
|
|||
|
}
|
|||
|
|
|||
|
if [[ $(uname) == 'Linux' ]]; then
|
|||
|
apt-get
|
|||
|
autobuild
|
|||
|
exit 1
|
|||
|
elif [[ $(uname) == 'Darwin' ]]; then
|
|||
|
brewfunc
|
|||
|
autobuild
|
|||
|
fi
|