1 Star 0 Fork 0

zhenlingcn/distro

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
install-deps 15.63 KB
一键复制 编辑 原始数据 按行查看 历史
#!/usr/bin/env bash
set -e
######################################################################
# This script installs required dependencies for Torch7
######################################################################
{
install_openblas() {
# Get and build OpenBlas (Torch is much better with a decent Blas)
# Optionally set environment variable PREFIX to control
# the installation directory.
local PATH=$PATH:/sbin ## improve chances of finding ldconfig
# Only proceed installing OpenBLAS if either ldconfig is unavailable, or ldconfig
# reports that OpenBLAS is not already installed.
if ! type ldconfig >/dev/null || ! ldconfig -p | grep -q "lib\(open\)\?blas.so"; then
local tempdir=$(mktemp -d)
git clone https://github.com/xianyi/OpenBLAS.git "$tempdir"/OpenBLAS || { echo "Error. Cannot clone OpenBLAS." >&2 ; exit 1 ; }
cd "$tempdir"/OpenBLAS || { echo "Error. Cannot create tempdir." >&2 ; exit 1 ; }
if [ $(getconf _NPROCESSORS_CONF) == 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
if [ ! -z "$PREFIX" ]; then
sudo make install PREFIX="$PREFIX"
else
sudo make install
fi
RET=$?;
if [ $RET -ne 0 ]; then
echo "Error. OpenBLAS could not be installed";
exit $RET;
fi
cd -
rm -rf "$tempdir"
else
echo "Skipping install of OpenBLAS - it is already installed." >&2
fi
}
install_openblas_AUR() {
# build and install an OpenBLAS package for Archlinux
cd /tmp && \
curl https://aur.archlinux.org/cgit/aur.git/snapshot/openblas-lapack.tar.gz | tar zxf - && \
cd openblas-lapack
makepkg -csi --noconfirm
RET=$?;
if [ $RET -ne 0 ]; then
echo "Error. OpenBLAS could not be installed";
exit $RET;
fi
}
checkupdates_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...";;
* ) echo "Installation aborted."
echo "Relaunch 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
brew install libjpeg imagemagick zeromq graphicsmagick openssl
brew link readline --force
brew cask install xquartz
brew list -1 | grep -q "^gnuplot\$" && brew remove gnuplot
brew install gnuplot --with-wxmac --with-cairo --with-pdflib-lite --with-x11 --without-lua
brew install qt || true
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
VERSION="${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%%.*}"
elif [[ "$DISTRO" = "linuxmint" ]]; then
export DEBIAN_FRONTEND=noninteractive
distribution="ubuntu"
ubuntu_major_version="16"
# Detect elementary OS
elif [[ "$DISTRO" = "elementary" ]]; then
export DEBIAN_FRONTEND=noninteractive
distribution="elementary"
elementary_version="${VERSION%.*}"
# Detect CentOS
elif [[ "$DISTRO" = "centos" ]]; then
distribution="centos"
centos_major_version="$VERSION"
# Detect AWS
elif [[ "$DISTRO" = "amzn" ]]; then
distribution="amzn"
amzn_major_version="$VERSION"
elif [[ "$DISTRO" == "raspbian" ]]; then
distribution="raspbian"
debian_major_version="$VERSION"
elif [[ "$DISTRO" == "opensuse" ]]; then
distribution="opensuse"
opensuse_major_version="$VERSION"
# Detect Debian
elif [[ "$DISTRO" = "debian" ]]; then
distribution="debian"
debian_major_version="$VERSION"
elif [[ "$DISTRO" = "neon" ]]; then
distribution="ubuntu"
ubuntu_major_version="${VERSION%%.*}"
else
echo '==> Only Ubuntu, elementary OS, Fedora, Archlinux, OpenSUSE, Debian, CentOS and KDE neon distributions are supported.'
exit 1
fi
# Install dependencies for Torch:
if [[ $distribution == 'ubuntu' ]]; then
if sudo apt-get update ; then
echo "Updated successfully."
else
echo "Some portion of the update is failed"
fi
# python-software-properties is required for apt-add-repository
sudo apt-get install -y python-software-properties
echo "==> Found Ubuntu version ${ubuntu_major_version}.xx"
if [[ $ubuntu_major_version -lt '12' ]]; then
echo '==> Ubuntu version not supported.'
exit 1
elif [[ $ubuntu_major_version -lt '14' ]]; then # 12.xx
sudo -E add-apt-repository -y ppa:chris-lea/zeromq
elif [[ $ubuntu_major_version -lt '15' ]]; then # 14.xx
sudo -E apt-get install -y software-properties-common
sudo -E add-apt-repository -y ppa:jtaylor/ipython
else
sudo apt-get install -y software-properties-common \
libgraphicsmagick1-dev libfftw3-dev sox libsox-dev \
libsox-fmt-all
fi
if sudo apt-get update ; then
echo "Updated successfully."
else
echo "Some portion of the update is failed"
fi
sudo apt-get install -y build-essential gcc g++ curl \
cmake libreadline-dev git-core libqt4-dev libjpeg-dev \
libpng-dev ncurses-dev imagemagick libzmq3-dev gfortran \
unzip gnuplot gnuplot-x11 ipython
gcc_major_version=$(gcc --version | grep ^gcc | awk '{print $4}' | \
cut -c 1)
if [[ $gcc_major_version == '5' ]]; then
echo '==> Found GCC 5, installing GCC 4.9.'
sudo apt-get install -y gcc-4.9 libgfortran-4.9-dev g++-4.9
fi
if [[ $ubuntu_major_version -lt '15' ]]; then
sudo apt-get install libqt4-core libqt4-gui
fi
install_openblas || true
elif [[ $distribution == 'raspbian' ]]; then
echo "==> Found Raspbian version ${debian_major_version}.xx"
if sudo apt-get update ; then
echo "Updated successfully."
else
echo "Some portion of the update is failed"
fi
sudo apt-get install -y build-essential gcc g++ curl \
cmake libreadline-dev git-core libqt4-dev libjpeg-dev \
libpng-dev ncurses-dev imagemagick libzmq3-dev gfortran \
unzip gnuplot gnuplot-x11 ipython
install_openblas || true
elif [[ $distribution == 'opensuse' ]]; then
if sudo zypper refresh ; then
echo "Updated successfully."
else
echo "Some portion of the update failed"
fi
sudo zypper install -y -t pattern devel_basis
if [[ $opensuse_major_version == '42.2' ]]; then
sudo zypper install -y gcc curl cmake readline-devel IPython git-core \
libqt4 libjpeg62-devel libpng16-compat-devel ImageMagick unzip \
gnuplot gcc-fortran libzmq5
else
sudo zypper install -y gcc curl cmake readline-devel IPython git-core \
libqt4 libjpeg8-devel libpng15-compat-devel imagemagick unzip \
gnuplot gcc-fortran libzmq3
fi
elif [[ $distribution == 'elementary' ]]; then
declare -a target_pkgs
target_pkgs=( build-essential gcc g++ curl \
cmake libreadline-dev git-core libqtcore4 libqtgui4 \
libqt4-dev libjpeg-dev libpng-dev ncurses-dev \
imagemagick libzmq3-dev gfortran unzip gnuplot \
gnuplot-x11 ipython )
if sudo apt-get update ; then
echo "Updated successfully."
else
echo "Some portion of the update is failed"
fi
# python-software-properties is required for apt-add-repository
sudo apt-get install -y python-software-properties
if [[ $elementary_version == '0.3' ]]; then
echo '==> Found Ubuntu version 14.xx based elementary installation, installing dependencies'
sudo apt-get install -y software-properties-common \
libgraphicsmagick1-dev libfftw3-dev sox libsox-dev \
libsox-fmt-all
sudo -E add-apt-repository -y ppa:jtaylor/ipython
else
sudo -E add-apt-repository -y ppa:chris-lea/zeromq
fi
if sudo apt-get update ; then
echo "Updated successfully."
else
echo "Some portion of the update is failed"
fi
sudo apt-get install -y "${target_pkgs[@]}"
install_openblas || true
elif [[ $distribution == 'archlinux' ]]; then
echo "Archlinux installation"
checkupdates_archlinux
sudo pacman -S --quiet --noconfirm --needed \
cmake curl readline ncurses git \
gnuplot unzip libjpeg-turbo libpng libpng \
imagemagick graphicsmagick fftw sox zeromq \
ipython qt4 qt5-webkit || exit 1
pacman -Sl multilib &>/dev/null
if [[ $? -ne 0 ]]; then
multilib=
else
multilib=-multilib
fi
sudo pacman -S --quiet --noconfirm --needed \
gcc${multilib} gcc-fortran${multilib} || exit 1
# if openblas is not installed yet
pacman -Qs openblas &> /dev/null
if [[ $? -ne 0 ]]; then
install_openblas_AUR || true
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 \
libjpeg-turbo-devel libpng-devel \
ImageMagick GraphicsMagick-devel fftw-devel \
sox-devel sox zeromq3-devel \
qt-devel qtwebkit-devel sox-plugins-freeworld \
ipython
install_openblas || true
elif [[ $fedora_major_version -ge '22' || $fedora_major_version -le '26' ]]; then
#using dnf - since yum has been deprecated
#sox-plugins-freeworld is not yet available in repos for F22
sudo dnf install -y make cmake curl readline-devel ncurses-devel \
gcc-c++ gcc-gfortran git gnuplot unzip \
libjpeg-turbo-devel libpng-devel \
ImageMagick GraphicsMagick-devel fftw-devel \
sox-devel sox qt-devel qtwebkit-devel \
python-ipython czmq czmq-devel
install_openblas || true
else
echo "Only Fedora 20-25 are 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 make cmake curl readline-devel ncurses-devel \
gcc-c++ gcc-gfortran git gnuplot unzip \
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 || true
else
echo "Only CentOS 7 is supported for now, aborting."
exit 1
fi
elif [[ $distribution == 'amzn' ]]; then
sudo yum install -y cmake curl readline-devel ncurses-devel \
gcc-c++ gcc-gfortran git gnuplot unzip \
libjpeg-turbo-devel libpng-devel \
ImageMagick GraphicsMagick-devel fftw-devel \
libgfortran python27-pip git openssl-devel
#
# These libraries are missing from amzn linux
# sox-devel sox sox-plugins-freeworld qt-devel qtwebkit-devel
#
sudo yum --enablerepo=epel install -y zeromq3-devel
sudo pip install ipython
install_openblas || true
elif [[ $distribution == 'debian' ]]; then
if [[ $debian_major_version == '8' ]] || [[ $debian_major_version == '9' ]]; then
echo "==> Found Debian version ${debian_major_version}"
if sudo apt-get update ; then
echo "Updated successfully."
else
echo "Some portion of the update is failed"
fi
#Basic package required for Torch
sudo apt-get install -y build-essential curl \
cmake libreadline-dev git-core libqt4-dev libjpeg-dev \
libpng-dev ncurses-dev imagemagick libzmq3-dev gfortran \
unzip gnuplot gnuplot-x11 ipython
#require for common torch plug-ins
sudo apt-get install -y libgraphicsmagick1-dev libfftw3-dev sox libsox-dev
install_openblas || true
else
echo "Only Jessie Debian 8 and 9 is supported for now, aborting."
exit 1
fi
fi
elif [[ "$(uname)" == 'FreeBSD' ]]; then
pkg install ImageMagick cmake curl fftw3 git gnuplot libjpeg-turbo \
libzmq3 ncurses openblas openssl png py27-ipython \
py27-pip qt4-corelib qt4-gui readline unzip
else
# Unsupported
echo '==> platform not supported, aborting'
exit 1
fi
ipython_exists=$(command -v ipython) || true
if [[ $ipython_exists ]]; then {
ipython_version=$(ipython --version|cut -f1 -d'.')
if [[ $ipython_version -lt 2 ]]; 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"
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhenlingcn/distro.git
git@gitee.com:zhenlingcn/distro.git
zhenlingcn
distro
distro
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385