Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
install mosh locally
#!/bin/sh
# this script does absolutely ZERO error checking. however, it worked
# for me on a RHEL 6.3 machine on 2012-08-08. clearly, the version numbers
# and/or URLs should be made variables. cheers, zmil...@cs.wisc.edu
mkdir mosh
cd mosh
ROOT=`pwd`
echo "==================================="
echo "about to set up everything in $ROOT"
echo "==================================="
mkdir build
mkdir install
cd build
curl -O http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
curl -O http://cloud.github.com/downloads/keithw/mosh/mosh-1.2.2.tar.gz
tar zxvf protobuf-2.4.1.tar.gz
tar zxvf mosh-1.2.2.tar.gz
echo "================="
echo "building protobuf"
echo "================="
cd $ROOT/build/protobuf-2.4.1
./configure --prefix=$HOME/local --disable-shared
make install
echo "============="
echo "building mosh"
echo "============="
cd $ROOT/build/mosh-1.2.2
export PROTOC=$HOME/local/bin/protoc
export protobuf_CFLAGS=-I$HOME/local/include
export protobuf_LIBS=$HOME/local/lib/libprotobuf.a
./configure --prefix=$HOME/local
make install
echo "==="
echo "if all was successful, binaries are now in $ROOT/install/mosh/bin"
echo "==="
@paulirish

This comment has been minimized.

Copy link

@paulirish paulirish commented Dec 13, 2015

Current URLs

troubleshooting

I was getting this error:

/usr/bin/ld: /home/me/local/lib/libprotobuf.a(common.o): relocation R_X86_64_32S against `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage' can not be used when making a shared object; recompile with -fPIC

I ended up solving it with:

# before compiling protobuf. 
export CXXFLAGS="$CXXFLAGS -fPIC"

# And then I adjusted line 43 to link the `.so` instead of the `.a`:
export protobuf_LIBS=$HOME/local/lib/libprotobuf.so

later, turns out my binaries (mosh, mosh-client, mosh-server, protoc) were installed into $HOME/local/bin/

and I had to both add that to the PATH, and manually tell my client where to find the server binaries it with the --server option

@jzhan039

This comment has been minimized.

Copy link

@jzhan039 jzhan039 commented Apr 10, 2017

@paulirish I was getting the same error. And I installed it by following your suggestion. However, when I run 'mosh', I had another error, 'Bareword "AI_NUMERICHOST" not allowed while "strict subs" in use at ~/mosh/bin/mosh line 489'. Any idea how to solve this problem?

@erkkel

This comment has been minimized.

Copy link

@erkkel erkkel commented Aug 29, 2017

This following code worked for me. I applied the export CXXFLAGS="$CXXFLAGS -fPIC" as paulirish mentioned. However, I used libprotobuf.a instead of libprotobuf.so because I got weird errors whenever I tried to use libprotobuf.so. If you still can't use mosh after running the following code, try using the --server option in mosh.

mkdir mosh
cd mosh

ROOT=`pwd`

echo "==================================="
echo "about to set up everything in $ROOT"
echo "==================================="

mkdir build
mkdir install

cd build
curl -O https://codeload.github.com/google/protobuf/tar.gz/v3.4.0
curl -O https://mosh.org/mosh-1.3.2.tar.gz
tar zxvf v3.4.0
tar zxvf mosh-1.3.2.tar.gz

echo "================="
echo "building protobuf"
echo "================="


cd $ROOT/build/protobuf-3.4.0
export CXXFLAGS="$CXXFLAGS -fPIC"
./autogen.sh
./configure --prefix=$HOME/local --disable-shared
make install


echo "=============" 
echo "building mosh"
echo "============="

cd $ROOT/build/mosh-1.3.2
export PROTOC=$HOME/local/bin/protoc
export protobuf_CFLAGS=-I$HOME/local/include
export protobuf_LIBS=$HOME/local/lib/libprotobuf.a
./autogen.sh
./configure --prefix=$HOME/local
make install

echo "==="
echo "if all was successful, binaries are now in $ROOT/install/mosh/bin"
echo "==="
@edsq

This comment has been minimized.

Copy link

@edsq edsq commented Jun 28, 2018

@jzhan039 I'm having the same issue. Did you ever solve it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.