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?

            Displaying single band from multi-band raster using QGIS

            How many registers does an x86_64 CPU actually have?