Skip to content

Instantly share code, notes, and snippets.

@shime
Forked from ryin/tmux_local_install.sh
Last active November 8, 2020 08:54
Show Gist options
  • Save shime/5706655 to your computer and use it in GitHub Desktop.
Save shime/5706655 to your computer and use it in GitHub Desktop.
installation script for tmux 1.9a

Having trouble installing the latest stable version of tmux?

I know, official package for your OS/distro is outdated and you just want the newest version of tmux.

Well, this script should save you some time with that.

Prerequisities

  • gcc
  • wget

Installs

  • tmux - 1.9a (latest stable)
  • libevent - 2.0.21 (latest stable)
  • ncurses - 5.9 (latest stable)

How to install

First of all, you should give me super user permissions, because this will install tmux to /usr/local/lib by default. Trust me, I'm a random guy from the interwebz.

Hit

curl -fsSL https://gist.github.com/shime/5706655/raw/install.sh | sudo bash -e
#!/bin/bash
# Script for installing tmux and dependencies.
# tmux will be installed in /usr/local/lib by default.
# Prerequisites: - gcc
# - wget
# define versions
tmux_version="1.9"
tmux_patch_version="a" # leave empty for stable releases
libevent_version="2.0.21"
ncurses_version="5.9"
tmux_name="tmux-$tmux_version"
tmux_relative_url="$tmux_name/$tmux_name$tmux_patch_version"
libevent_name="libevent-$libevent_version-stable"
ncurses_name="ncurses-$ncurses_version"
# set the installation directory
target_dir="/usr/local"
# download source files for tmux, libevent, and ncurses
# save them in /tmp
cd /tmp
wget -O $tmux_name.tar.gz http://sourceforge.net/projects/tmux/files/tmux/$tmux_relative_url.tar.gz/download
wget -O $libevent_name.tar.gz https://github.com/downloads/libevent/libevent/$libevent_name.tar.gz
wget -O $ncurses_name.tar.gz ftp://ftp.gnu.org/gnu/ncurses/$ncurses_name.tar.gz
# extract files, configure, and compile
# libevent installation
tar xvzf $libevent_name.tar.gz
cd $libevent_name
./configure --prefix=$target_dir --disable-shared
make
make install
cd -
# ncurses installation
tar xvzf $ncurses_name.tar.gz
cd $ncurses_name
./configure --prefix=$target_dir
make
make install
cd -
# tmux installation
tar xvzf ${tmux_name}*.tar.gz
cd ${tmux_name}*/
./configure CFLAGS="-I$target_dir/include -I$target_dir/include/ncurses" LDFLAGS="-L$target_dir/lib -L$target_dir/include/ncurses -L$target_dir/include"
CPPFLAGS="-I$target_dir/include -I$target_dir/include/ncurses" LDFLAGS="-static -L$target_dir/include -L$target_dir/include/ncurses -L$target_dir/lib" make
cp tmux $target_dir/bin
cd -
version=`tmux -V | cut -d ' ' -f 2`
if [ -z "$version" ]; then
echo
echo "[error] failed to install tmux - check for errors in the above output"
exit 1
fi
@liuml07
Copy link

liuml07 commented Jul 1, 2013

cool!

@mikaelz
Copy link

mikaelz commented Aug 28, 2013

Trying to compile on a shared hosting in my $HOME but without success :P
libevent is compiled and in $HOME/local

CFLAGS="-I$HOME/local/include" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include" LIBEVENT_CFLAGS="-I$HOME/local/include" LIBEVENT_LIBS="-L$HOME/local/lib" LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/local/lib" ./configure --prefix=$HOME/local

LDFLAGS="-static -L$HOME/local/lib -L$HOME/local/include -L$HOME/local/include" CPPFLAGS="-I$HOME/local/include" LIBEVENT_CFLAGS="-I$HOME/local/include" LIBEVENT_LIBS="-L$HOME/local/lib" make

I found https://gist.github.com/536325/91f1392f1ecf46bed893ce5dd882d6018e95e22b and
tried also setting LD_LIBRARY_PATH and LD_RUN_PATH
export LD_LIBRARY_PATH="$HOME/local/lib"
export LD_RUN_PATH="$HOME/local/lib"

@kfatehi
Copy link

kfatehi commented Jul 30, 2014

not just fancy --- necessary! thank you

@robbyoconnor
Copy link

You sir, are amazing.

@mdmcaus
Copy link

mdmcaus commented Sep 4, 2014

FYI - libevent didn't download properly for me. I'm on Ubuntu 10.04 and had to install it manually because tmux threw an error when running 'make' as shown here:

http://jtskarbek.wordpress.com/2013/03/22/tmux-compile-failure/

Once I downloaded it separately and installed it, everything else worked fine.

@michaelsbradleyjr
Copy link

Your script doesn't seem to build the man page for tmux. What's the proper way to augment it so that it is built?

@Integralist
Copy link

The simplest solution is...

add-apt-repository ppa:pi-rho/dev
apt-get update
apt-get install tmux-y

@shime
Copy link
Author

shime commented Sep 29, 2014

@michaelsbradleyjr man pages are left out because we're not using package manager here. fork away and add support for man pages :)
@Integralist yes if your package manager is aptitude
@mdmcaus I don't know what happened, but link for libevent is correct

@liuyuan10
Copy link

Works on my Ubuntu 14.04. Thanks!

@billiegoose
Copy link

Thanks!!

Note to others - I recommend closing any existing tmux sessions before launching the new tmux. I didn't, and not sure what happened but I was forced to do a hard reboot. :)

@limingjie
Copy link

Thank you! Saved me a lot of time!

@felippenardi
Copy link

@shime Can you update it to tmux 2.0?

@ganiszulfa
Copy link

if after running this script your tmux is 'still' not upgraded, try

/usr/local/bin/tmux -V

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment