Skip to content

Instantly share code, notes, and snippets.

@aspratyush
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aspratyush/01352d8729f8a5112fad to your computer and use it in GitHub Desktop.
Save aspratyush/01352d8729f8a5112fad to your computer and use it in GitHub Desktop.
Torch7 install for Fedora 22
#!/usr/bin/env bash
######################################################################
# This script installs required dependencies for Torch7
######################################################################
install_openblas() {
# Get and build OpenBlas (Torch is much better with a decent Blas)
cd /tmp/
git clone https://github.com/xianyi/OpenBLAS.git -b master
cd OpenBLAS
if [ $(getconf _NPROCESSORS_ONLN) = 1 ]; then
make NO_AFFINITY=1 USE_OPENMP=0 USE_THREAD=0
else
make NO_AFFINITY=1 USE_OPENMP=1
fi
RET=$?;
if [ $RET -ne 0 ]; then
echo "Error. OpenBLAS could not be compiled";
exit $RET;
fi
sudo make install
RET=$?;
if [ $RET -ne 0 ]; then
echo "Error. OpenBLAS could not be installed";
exit $RET;
fi
}
install_openblas_AUR() {
# build and install an OpenBLAS package for Archlinux
cd /tmp && \
curl https://aur.archlinux.org/packages/op/openblas-lapack/openblas-lapack.tar.gz | tar zxf - && \
cd openblas-lapack && \
makepkg -csi
}
chekupdates_archlinux() {
# checks if archlinux is up to date
if [[ -n $(checkupdates) ]]; then
echo "It seems that your system is not up to date."
echo "It is recommended to update your system before going any further."
read -p "Continue installation ? [y/N] " yn
case $yn in
Y|y ) echo "Continuing...";;
N|n ) ;;
* ) echo "Installation aborted."
echo "Relauch this script after updating your system with 'pacman -Syu'."
exit 0
esac
fi
}
# Based on Platform:
if [[ `uname` == 'Darwin' ]]; then
# GCC?
if [[ `which gcc` == '' ]]; then
echo "MacOS doesn't come with GCC: please install XCode and the command line tools."
exit 1
fi
# Install Homebrew (pkg manager):
if [[ `which brew` == '' ]]; then
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
# Install dependencies:
brew update
brew install git readline cmake wget qt
brew install libjpeg imagemagick zeromq graphicsmagick
brew link readline --force
brew install caskroom/cask/brew-cask
brew cask install xquartz
brew remove gnuplot
brew install gnuplot --with-wxmac --with-cairo --with-pdflib-lite --with-x11 --without-lua
elif [[ "$(uname)" == 'Linux' ]]; then
if [[ -r /etc/os-release ]]; then
# this will get the required information without dirtying any env state
DIST_VERS="$( ( . /etc/os-release &>/dev/null
echo "$ID $VERSION_ID") )"
DISTRO="${DIST_VERS%% *}" # get our distro name
VERSION="${DIST_VERS##* }" # get our version number
elif [[ -r /etc/redhat-release ]]; then
DIST_VERS=( $( cat /etc/redhat-release ) ) # make the file an array
DISTRO="${DIST_VERS[0],,}" # get the first element and get lcase
VERS="${DIST_VERS[2]}" # get the third element (version)
elif [[ -r /etc/lsb-release ]]; then
DIST_VERS="$( ( . /etc/lsb-release &>/dev/null
echo "${DISTRIB_ID,,} $DISTRIB_RELEASE") )"
DISTRO="${DIST_VERS%% *}" # get our distro name
VERSION="${DIST_VERS##* }" # get our version number
else # well, I'm out of ideas for now
echo '==> Failed to determine distro and version.'
exit 1
fi
# Detect fedora
if [[ "$DISTRO" = "fedora" ]]; then
distribution="fedora"
fedora_major_version="$VERSION"
# Detect archlinux
elif [[ "$DISTRO" = "arch" ]]; then
distribution="archlinux"
# Detect Ubuntu
elif [[ "$DISTRO" = "ubuntu" ]]; then
export DEBIAN_FRONTEND=noninteractive
distribution="ubuntu"
ubuntu_major_version="${VERSION%%.*}"
# Detect CentOS
elif [[ "$DISTRO" = "centos" ]]; then
distribution="centos"
centos_major_version="$VERSION"
else
echo '==> Only Ubuntu, Fedora, Archlinux and CentOS distributions are supported.'
exit 1
fi
# Install dependencies for Torch:
if [[ $distribution == 'ubuntu' ]]; then
declare -a target_pkgs
target_pkgs=( build-essential gcc g++ curl \
cmake libreadline-dev git-core libqt4-core libqt4-gui \
libqt4-dev libjpeg-dev libpng-dev ncurses-dev \
imagemagick libzmq3-dev gfortran unzip gnuplot \
gnuplot-x11 ipython )
sudo apt-get update
# python-software-properties is required for apt-add-repository
sudo apt-get install -y python-software-properties
if [[ $ubuntu_major_version == '14' ]]; then
echo '==> Found Ubuntu version 14.xx, installing dependencies'
sudo apt-get install -y software-properties-common \
libgraphicsmagick1-dev nodejs npm libfftw3-dev sox libsox-dev \
libsox-fmt-all
sudo add-apt-repository -y ppa:jtaylor/ipython
else
sudo add-apt-repository -y ppa:chris-lea/zeromq
sudo add-apt-repository -y ppa:chris-lea/node.js
fi
sudo apt-get update
sudo apt-get install -y "${target_pkgs[@]}"
install_openblas
elif [[ $distribution == 'archlinux' ]]; then
echo "Archlinux installation"
chekupdates_archlinux
sudo pacman -S --quiet --noconfirm \
cmake curl readline ncurses git \
gnuplot unzip libjpeg-turbo libpng libpng \
imagemagick graphicsmagick fftw sox zeromq \
qt4 qtwebkit
# if GCC is not installed yet
(pacman -Qi gcc &>/dev/null) || \
(pacman -Qi gcc-multilib &>/dev/null) ;
gcc_installed=$?
if [[ $gcc_installed -ne 0 ]]; then
if [[ "machine:`uname -m`" == "machine:x86_64" ]]; then
gcc_package="gcc-multilib"
else
gcc_package="gcc"
fi
sudo pacman -S --quiet --noconfirm ${gcc_package} gcc-fortran
fi
# if openblas is not installed yet
(pacman -Qs openblas &> /dev/null) ;
openblas_installed=$?
if [[ $openblas_installed -ne 0 ]]; then
install_openblas_AUR
else
echo "OpenBLAS is already installed"
fi
elif [[ $distribution == 'fedora' ]]; then
if [[ $fedora_major_version == '20' ]]; then
sudo yum install -y cmake curl readline-devel ncurses-devel \
gcc-c++ gcc-gfortran git gnuplot unzip \
nodejs npm libjpeg-turbo-devel libpng-devel \
ImageMagick GraphicsMagick-devel fftw-devel \
sox-devel sox zeromq3-devel \
qt-devel qtwebkit-devel sox-plugins-freeworld \
python-ipython
install_openblas
elif [[ $fedora_major_version == '22' ]]; then
#using dnf - since yum has been deprecated
#sox-plugins-freeworld is not yet available in repos for F22
sudo dnf install -y cmake curl readline-devel ncurses-devel \
gcc-c++ gcc-gfortran git gnuplot unzip \
nodejs npm libjpeg-turbo-devel libpng-devel \
ImageMagick GraphicsMagick-devel fftw-devel \
sox-devel sox qt-devel qtwebkit-devel \
python-ipython czmq czmq-devel
install_openblas
else
echo "Only Fedora 20 or Fedora 22 is supported for now, aborting."
exit 1
fi
elif [[ $distribution == 'centos' ]]; then
if [[ $centos_major_version == '7' ]]; then
sudo yum install -y epel-release # a lot of things live in EPEL
sudo yum install -y cmake curl readline-devel ncurses-devel \
gcc-c++ gcc-gfortran git gnuplot unzip \
nodejs npm libjpeg-turbo-devel libpng-devel \
ImageMagick GraphicsMagick-devel fftw-devel \
sox-devel sox zeromq3-devel \
qt-devel qtwebkit-devel sox-plugins-freeworld
sudo yum install -y python-ipython
install_openblas
else
echo "Only CentOS 7 is supported for now, aborting."
exit 1
fi
fi
else
# Unsupported
echo '==> platform not supported, aborting'
exit 1
fi
ipython_exists=$(command -v ipython)
if [[ $ipython_exists ]]; then {
ipython_version=$(ipython --version|cut -f1 -d'.')
if [[ $ipython_version != 2 && $ipython_version != 3 ]]; then {
echo 'WARNING: Your ipython version is too old. Type "ipython --version" to see this. Should be at least version 2'
} fi
} fi
# Done.
echo "==> Torch7's dependencies have been installed"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment