Command not found while calling function in shell script [closed]

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
-1
down vote

favorite












I have a shell script which I am using to install caffe but when I execute that script using sh command, it shows command not found error for the function call. Code is below.



#!/bin/bash

# This script installs (or at least, attempts to install) Caffe in CPU mode
# with Python bindings without root permission. In doing so, it installs the
# following dependencies:
#
# * protobuf
# * cmake
# * gflags
# * glog
# * opencv
# * hdf5
# * python2
# * pip
# * libpng (recent version required for freetype)
# * automake (recent version required for freetype)
# * freetype (required for scikit-image)
# * various python modules
# - numpy
# - scipy
# - scikit-image
# - protobuf
# - yaml
# * boost
# * lmdb
# * libtool
# * snappy
# * leveldb
# * openblas

LOCAL_INSTALL_DIR="$HOME/local"
SCRATCH_DIR="$HOME/scratch_for_setup"
CAFFE_INSTALL_DIR="$HOME/caffe"

# Note that changing these versions may not work - it's a little fragile and
# depends on the URLs for these utilities to have the same template across
# versions (e.g. http://example.com/tool/tool_v$version_number). The URLs
# work with the versions listed as of the last committed version, but should
# be tested before updating and committing.
PROTOBUF_VERSION="2.6.1"
GFLAGS_VERSION="2.1.2"
GLOG_VERSION="0.3.4"
OPENCV_VERSION="2.4.11"
LMDB_VERSION="0.87"
PYTHON_VERSION="2.7.10" # Must be python2.*
LIBPNG_VERSION="1.6.18"
FREETYPE_VERSION="2.6.1"
LIBTOOL_VERSION="2.4.6"
AUTOMAKE_VERSION="1.15"
LEVELDB_VERSION="1.18"
OPENBLAS_VERSION="0.2.14"

# Hardcoded versions - these cannot be changed here.
# TODO: Allow changing the below values.
# BOOST_VERSION="1.59.0"
# HDF5_VERSION="1.8.15-patch1"
# CMAKE_VERSION="3.2.3"

# E.g. 2.7.10 -> python2.7
PYTHON_SHORT_VERSION="$(echo $PYTHON_VERSION | sed -e 's/([0-9]*.[0-9]*)(..*)?/1/g')"
PYTHON_BINARY="python$PYTHON_SHORT_VERSION"

# Exit on error.
set -e

# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
# Usage: untar_to_dir <tar_file> <output_directory>
# Untars to a specified directory, instead of using the "root" directory
# specified in the tar file. Useful for cd'ing.
untar_to_dir()
if [[ "$#" -ne 2 ]] ; then
echo "Improper number of arguments to untar_to_dir"
exit
fi

TAR_FILE="$1"
OUTPUT="$2"
mkdir -p "$OUTPUT"

tar xzvf "$TAR_FILE" -C "$OUTPUT" --strip-components=1


# Usage: scratch_init <utility_name>
scratch_init()
if [[ "$#" -ne 1 ]] ; then
echo "Improper number of arguments to scratch_init"
exit
fi

cd "$SCRATCH_DIR"
mkdir -p "$1"
cd "$1"


install_protobufs()
scratch_init protobuf

wget "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-$PROTOBUF_VERSION.tar.gz"
untar_to_dir "protobuf-$PROTOBUF_VERSION.tar.gz" protobuf-$PROTOBUF_VERSION
cd protobuf-$PROTOBUF_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/protobuf-$PROTOBUF_VERSION"
make -j4
make install


install_cmake()
scratch_init cmake

# Cmake has pre-built binaries ready, so we will just untar it in
# $LOCAL_INSTALL_DIR.
cd $LOCAL_INSTALL_DIR
wget "https://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.tar.gz"
untar_to_dir "cmake-3.2.3-Linux-x86_64.tar.gz" .

echo "You will need to add the following line to your .zshrc/.bashrc:"
echo 'export CMAKE_ROOT="'$LOCAL_INSTALL_DIR'/share/cmake-3.2"'


install_gflags()
scratch_init gflags

wget "https://github.com/gflags/gflags/archive/v$GFLAGS_VERSION.tar.gz"
untar_to_dir "v$GFLAGS_VERSION.tar.gz" "v$GFLAGS_VERSION"
cd "v$GFLAGS_VERSION"

mkdir build
cd build

cmake -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D CMAKE_POSITION_INDEPENDENT_CODE=ON ..
make
make install


install_glog()
scratch_init glog

wget "https://github.com/google/glog/archive/v$GLOG_VERSION.tar.gz"
untar_to_dir "v$GLOG_VERSION.tar.gz" "v$GLOG_VERSION"
cd "v$GLOG_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/glog-$GLOG_VERSION"
make
make install


install_opencv()
scratch_init opencv

wget "https://github.com/Itseez/opencv/archive/$OPENCV_VERSION.tar.gz" -O "opencv-$OPENCV_VERSION.tar.gz"
untar_to_dir "opencv-$OPENCV_VERSION.tar.gz" "opencv-$OPENCV_VERSION"
cd "opencv-$OPENCV_VERSION"

mkdir release
cd release
cmake -D BUILD_ZLIB=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D BUILD_PYTHON_SUPPORT=ON -D WITH_GTK=OFF ..

# Update $SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# to
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# (Add -O0 after CXX_FLAGS)
# This is necessary due to http://stackoverflow.com/a/14619427/1291812
sed -i'' -e
's:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp"'
"$SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make"

make -j16
make install


install_hdf5()
scratch_init hdf5

wget "http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.15-patch1.tar.gz"
untar_to_dir "hdf5-1.8.15-patch1.tar.gz" "hdf5-1.8.15"
cd hdf5-1.8.15

./configure --prefix="$LOCAL_INSTALL_DIR/hdf5-1.8.15"
make -j4
make install


install_libpng()
scratch_init libpng

wget "http://downloads.sourceforge.net/libpng/libpng-$LIBPNG_VERSION.tar.gz"
untar_to_dir "libpng-$LIBPNG_VERSION.tar.gz" "libpng-$LIBPNG_VERSION"
cd "libpng-$LIBPNG_VERSION"

LDFLAGS="-L$LOCAL_INSTALL_DIR/lib" ./configure --prefix="$LOCAL_INSTALL_DIR/libpng-$LIBPNG_VERSION"
make -j4
make install


install_automake()
scratch_init automake

wget "http://ftp.gnu.org/gnu/automake/automake-$AUTOMAKE_VERSION.tar.gz"
untar_to_dir "automake-$AUTOMAKE_VERSION.tar.gz" "automake-$AUTOMAKE_VERSION"
cd "automake-$AUTOMAKE_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/automake-$AUTOMAKE_VERSION"
make -j4
make install


install_freetype()
scratch_init freetype

wget "http://download.savannah.gnu.org/releases/freetype/freetype-$FREETYPE_VERSION.tar.gz"
untar_to_dir "freetype-$FREETYPE_VERSION.tar.gz" "freetype-$FREETYPE_VERSION"
cd "freetype-$FREETYPE_VERSION"

./autogen.sh
./configure --prefix="$LOCAL_INSTALL_DIR/freetype-$FREETYPE_VERSION"
make
make install


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_python2()
scratch_init python2

wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz
untar_to_dir "Python-$PYTHON_VERSION.tgz" "python-$PYTHON_VERSION"

cd "python-$PYTHON_VERSION"
./configure --prefix="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION" --enable-shared
make -j4
make altinstall


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_pip()
scratch_init pip2

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$PYTHON_BINARY get-pip.py


install_python_modules()
$PYTHON_BINARY -m pip install numpy
$PYTHON_BINARY -m pip install scipy
$PYTHON_BINARY -m pip install scikit-image
$PYTHON_BINARY -m pip install protobuf
$PYTHON_BINARY -m pip install pyyaml


# TODO: This does not install the python bindings, it seems... That is,
# import boost
# does not work in python.
install_boost()
scratch_init boost

wget "http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download" -O "boost_1_59_0.tar.gz"
untar_to_dir "boost_1_59_0.tar.gz" "boost_1_59_0"

cd boost_1_59_0
./bootstrap.sh --prefix="$LOCAL_INSTALL_DIR/boost-1.59.0" --with-python="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION/bin/python$PYTHON_SHORT_VERSION"
./b2 install


install_lmdb()
scratch_init lmdb

wget "https://github.com/dw/py-lmdb/archive/py-lmdb_$LMDB_VERSION.tar.gz"
untar_to_dir "py-lmdb_$LMDB_VERSION.tar.gz" "py-lmdb_$LMDB_VERSION"
cd "py-lmdb_$LMDB_VERSION"
$PYTHON_BINARY setup.py install

# Contains the actual LMDB sources?
scratch_init openldap
wget "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.42.tgz"
untar_to_dir "openldap-2.4.42.tgz" openldap-2.4.42
cd openldap-2.4.42/libraries/lmdb
make -j4
sed -i'' -e 's:(prefix.*=).*:1'$LOCAL_INSTALL_DIR':g' Makefile
make install


install_libtool()
scratch_init libtool

wget "http://ftpmirror.gnu.org/libtool/libtool-$LIBTOOL_VERSION.tar.gz"
untar_to_dir "libtool-$LIBTOOL_VERSION.tar.gz" "libtool-$LIBTOOL_VERSION"
cd libtool-$LIBTOOL_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/libtool-$LIBTOOL_VERSION"
make -j4
make install


install_snappy()
scratch_init snappy

wget "https://github.com/google/snappy/tarball/master" -O snappy.tar.gz
untar_to_dir "snappy.tar.gz" "libsnappy"
cd "libsnappy"

./autogen.sh
echo "AC_PROG_LIBTOOL" >>config.ac
./configure --prefix="$LOCAL_INSTALL_DIR/snappy"
make
make install
# The default autogen.sh does not handle compatibility well... This one,
# from the following PR: https://github.com/google/snappy/pull/4 is
# preferable.
#wget https://raw.githubusercontent.com/juanmaneo/snappy/49262984cddf3985fba7d1ceca6b14986f6dbef0/autogen.sh -O autogen.sh


install_leveldb()
scratch_init leveldb

wget "https://github.com/google/leveldb/archive/v$LEVELDB_VERSION.tar.gz"
untar_to_dir "v$LEVELDB_VERSION.tar.gz" "leveldb-$LEVELDB_VERSION"
cd "leveldb-$LEVELDB_VERSION"

LD_FLAGS="-L$LOCAL_INSTALL_DIR/lib" make -j4

# leveldb doesn't have a make install target...
# Instructions below taken from
# http://techoverflow.net/blog/2012/12/14/compiling-installing-leveldb-on-linux/
cp --preserve=links libleveldb.* $LOCAL_INSTALL_DIR/lib
cp -r include/leveldb $LOCAL_INSTALL_DIR/include/


install_openblas()
scratch_init openblas

wget "https://github.com/xianyi/OpenBLAS/archive/v$OPENBLAS_VERSION.tar.gz" -O "openblas_$OPENBLAS_VERSION.tar.gz"
untar_to_dir openblas_$OPENBLAS_VERSION.tar.gz openblas_$OPENBLAS_VERSION
cd openblas_$OPENBLAS_VERSION

make -j4
make PREFIX="$LOCAL_INSTALL_DIR" install

# OpenBLAS only installs libopenblas.a, but it provides the symbols for
# libcblas.a and libatlas.a (I think). Symlinking libatlas and libcblas
# allows Caffe to build.
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libcblas.a"
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libatlas.a"


install_caffe()
mkdir -p "$CAFFE_INSTALL_DIR"
cd "$CAFFE_INSTALL_DIR"

# wget https://github.com/BVLC/caffe/archive/rc2.tar.gz
# untar_to_dir rc2.tar.gz .
git clone https://github.com/yuzcccc/caffe.git
cp -a caffe/. .
rm -rf caffe

cp Makefile.config.example Makefile.config
echo "=== Compiling caffe ==="
CPU_ONLY=1
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make -j4

echo "=== Compiling caffe python bindings ==="
python_include_dir="$LOCAL_INSTALL_DIR/include/python$PYTHON_SHORT_VERSION"
numpy_include_dir="$LOCAL_INSTALL_DIR/lib/python$PYTHON_SHORT_VERSION/site-packages/numpy/core/include"

CPU_ONLY=1
CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:$python_include_dir:$numpy_include_dir"
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make pycaffe

echo "=== If that worked, congrats! One last note: ==="
echo "You'll need to update your PYTHONPATH in .bashrc/.zshrc as follows:"
echo 'export PYTHONPATH="'$CAFFE_INSTALL_DIR'/python:$PYTHONPATH"'


echo "=== Installing Protobufs ==="
install_protobuf
echo "=== Installing cmake ==="
install_cmake
echo "=== Installing gflags ==="
install_gflags
echo "=== Installing glog ==="
install_glog
echo "=== Installing opencv ==="
install_opencv
echo "=== Installing hdf5 ==="
install_hdf5
echo "=== Installing python2 ==="
install_python2
echo "=== Installing pip ==="
install_pip
echo "=== Installing libpng ==="
install_libpng
echo "=== Installing automake ==="
install_automake
echo "=== Installing freetype ==="
install_freetype
echo "=== Installing python modules ==="
install_python_modules
echo "=== Installing boost ==="
install_boost
echo "=== Installing lmdb ==="
install_lmdb
echo "=== Installing libtool ==="
install_libtool
echo "=== Installing snappy ==="
install_snappy
echo "=== Installing leveldb ==="
install_leveldb
echo "=== Installing openblas ==="
install_openblas

echo "=== The dependencies are installed! ==="
echo "You likely want to add the following lines to your .bashrc/.zshrc"
echo 'export LD_LIBRARY_PATH="'$LOCAL_INSTALL_DIR'/lib64:'$LOCAL_INSTALL_DIR'/lib:$LD_LIBRARY_PATH"'
echo 'export C_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$C_INCLUDE_PATH"'
echo 'export CPLUS_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$CPLUS_INCLUDE_PATH"'

echo "=== Once you've done that, you can run install_caffe by uncommenting below. ==="
install_caffe


I get following error, when I try to call sh install_caffe.sh.



=== Installing Protobufs ===
install_caffe.sh: line 379: install_protobuf: command not found



I am performing following steps before execution.



  1. dos2unix caffe_install.sh

  2. chmod +x caffe_install.sh






share|improve this question











closed as off-topic by ilkkachu, vonbrand, X Tian, Archemar, sourcejedi May 18 at 9:48


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – ilkkachu, vonbrand, X Tian, Archemar, sourcejedi
If this question can be reworded to fit the rules in the help center, please edit the question.












  • function is defined as protobufs (with a trailing s), and command is called with protobuf (no trailling s). (I'll VTC anyway)
    – Archemar
    May 18 at 9:10














up vote
-1
down vote

favorite












I have a shell script which I am using to install caffe but when I execute that script using sh command, it shows command not found error for the function call. Code is below.



#!/bin/bash

# This script installs (or at least, attempts to install) Caffe in CPU mode
# with Python bindings without root permission. In doing so, it installs the
# following dependencies:
#
# * protobuf
# * cmake
# * gflags
# * glog
# * opencv
# * hdf5
# * python2
# * pip
# * libpng (recent version required for freetype)
# * automake (recent version required for freetype)
# * freetype (required for scikit-image)
# * various python modules
# - numpy
# - scipy
# - scikit-image
# - protobuf
# - yaml
# * boost
# * lmdb
# * libtool
# * snappy
# * leveldb
# * openblas

LOCAL_INSTALL_DIR="$HOME/local"
SCRATCH_DIR="$HOME/scratch_for_setup"
CAFFE_INSTALL_DIR="$HOME/caffe"

# Note that changing these versions may not work - it's a little fragile and
# depends on the URLs for these utilities to have the same template across
# versions (e.g. http://example.com/tool/tool_v$version_number). The URLs
# work with the versions listed as of the last committed version, but should
# be tested before updating and committing.
PROTOBUF_VERSION="2.6.1"
GFLAGS_VERSION="2.1.2"
GLOG_VERSION="0.3.4"
OPENCV_VERSION="2.4.11"
LMDB_VERSION="0.87"
PYTHON_VERSION="2.7.10" # Must be python2.*
LIBPNG_VERSION="1.6.18"
FREETYPE_VERSION="2.6.1"
LIBTOOL_VERSION="2.4.6"
AUTOMAKE_VERSION="1.15"
LEVELDB_VERSION="1.18"
OPENBLAS_VERSION="0.2.14"

# Hardcoded versions - these cannot be changed here.
# TODO: Allow changing the below values.
# BOOST_VERSION="1.59.0"
# HDF5_VERSION="1.8.15-patch1"
# CMAKE_VERSION="3.2.3"

# E.g. 2.7.10 -> python2.7
PYTHON_SHORT_VERSION="$(echo $PYTHON_VERSION | sed -e 's/([0-9]*.[0-9]*)(..*)?/1/g')"
PYTHON_BINARY="python$PYTHON_SHORT_VERSION"

# Exit on error.
set -e

# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
# Usage: untar_to_dir <tar_file> <output_directory>
# Untars to a specified directory, instead of using the "root" directory
# specified in the tar file. Useful for cd'ing.
untar_to_dir()
if [[ "$#" -ne 2 ]] ; then
echo "Improper number of arguments to untar_to_dir"
exit
fi

TAR_FILE="$1"
OUTPUT="$2"
mkdir -p "$OUTPUT"

tar xzvf "$TAR_FILE" -C "$OUTPUT" --strip-components=1


# Usage: scratch_init <utility_name>
scratch_init()
if [[ "$#" -ne 1 ]] ; then
echo "Improper number of arguments to scratch_init"
exit
fi

cd "$SCRATCH_DIR"
mkdir -p "$1"
cd "$1"


install_protobufs()
scratch_init protobuf

wget "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-$PROTOBUF_VERSION.tar.gz"
untar_to_dir "protobuf-$PROTOBUF_VERSION.tar.gz" protobuf-$PROTOBUF_VERSION
cd protobuf-$PROTOBUF_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/protobuf-$PROTOBUF_VERSION"
make -j4
make install


install_cmake()
scratch_init cmake

# Cmake has pre-built binaries ready, so we will just untar it in
# $LOCAL_INSTALL_DIR.
cd $LOCAL_INSTALL_DIR
wget "https://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.tar.gz"
untar_to_dir "cmake-3.2.3-Linux-x86_64.tar.gz" .

echo "You will need to add the following line to your .zshrc/.bashrc:"
echo 'export CMAKE_ROOT="'$LOCAL_INSTALL_DIR'/share/cmake-3.2"'


install_gflags()
scratch_init gflags

wget "https://github.com/gflags/gflags/archive/v$GFLAGS_VERSION.tar.gz"
untar_to_dir "v$GFLAGS_VERSION.tar.gz" "v$GFLAGS_VERSION"
cd "v$GFLAGS_VERSION"

mkdir build
cd build

cmake -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D CMAKE_POSITION_INDEPENDENT_CODE=ON ..
make
make install


install_glog()
scratch_init glog

wget "https://github.com/google/glog/archive/v$GLOG_VERSION.tar.gz"
untar_to_dir "v$GLOG_VERSION.tar.gz" "v$GLOG_VERSION"
cd "v$GLOG_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/glog-$GLOG_VERSION"
make
make install


install_opencv()
scratch_init opencv

wget "https://github.com/Itseez/opencv/archive/$OPENCV_VERSION.tar.gz" -O "opencv-$OPENCV_VERSION.tar.gz"
untar_to_dir "opencv-$OPENCV_VERSION.tar.gz" "opencv-$OPENCV_VERSION"
cd "opencv-$OPENCV_VERSION"

mkdir release
cd release
cmake -D BUILD_ZLIB=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D BUILD_PYTHON_SUPPORT=ON -D WITH_GTK=OFF ..

# Update $SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# to
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# (Add -O0 after CXX_FLAGS)
# This is necessary due to http://stackoverflow.com/a/14619427/1291812
sed -i'' -e
's:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp"'
"$SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make"

make -j16
make install


install_hdf5()
scratch_init hdf5

wget "http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.15-patch1.tar.gz"
untar_to_dir "hdf5-1.8.15-patch1.tar.gz" "hdf5-1.8.15"
cd hdf5-1.8.15

./configure --prefix="$LOCAL_INSTALL_DIR/hdf5-1.8.15"
make -j4
make install


install_libpng()
scratch_init libpng

wget "http://downloads.sourceforge.net/libpng/libpng-$LIBPNG_VERSION.tar.gz"
untar_to_dir "libpng-$LIBPNG_VERSION.tar.gz" "libpng-$LIBPNG_VERSION"
cd "libpng-$LIBPNG_VERSION"

LDFLAGS="-L$LOCAL_INSTALL_DIR/lib" ./configure --prefix="$LOCAL_INSTALL_DIR/libpng-$LIBPNG_VERSION"
make -j4
make install


install_automake()
scratch_init automake

wget "http://ftp.gnu.org/gnu/automake/automake-$AUTOMAKE_VERSION.tar.gz"
untar_to_dir "automake-$AUTOMAKE_VERSION.tar.gz" "automake-$AUTOMAKE_VERSION"
cd "automake-$AUTOMAKE_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/automake-$AUTOMAKE_VERSION"
make -j4
make install


install_freetype()
scratch_init freetype

wget "http://download.savannah.gnu.org/releases/freetype/freetype-$FREETYPE_VERSION.tar.gz"
untar_to_dir "freetype-$FREETYPE_VERSION.tar.gz" "freetype-$FREETYPE_VERSION"
cd "freetype-$FREETYPE_VERSION"

./autogen.sh
./configure --prefix="$LOCAL_INSTALL_DIR/freetype-$FREETYPE_VERSION"
make
make install


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_python2()
scratch_init python2

wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz
untar_to_dir "Python-$PYTHON_VERSION.tgz" "python-$PYTHON_VERSION"

cd "python-$PYTHON_VERSION"
./configure --prefix="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION" --enable-shared
make -j4
make altinstall


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_pip()
scratch_init pip2

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$PYTHON_BINARY get-pip.py


install_python_modules()
$PYTHON_BINARY -m pip install numpy
$PYTHON_BINARY -m pip install scipy
$PYTHON_BINARY -m pip install scikit-image
$PYTHON_BINARY -m pip install protobuf
$PYTHON_BINARY -m pip install pyyaml


# TODO: This does not install the python bindings, it seems... That is,
# import boost
# does not work in python.
install_boost()
scratch_init boost

wget "http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download" -O "boost_1_59_0.tar.gz"
untar_to_dir "boost_1_59_0.tar.gz" "boost_1_59_0"

cd boost_1_59_0
./bootstrap.sh --prefix="$LOCAL_INSTALL_DIR/boost-1.59.0" --with-python="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION/bin/python$PYTHON_SHORT_VERSION"
./b2 install


install_lmdb()
scratch_init lmdb

wget "https://github.com/dw/py-lmdb/archive/py-lmdb_$LMDB_VERSION.tar.gz"
untar_to_dir "py-lmdb_$LMDB_VERSION.tar.gz" "py-lmdb_$LMDB_VERSION"
cd "py-lmdb_$LMDB_VERSION"
$PYTHON_BINARY setup.py install

# Contains the actual LMDB sources?
scratch_init openldap
wget "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.42.tgz"
untar_to_dir "openldap-2.4.42.tgz" openldap-2.4.42
cd openldap-2.4.42/libraries/lmdb
make -j4
sed -i'' -e 's:(prefix.*=).*:1'$LOCAL_INSTALL_DIR':g' Makefile
make install


install_libtool()
scratch_init libtool

wget "http://ftpmirror.gnu.org/libtool/libtool-$LIBTOOL_VERSION.tar.gz"
untar_to_dir "libtool-$LIBTOOL_VERSION.tar.gz" "libtool-$LIBTOOL_VERSION"
cd libtool-$LIBTOOL_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/libtool-$LIBTOOL_VERSION"
make -j4
make install


install_snappy()
scratch_init snappy

wget "https://github.com/google/snappy/tarball/master" -O snappy.tar.gz
untar_to_dir "snappy.tar.gz" "libsnappy"
cd "libsnappy"

./autogen.sh
echo "AC_PROG_LIBTOOL" >>config.ac
./configure --prefix="$LOCAL_INSTALL_DIR/snappy"
make
make install
# The default autogen.sh does not handle compatibility well... This one,
# from the following PR: https://github.com/google/snappy/pull/4 is
# preferable.
#wget https://raw.githubusercontent.com/juanmaneo/snappy/49262984cddf3985fba7d1ceca6b14986f6dbef0/autogen.sh -O autogen.sh


install_leveldb()
scratch_init leveldb

wget "https://github.com/google/leveldb/archive/v$LEVELDB_VERSION.tar.gz"
untar_to_dir "v$LEVELDB_VERSION.tar.gz" "leveldb-$LEVELDB_VERSION"
cd "leveldb-$LEVELDB_VERSION"

LD_FLAGS="-L$LOCAL_INSTALL_DIR/lib" make -j4

# leveldb doesn't have a make install target...
# Instructions below taken from
# http://techoverflow.net/blog/2012/12/14/compiling-installing-leveldb-on-linux/
cp --preserve=links libleveldb.* $LOCAL_INSTALL_DIR/lib
cp -r include/leveldb $LOCAL_INSTALL_DIR/include/


install_openblas()
scratch_init openblas

wget "https://github.com/xianyi/OpenBLAS/archive/v$OPENBLAS_VERSION.tar.gz" -O "openblas_$OPENBLAS_VERSION.tar.gz"
untar_to_dir openblas_$OPENBLAS_VERSION.tar.gz openblas_$OPENBLAS_VERSION
cd openblas_$OPENBLAS_VERSION

make -j4
make PREFIX="$LOCAL_INSTALL_DIR" install

# OpenBLAS only installs libopenblas.a, but it provides the symbols for
# libcblas.a and libatlas.a (I think). Symlinking libatlas and libcblas
# allows Caffe to build.
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libcblas.a"
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libatlas.a"


install_caffe()
mkdir -p "$CAFFE_INSTALL_DIR"
cd "$CAFFE_INSTALL_DIR"

# wget https://github.com/BVLC/caffe/archive/rc2.tar.gz
# untar_to_dir rc2.tar.gz .
git clone https://github.com/yuzcccc/caffe.git
cp -a caffe/. .
rm -rf caffe

cp Makefile.config.example Makefile.config
echo "=== Compiling caffe ==="
CPU_ONLY=1
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make -j4

echo "=== Compiling caffe python bindings ==="
python_include_dir="$LOCAL_INSTALL_DIR/include/python$PYTHON_SHORT_VERSION"
numpy_include_dir="$LOCAL_INSTALL_DIR/lib/python$PYTHON_SHORT_VERSION/site-packages/numpy/core/include"

CPU_ONLY=1
CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:$python_include_dir:$numpy_include_dir"
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make pycaffe

echo "=== If that worked, congrats! One last note: ==="
echo "You'll need to update your PYTHONPATH in .bashrc/.zshrc as follows:"
echo 'export PYTHONPATH="'$CAFFE_INSTALL_DIR'/python:$PYTHONPATH"'


echo "=== Installing Protobufs ==="
install_protobuf
echo "=== Installing cmake ==="
install_cmake
echo "=== Installing gflags ==="
install_gflags
echo "=== Installing glog ==="
install_glog
echo "=== Installing opencv ==="
install_opencv
echo "=== Installing hdf5 ==="
install_hdf5
echo "=== Installing python2 ==="
install_python2
echo "=== Installing pip ==="
install_pip
echo "=== Installing libpng ==="
install_libpng
echo "=== Installing automake ==="
install_automake
echo "=== Installing freetype ==="
install_freetype
echo "=== Installing python modules ==="
install_python_modules
echo "=== Installing boost ==="
install_boost
echo "=== Installing lmdb ==="
install_lmdb
echo "=== Installing libtool ==="
install_libtool
echo "=== Installing snappy ==="
install_snappy
echo "=== Installing leveldb ==="
install_leveldb
echo "=== Installing openblas ==="
install_openblas

echo "=== The dependencies are installed! ==="
echo "You likely want to add the following lines to your .bashrc/.zshrc"
echo 'export LD_LIBRARY_PATH="'$LOCAL_INSTALL_DIR'/lib64:'$LOCAL_INSTALL_DIR'/lib:$LD_LIBRARY_PATH"'
echo 'export C_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$C_INCLUDE_PATH"'
echo 'export CPLUS_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$CPLUS_INCLUDE_PATH"'

echo "=== Once you've done that, you can run install_caffe by uncommenting below. ==="
install_caffe


I get following error, when I try to call sh install_caffe.sh.



=== Installing Protobufs ===
install_caffe.sh: line 379: install_protobuf: command not found



I am performing following steps before execution.



  1. dos2unix caffe_install.sh

  2. chmod +x caffe_install.sh






share|improve this question











closed as off-topic by ilkkachu, vonbrand, X Tian, Archemar, sourcejedi May 18 at 9:48


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – ilkkachu, vonbrand, X Tian, Archemar, sourcejedi
If this question can be reworded to fit the rules in the help center, please edit the question.












  • function is defined as protobufs (with a trailing s), and command is called with protobuf (no trailling s). (I'll VTC anyway)
    – Archemar
    May 18 at 9:10












up vote
-1
down vote

favorite









up vote
-1
down vote

favorite











I have a shell script which I am using to install caffe but when I execute that script using sh command, it shows command not found error for the function call. Code is below.



#!/bin/bash

# This script installs (or at least, attempts to install) Caffe in CPU mode
# with Python bindings without root permission. In doing so, it installs the
# following dependencies:
#
# * protobuf
# * cmake
# * gflags
# * glog
# * opencv
# * hdf5
# * python2
# * pip
# * libpng (recent version required for freetype)
# * automake (recent version required for freetype)
# * freetype (required for scikit-image)
# * various python modules
# - numpy
# - scipy
# - scikit-image
# - protobuf
# - yaml
# * boost
# * lmdb
# * libtool
# * snappy
# * leveldb
# * openblas

LOCAL_INSTALL_DIR="$HOME/local"
SCRATCH_DIR="$HOME/scratch_for_setup"
CAFFE_INSTALL_DIR="$HOME/caffe"

# Note that changing these versions may not work - it's a little fragile and
# depends on the URLs for these utilities to have the same template across
# versions (e.g. http://example.com/tool/tool_v$version_number). The URLs
# work with the versions listed as of the last committed version, but should
# be tested before updating and committing.
PROTOBUF_VERSION="2.6.1"
GFLAGS_VERSION="2.1.2"
GLOG_VERSION="0.3.4"
OPENCV_VERSION="2.4.11"
LMDB_VERSION="0.87"
PYTHON_VERSION="2.7.10" # Must be python2.*
LIBPNG_VERSION="1.6.18"
FREETYPE_VERSION="2.6.1"
LIBTOOL_VERSION="2.4.6"
AUTOMAKE_VERSION="1.15"
LEVELDB_VERSION="1.18"
OPENBLAS_VERSION="0.2.14"

# Hardcoded versions - these cannot be changed here.
# TODO: Allow changing the below values.
# BOOST_VERSION="1.59.0"
# HDF5_VERSION="1.8.15-patch1"
# CMAKE_VERSION="3.2.3"

# E.g. 2.7.10 -> python2.7
PYTHON_SHORT_VERSION="$(echo $PYTHON_VERSION | sed -e 's/([0-9]*.[0-9]*)(..*)?/1/g')"
PYTHON_BINARY="python$PYTHON_SHORT_VERSION"

# Exit on error.
set -e

# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
# Usage: untar_to_dir <tar_file> <output_directory>
# Untars to a specified directory, instead of using the "root" directory
# specified in the tar file. Useful for cd'ing.
untar_to_dir()
if [[ "$#" -ne 2 ]] ; then
echo "Improper number of arguments to untar_to_dir"
exit
fi

TAR_FILE="$1"
OUTPUT="$2"
mkdir -p "$OUTPUT"

tar xzvf "$TAR_FILE" -C "$OUTPUT" --strip-components=1


# Usage: scratch_init <utility_name>
scratch_init()
if [[ "$#" -ne 1 ]] ; then
echo "Improper number of arguments to scratch_init"
exit
fi

cd "$SCRATCH_DIR"
mkdir -p "$1"
cd "$1"


install_protobufs()
scratch_init protobuf

wget "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-$PROTOBUF_VERSION.tar.gz"
untar_to_dir "protobuf-$PROTOBUF_VERSION.tar.gz" protobuf-$PROTOBUF_VERSION
cd protobuf-$PROTOBUF_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/protobuf-$PROTOBUF_VERSION"
make -j4
make install


install_cmake()
scratch_init cmake

# Cmake has pre-built binaries ready, so we will just untar it in
# $LOCAL_INSTALL_DIR.
cd $LOCAL_INSTALL_DIR
wget "https://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.tar.gz"
untar_to_dir "cmake-3.2.3-Linux-x86_64.tar.gz" .

echo "You will need to add the following line to your .zshrc/.bashrc:"
echo 'export CMAKE_ROOT="'$LOCAL_INSTALL_DIR'/share/cmake-3.2"'


install_gflags()
scratch_init gflags

wget "https://github.com/gflags/gflags/archive/v$GFLAGS_VERSION.tar.gz"
untar_to_dir "v$GFLAGS_VERSION.tar.gz" "v$GFLAGS_VERSION"
cd "v$GFLAGS_VERSION"

mkdir build
cd build

cmake -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D CMAKE_POSITION_INDEPENDENT_CODE=ON ..
make
make install


install_glog()
scratch_init glog

wget "https://github.com/google/glog/archive/v$GLOG_VERSION.tar.gz"
untar_to_dir "v$GLOG_VERSION.tar.gz" "v$GLOG_VERSION"
cd "v$GLOG_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/glog-$GLOG_VERSION"
make
make install


install_opencv()
scratch_init opencv

wget "https://github.com/Itseez/opencv/archive/$OPENCV_VERSION.tar.gz" -O "opencv-$OPENCV_VERSION.tar.gz"
untar_to_dir "opencv-$OPENCV_VERSION.tar.gz" "opencv-$OPENCV_VERSION"
cd "opencv-$OPENCV_VERSION"

mkdir release
cd release
cmake -D BUILD_ZLIB=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D BUILD_PYTHON_SUPPORT=ON -D WITH_GTK=OFF ..

# Update $SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# to
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# (Add -O0 after CXX_FLAGS)
# This is necessary due to http://stackoverflow.com/a/14619427/1291812
sed -i'' -e
's:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp"'
"$SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make"

make -j16
make install


install_hdf5()
scratch_init hdf5

wget "http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.15-patch1.tar.gz"
untar_to_dir "hdf5-1.8.15-patch1.tar.gz" "hdf5-1.8.15"
cd hdf5-1.8.15

./configure --prefix="$LOCAL_INSTALL_DIR/hdf5-1.8.15"
make -j4
make install


install_libpng()
scratch_init libpng

wget "http://downloads.sourceforge.net/libpng/libpng-$LIBPNG_VERSION.tar.gz"
untar_to_dir "libpng-$LIBPNG_VERSION.tar.gz" "libpng-$LIBPNG_VERSION"
cd "libpng-$LIBPNG_VERSION"

LDFLAGS="-L$LOCAL_INSTALL_DIR/lib" ./configure --prefix="$LOCAL_INSTALL_DIR/libpng-$LIBPNG_VERSION"
make -j4
make install


install_automake()
scratch_init automake

wget "http://ftp.gnu.org/gnu/automake/automake-$AUTOMAKE_VERSION.tar.gz"
untar_to_dir "automake-$AUTOMAKE_VERSION.tar.gz" "automake-$AUTOMAKE_VERSION"
cd "automake-$AUTOMAKE_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/automake-$AUTOMAKE_VERSION"
make -j4
make install


install_freetype()
scratch_init freetype

wget "http://download.savannah.gnu.org/releases/freetype/freetype-$FREETYPE_VERSION.tar.gz"
untar_to_dir "freetype-$FREETYPE_VERSION.tar.gz" "freetype-$FREETYPE_VERSION"
cd "freetype-$FREETYPE_VERSION"

./autogen.sh
./configure --prefix="$LOCAL_INSTALL_DIR/freetype-$FREETYPE_VERSION"
make
make install


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_python2()
scratch_init python2

wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz
untar_to_dir "Python-$PYTHON_VERSION.tgz" "python-$PYTHON_VERSION"

cd "python-$PYTHON_VERSION"
./configure --prefix="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION" --enable-shared
make -j4
make altinstall


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_pip()
scratch_init pip2

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$PYTHON_BINARY get-pip.py


install_python_modules()
$PYTHON_BINARY -m pip install numpy
$PYTHON_BINARY -m pip install scipy
$PYTHON_BINARY -m pip install scikit-image
$PYTHON_BINARY -m pip install protobuf
$PYTHON_BINARY -m pip install pyyaml


# TODO: This does not install the python bindings, it seems... That is,
# import boost
# does not work in python.
install_boost()
scratch_init boost

wget "http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download" -O "boost_1_59_0.tar.gz"
untar_to_dir "boost_1_59_0.tar.gz" "boost_1_59_0"

cd boost_1_59_0
./bootstrap.sh --prefix="$LOCAL_INSTALL_DIR/boost-1.59.0" --with-python="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION/bin/python$PYTHON_SHORT_VERSION"
./b2 install


install_lmdb()
scratch_init lmdb

wget "https://github.com/dw/py-lmdb/archive/py-lmdb_$LMDB_VERSION.tar.gz"
untar_to_dir "py-lmdb_$LMDB_VERSION.tar.gz" "py-lmdb_$LMDB_VERSION"
cd "py-lmdb_$LMDB_VERSION"
$PYTHON_BINARY setup.py install

# Contains the actual LMDB sources?
scratch_init openldap
wget "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.42.tgz"
untar_to_dir "openldap-2.4.42.tgz" openldap-2.4.42
cd openldap-2.4.42/libraries/lmdb
make -j4
sed -i'' -e 's:(prefix.*=).*:1'$LOCAL_INSTALL_DIR':g' Makefile
make install


install_libtool()
scratch_init libtool

wget "http://ftpmirror.gnu.org/libtool/libtool-$LIBTOOL_VERSION.tar.gz"
untar_to_dir "libtool-$LIBTOOL_VERSION.tar.gz" "libtool-$LIBTOOL_VERSION"
cd libtool-$LIBTOOL_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/libtool-$LIBTOOL_VERSION"
make -j4
make install


install_snappy()
scratch_init snappy

wget "https://github.com/google/snappy/tarball/master" -O snappy.tar.gz
untar_to_dir "snappy.tar.gz" "libsnappy"
cd "libsnappy"

./autogen.sh
echo "AC_PROG_LIBTOOL" >>config.ac
./configure --prefix="$LOCAL_INSTALL_DIR/snappy"
make
make install
# The default autogen.sh does not handle compatibility well... This one,
# from the following PR: https://github.com/google/snappy/pull/4 is
# preferable.
#wget https://raw.githubusercontent.com/juanmaneo/snappy/49262984cddf3985fba7d1ceca6b14986f6dbef0/autogen.sh -O autogen.sh


install_leveldb()
scratch_init leveldb

wget "https://github.com/google/leveldb/archive/v$LEVELDB_VERSION.tar.gz"
untar_to_dir "v$LEVELDB_VERSION.tar.gz" "leveldb-$LEVELDB_VERSION"
cd "leveldb-$LEVELDB_VERSION"

LD_FLAGS="-L$LOCAL_INSTALL_DIR/lib" make -j4

# leveldb doesn't have a make install target...
# Instructions below taken from
# http://techoverflow.net/blog/2012/12/14/compiling-installing-leveldb-on-linux/
cp --preserve=links libleveldb.* $LOCAL_INSTALL_DIR/lib
cp -r include/leveldb $LOCAL_INSTALL_DIR/include/


install_openblas()
scratch_init openblas

wget "https://github.com/xianyi/OpenBLAS/archive/v$OPENBLAS_VERSION.tar.gz" -O "openblas_$OPENBLAS_VERSION.tar.gz"
untar_to_dir openblas_$OPENBLAS_VERSION.tar.gz openblas_$OPENBLAS_VERSION
cd openblas_$OPENBLAS_VERSION

make -j4
make PREFIX="$LOCAL_INSTALL_DIR" install

# OpenBLAS only installs libopenblas.a, but it provides the symbols for
# libcblas.a and libatlas.a (I think). Symlinking libatlas and libcblas
# allows Caffe to build.
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libcblas.a"
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libatlas.a"


install_caffe()
mkdir -p "$CAFFE_INSTALL_DIR"
cd "$CAFFE_INSTALL_DIR"

# wget https://github.com/BVLC/caffe/archive/rc2.tar.gz
# untar_to_dir rc2.tar.gz .
git clone https://github.com/yuzcccc/caffe.git
cp -a caffe/. .
rm -rf caffe

cp Makefile.config.example Makefile.config
echo "=== Compiling caffe ==="
CPU_ONLY=1
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make -j4

echo "=== Compiling caffe python bindings ==="
python_include_dir="$LOCAL_INSTALL_DIR/include/python$PYTHON_SHORT_VERSION"
numpy_include_dir="$LOCAL_INSTALL_DIR/lib/python$PYTHON_SHORT_VERSION/site-packages/numpy/core/include"

CPU_ONLY=1
CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:$python_include_dir:$numpy_include_dir"
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make pycaffe

echo "=== If that worked, congrats! One last note: ==="
echo "You'll need to update your PYTHONPATH in .bashrc/.zshrc as follows:"
echo 'export PYTHONPATH="'$CAFFE_INSTALL_DIR'/python:$PYTHONPATH"'


echo "=== Installing Protobufs ==="
install_protobuf
echo "=== Installing cmake ==="
install_cmake
echo "=== Installing gflags ==="
install_gflags
echo "=== Installing glog ==="
install_glog
echo "=== Installing opencv ==="
install_opencv
echo "=== Installing hdf5 ==="
install_hdf5
echo "=== Installing python2 ==="
install_python2
echo "=== Installing pip ==="
install_pip
echo "=== Installing libpng ==="
install_libpng
echo "=== Installing automake ==="
install_automake
echo "=== Installing freetype ==="
install_freetype
echo "=== Installing python modules ==="
install_python_modules
echo "=== Installing boost ==="
install_boost
echo "=== Installing lmdb ==="
install_lmdb
echo "=== Installing libtool ==="
install_libtool
echo "=== Installing snappy ==="
install_snappy
echo "=== Installing leveldb ==="
install_leveldb
echo "=== Installing openblas ==="
install_openblas

echo "=== The dependencies are installed! ==="
echo "You likely want to add the following lines to your .bashrc/.zshrc"
echo 'export LD_LIBRARY_PATH="'$LOCAL_INSTALL_DIR'/lib64:'$LOCAL_INSTALL_DIR'/lib:$LD_LIBRARY_PATH"'
echo 'export C_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$C_INCLUDE_PATH"'
echo 'export CPLUS_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$CPLUS_INCLUDE_PATH"'

echo "=== Once you've done that, you can run install_caffe by uncommenting below. ==="
install_caffe


I get following error, when I try to call sh install_caffe.sh.



=== Installing Protobufs ===
install_caffe.sh: line 379: install_protobuf: command not found



I am performing following steps before execution.



  1. dos2unix caffe_install.sh

  2. chmod +x caffe_install.sh






share|improve this question











I have a shell script which I am using to install caffe but when I execute that script using sh command, it shows command not found error for the function call. Code is below.



#!/bin/bash

# This script installs (or at least, attempts to install) Caffe in CPU mode
# with Python bindings without root permission. In doing so, it installs the
# following dependencies:
#
# * protobuf
# * cmake
# * gflags
# * glog
# * opencv
# * hdf5
# * python2
# * pip
# * libpng (recent version required for freetype)
# * automake (recent version required for freetype)
# * freetype (required for scikit-image)
# * various python modules
# - numpy
# - scipy
# - scikit-image
# - protobuf
# - yaml
# * boost
# * lmdb
# * libtool
# * snappy
# * leveldb
# * openblas

LOCAL_INSTALL_DIR="$HOME/local"
SCRATCH_DIR="$HOME/scratch_for_setup"
CAFFE_INSTALL_DIR="$HOME/caffe"

# Note that changing these versions may not work - it's a little fragile and
# depends on the URLs for these utilities to have the same template across
# versions (e.g. http://example.com/tool/tool_v$version_number). The URLs
# work with the versions listed as of the last committed version, but should
# be tested before updating and committing.
PROTOBUF_VERSION="2.6.1"
GFLAGS_VERSION="2.1.2"
GLOG_VERSION="0.3.4"
OPENCV_VERSION="2.4.11"
LMDB_VERSION="0.87"
PYTHON_VERSION="2.7.10" # Must be python2.*
LIBPNG_VERSION="1.6.18"
FREETYPE_VERSION="2.6.1"
LIBTOOL_VERSION="2.4.6"
AUTOMAKE_VERSION="1.15"
LEVELDB_VERSION="1.18"
OPENBLAS_VERSION="0.2.14"

# Hardcoded versions - these cannot be changed here.
# TODO: Allow changing the below values.
# BOOST_VERSION="1.59.0"
# HDF5_VERSION="1.8.15-patch1"
# CMAKE_VERSION="3.2.3"

# E.g. 2.7.10 -> python2.7
PYTHON_SHORT_VERSION="$(echo $PYTHON_VERSION | sed -e 's/([0-9]*.[0-9]*)(..*)?/1/g')"
PYTHON_BINARY="python$PYTHON_SHORT_VERSION"

# Exit on error.
set -e

# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
# Usage: untar_to_dir <tar_file> <output_directory>
# Untars to a specified directory, instead of using the "root" directory
# specified in the tar file. Useful for cd'ing.
untar_to_dir()
if [[ "$#" -ne 2 ]] ; then
echo "Improper number of arguments to untar_to_dir"
exit
fi

TAR_FILE="$1"
OUTPUT="$2"
mkdir -p "$OUTPUT"

tar xzvf "$TAR_FILE" -C "$OUTPUT" --strip-components=1


# Usage: scratch_init <utility_name>
scratch_init()
if [[ "$#" -ne 1 ]] ; then
echo "Improper number of arguments to scratch_init"
exit
fi

cd "$SCRATCH_DIR"
mkdir -p "$1"
cd "$1"


install_protobufs()
scratch_init protobuf

wget "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-$PROTOBUF_VERSION.tar.gz"
untar_to_dir "protobuf-$PROTOBUF_VERSION.tar.gz" protobuf-$PROTOBUF_VERSION
cd protobuf-$PROTOBUF_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/protobuf-$PROTOBUF_VERSION"
make -j4
make install


install_cmake()
scratch_init cmake

# Cmake has pre-built binaries ready, so we will just untar it in
# $LOCAL_INSTALL_DIR.
cd $LOCAL_INSTALL_DIR
wget "https://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.tar.gz"
untar_to_dir "cmake-3.2.3-Linux-x86_64.tar.gz" .

echo "You will need to add the following line to your .zshrc/.bashrc:"
echo 'export CMAKE_ROOT="'$LOCAL_INSTALL_DIR'/share/cmake-3.2"'


install_gflags()
scratch_init gflags

wget "https://github.com/gflags/gflags/archive/v$GFLAGS_VERSION.tar.gz"
untar_to_dir "v$GFLAGS_VERSION.tar.gz" "v$GFLAGS_VERSION"
cd "v$GFLAGS_VERSION"

mkdir build
cd build

cmake -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D CMAKE_POSITION_INDEPENDENT_CODE=ON ..
make
make install


install_glog()
scratch_init glog

wget "https://github.com/google/glog/archive/v$GLOG_VERSION.tar.gz"
untar_to_dir "v$GLOG_VERSION.tar.gz" "v$GLOG_VERSION"
cd "v$GLOG_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/glog-$GLOG_VERSION"
make
make install


install_opencv()
scratch_init opencv

wget "https://github.com/Itseez/opencv/archive/$OPENCV_VERSION.tar.gz" -O "opencv-$OPENCV_VERSION.tar.gz"
untar_to_dir "opencv-$OPENCV_VERSION.tar.gz" "opencv-$OPENCV_VERSION"
cd "opencv-$OPENCV_VERSION"

mkdir release
cd release
cmake -D BUILD_ZLIB=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" -D BUILD_PYTHON_SUPPORT=ON -D WITH_GTK=OFF ..

# Update $SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# to
# cd $SCRATCH_DIR/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c $SCRATCH_DIR/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp
# (Add -O0 after CXX_FLAGS)
# This is necessary due to http://stackoverflow.com/a/14619427/1291812
sed -i'' -e
's:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp:'$SCRATCH_DIR'/opencv/opencv-2.4.11/release/modules/features2d && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -O0 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o -c '$SCRATCH_DIR'/opencv/opencv-2.4.11/modules/features2d/src/freak.cpp"'
"$SCRATCH_DIR/opencv-2.4.11/release/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make"

make -j16
make install


install_hdf5()
scratch_init hdf5

wget "http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.15-patch1.tar.gz"
untar_to_dir "hdf5-1.8.15-patch1.tar.gz" "hdf5-1.8.15"
cd hdf5-1.8.15

./configure --prefix="$LOCAL_INSTALL_DIR/hdf5-1.8.15"
make -j4
make install


install_libpng()
scratch_init libpng

wget "http://downloads.sourceforge.net/libpng/libpng-$LIBPNG_VERSION.tar.gz"
untar_to_dir "libpng-$LIBPNG_VERSION.tar.gz" "libpng-$LIBPNG_VERSION"
cd "libpng-$LIBPNG_VERSION"

LDFLAGS="-L$LOCAL_INSTALL_DIR/lib" ./configure --prefix="$LOCAL_INSTALL_DIR/libpng-$LIBPNG_VERSION"
make -j4
make install


install_automake()
scratch_init automake

wget "http://ftp.gnu.org/gnu/automake/automake-$AUTOMAKE_VERSION.tar.gz"
untar_to_dir "automake-$AUTOMAKE_VERSION.tar.gz" "automake-$AUTOMAKE_VERSION"
cd "automake-$AUTOMAKE_VERSION"

./configure --prefix="$LOCAL_INSTALL_DIR/automake-$AUTOMAKE_VERSION"
make -j4
make install


install_freetype()
scratch_init freetype

wget "http://download.savannah.gnu.org/releases/freetype/freetype-$FREETYPE_VERSION.tar.gz"
untar_to_dir "freetype-$FREETYPE_VERSION.tar.gz" "freetype-$FREETYPE_VERSION"
cd "freetype-$FREETYPE_VERSION"

./autogen.sh
./configure --prefix="$LOCAL_INSTALL_DIR/freetype-$FREETYPE_VERSION"
make
make install


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_python2()
scratch_init python2

wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz
untar_to_dir "Python-$PYTHON_VERSION.tgz" "python-$PYTHON_VERSION"

cd "python-$PYTHON_VERSION"
./configure --prefix="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION" --enable-shared
make -j4
make altinstall


# Taken from
# https://github.com/achalddave/dotfiles/blob/master/misc/sudo-less-servers/install_utilities.sh
install_pip()
scratch_init pip2

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$PYTHON_BINARY get-pip.py


install_python_modules()
$PYTHON_BINARY -m pip install numpy
$PYTHON_BINARY -m pip install scipy
$PYTHON_BINARY -m pip install scikit-image
$PYTHON_BINARY -m pip install protobuf
$PYTHON_BINARY -m pip install pyyaml


# TODO: This does not install the python bindings, it seems... That is,
# import boost
# does not work in python.
install_boost()
scratch_init boost

wget "http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download" -O "boost_1_59_0.tar.gz"
untar_to_dir "boost_1_59_0.tar.gz" "boost_1_59_0"

cd boost_1_59_0
./bootstrap.sh --prefix="$LOCAL_INSTALL_DIR/boost-1.59.0" --with-python="$LOCAL_INSTALL_DIR/python-$PYTHON_VERSION/bin/python$PYTHON_SHORT_VERSION"
./b2 install


install_lmdb()
scratch_init lmdb

wget "https://github.com/dw/py-lmdb/archive/py-lmdb_$LMDB_VERSION.tar.gz"
untar_to_dir "py-lmdb_$LMDB_VERSION.tar.gz" "py-lmdb_$LMDB_VERSION"
cd "py-lmdb_$LMDB_VERSION"
$PYTHON_BINARY setup.py install

# Contains the actual LMDB sources?
scratch_init openldap
wget "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.42.tgz"
untar_to_dir "openldap-2.4.42.tgz" openldap-2.4.42
cd openldap-2.4.42/libraries/lmdb
make -j4
sed -i'' -e 's:(prefix.*=).*:1'$LOCAL_INSTALL_DIR':g' Makefile
make install


install_libtool()
scratch_init libtool

wget "http://ftpmirror.gnu.org/libtool/libtool-$LIBTOOL_VERSION.tar.gz"
untar_to_dir "libtool-$LIBTOOL_VERSION.tar.gz" "libtool-$LIBTOOL_VERSION"
cd libtool-$LIBTOOL_VERSION

./configure --prefix="$LOCAL_INSTALL_DIR/libtool-$LIBTOOL_VERSION"
make -j4
make install


install_snappy()
scratch_init snappy

wget "https://github.com/google/snappy/tarball/master" -O snappy.tar.gz
untar_to_dir "snappy.tar.gz" "libsnappy"
cd "libsnappy"

./autogen.sh
echo "AC_PROG_LIBTOOL" >>config.ac
./configure --prefix="$LOCAL_INSTALL_DIR/snappy"
make
make install
# The default autogen.sh does not handle compatibility well... This one,
# from the following PR: https://github.com/google/snappy/pull/4 is
# preferable.
#wget https://raw.githubusercontent.com/juanmaneo/snappy/49262984cddf3985fba7d1ceca6b14986f6dbef0/autogen.sh -O autogen.sh


install_leveldb()
scratch_init leveldb

wget "https://github.com/google/leveldb/archive/v$LEVELDB_VERSION.tar.gz"
untar_to_dir "v$LEVELDB_VERSION.tar.gz" "leveldb-$LEVELDB_VERSION"
cd "leveldb-$LEVELDB_VERSION"

LD_FLAGS="-L$LOCAL_INSTALL_DIR/lib" make -j4

# leveldb doesn't have a make install target...
# Instructions below taken from
# http://techoverflow.net/blog/2012/12/14/compiling-installing-leveldb-on-linux/
cp --preserve=links libleveldb.* $LOCAL_INSTALL_DIR/lib
cp -r include/leveldb $LOCAL_INSTALL_DIR/include/


install_openblas()
scratch_init openblas

wget "https://github.com/xianyi/OpenBLAS/archive/v$OPENBLAS_VERSION.tar.gz" -O "openblas_$OPENBLAS_VERSION.tar.gz"
untar_to_dir openblas_$OPENBLAS_VERSION.tar.gz openblas_$OPENBLAS_VERSION
cd openblas_$OPENBLAS_VERSION

make -j4
make PREFIX="$LOCAL_INSTALL_DIR" install

# OpenBLAS only installs libopenblas.a, but it provides the symbols for
# libcblas.a and libatlas.a (I think). Symlinking libatlas and libcblas
# allows Caffe to build.
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libcblas.a"
ln -s "$LOCAL_INSTALL_DIR/lib/libopenblas.a" "$LOCAL_INSTALL_DIR/lib/libatlas.a"


install_caffe()
mkdir -p "$CAFFE_INSTALL_DIR"
cd "$CAFFE_INSTALL_DIR"

# wget https://github.com/BVLC/caffe/archive/rc2.tar.gz
# untar_to_dir rc2.tar.gz .
git clone https://github.com/yuzcccc/caffe.git
cp -a caffe/. .
rm -rf caffe

cp Makefile.config.example Makefile.config
echo "=== Compiling caffe ==="
CPU_ONLY=1
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make -j4

echo "=== Compiling caffe python bindings ==="
python_include_dir="$LOCAL_INSTALL_DIR/include/python$PYTHON_SHORT_VERSION"
numpy_include_dir="$LOCAL_INSTALL_DIR/lib/python$PYTHON_SHORT_VERSION/site-packages/numpy/core/include"

CPU_ONLY=1
CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:$python_include_dir:$numpy_include_dir"
LDFLAGS="-L$LOCAL_INSTALL_DIR/lib"
make pycaffe

echo "=== If that worked, congrats! One last note: ==="
echo "You'll need to update your PYTHONPATH in .bashrc/.zshrc as follows:"
echo 'export PYTHONPATH="'$CAFFE_INSTALL_DIR'/python:$PYTHONPATH"'


echo "=== Installing Protobufs ==="
install_protobuf
echo "=== Installing cmake ==="
install_cmake
echo "=== Installing gflags ==="
install_gflags
echo "=== Installing glog ==="
install_glog
echo "=== Installing opencv ==="
install_opencv
echo "=== Installing hdf5 ==="
install_hdf5
echo "=== Installing python2 ==="
install_python2
echo "=== Installing pip ==="
install_pip
echo "=== Installing libpng ==="
install_libpng
echo "=== Installing automake ==="
install_automake
echo "=== Installing freetype ==="
install_freetype
echo "=== Installing python modules ==="
install_python_modules
echo "=== Installing boost ==="
install_boost
echo "=== Installing lmdb ==="
install_lmdb
echo "=== Installing libtool ==="
install_libtool
echo "=== Installing snappy ==="
install_snappy
echo "=== Installing leveldb ==="
install_leveldb
echo "=== Installing openblas ==="
install_openblas

echo "=== The dependencies are installed! ==="
echo "You likely want to add the following lines to your .bashrc/.zshrc"
echo 'export LD_LIBRARY_PATH="'$LOCAL_INSTALL_DIR'/lib64:'$LOCAL_INSTALL_DIR'/lib:$LD_LIBRARY_PATH"'
echo 'export C_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$C_INCLUDE_PATH"'
echo 'export CPLUS_INCLUDE_PATH="'$LOCAL_INSTALL_DIR'/include:$CPLUS_INCLUDE_PATH"'

echo "=== Once you've done that, you can run install_caffe by uncommenting below. ==="
install_caffe


I get following error, when I try to call sh install_caffe.sh.



=== Installing Protobufs ===
install_caffe.sh: line 379: install_protobuf: command not found



I am performing following steps before execution.



  1. dos2unix caffe_install.sh

  2. chmod +x caffe_install.sh








share|improve this question










share|improve this question




share|improve this question









asked May 17 at 14:14









adeelz92

32




32




closed as off-topic by ilkkachu, vonbrand, X Tian, Archemar, sourcejedi May 18 at 9:48


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – ilkkachu, vonbrand, X Tian, Archemar, sourcejedi
If this question can be reworded to fit the rules in the help center, please edit the question.




closed as off-topic by ilkkachu, vonbrand, X Tian, Archemar, sourcejedi May 18 at 9:48


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – ilkkachu, vonbrand, X Tian, Archemar, sourcejedi
If this question can be reworded to fit the rules in the help center, please edit the question.











  • function is defined as protobufs (with a trailing s), and command is called with protobuf (no trailling s). (I'll VTC anyway)
    – Archemar
    May 18 at 9:10
















  • function is defined as protobufs (with a trailing s), and command is called with protobuf (no trailling s). (I'll VTC anyway)
    – Archemar
    May 18 at 9:10















function is defined as protobufs (with a trailing s), and command is called with protobuf (no trailling s). (I'll VTC anyway)
– Archemar
May 18 at 9:10




function is defined as protobufs (with a trailing s), and command is called with protobuf (no trailling s). (I'll VTC anyway)
– Archemar
May 18 at 9:10










1 Answer
1






active

oldest

votes

















up vote
2
down vote



accepted










This is a bash script. It should not be run with sh. Run it with bash instead, or make it executable and invoke it directly.



Also, the function is called install_protobufs, not install_protobuf.






share|improve this answer




























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    2
    down vote



    accepted










    This is a bash script. It should not be run with sh. Run it with bash instead, or make it executable and invoke it directly.



    Also, the function is called install_protobufs, not install_protobuf.






    share|improve this answer

























      up vote
      2
      down vote



      accepted










      This is a bash script. It should not be run with sh. Run it with bash instead, or make it executable and invoke it directly.



      Also, the function is called install_protobufs, not install_protobuf.






      share|improve this answer























        up vote
        2
        down vote



        accepted







        up vote
        2
        down vote



        accepted






        This is a bash script. It should not be run with sh. Run it with bash instead, or make it executable and invoke it directly.



        Also, the function is called install_protobufs, not install_protobuf.






        share|improve this answer













        This is a bash script. It should not be run with sh. Run it with bash instead, or make it executable and invoke it directly.



        Also, the function is called install_protobufs, not install_protobuf.







        share|improve this answer













        share|improve this answer



        share|improve this answer











        answered May 17 at 14:16









        Kusalananda

        102k13199314




        102k13199314












            Popular posts from this blog

            How to check contact read email or not when send email to Individual?

            Christian Cage

            How to properly install USB display driver for Fresco Logic FL2000DX on Ubuntu?