-
-
Save ryin/3106801 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# Script for installing tmux on systems where you don't have root access. | |
# tmux will be installed in $HOME/local/bin. | |
# It's assumed that wget and a C/C++ compiler are installed. | |
# exit on error | |
set -e | |
TMUX_VERSION=1.8 | |
# create our directories | |
mkdir -p $HOME/local $HOME/tmux_tmp | |
cd $HOME/tmux_tmp | |
# download source files for tmux, libevent, and ncurses | |
wget -O tmux-${TMUX_VERSION}.tar.gz http://sourceforge.net/projects/tmux/files/tmux/tmux-${TMUX_VERSION}/tmux-${TMUX_VERSION}.tar.gz/download | |
wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz | |
wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz | |
# extract files, configure, and compile | |
############ | |
# libevent # | |
############ | |
tar xvzf libevent-2.0.19-stable.tar.gz | |
cd libevent-2.0.19-stable | |
./configure --prefix=$HOME/local --disable-shared | |
make | |
make install | |
cd .. | |
############ | |
# ncurses # | |
############ | |
tar xvzf ncurses-5.9.tar.gz | |
cd ncurses-5.9 | |
./configure --prefix=$HOME/local | |
make | |
make install | |
cd .. | |
############ | |
# tmux # | |
############ | |
tar xvzf tmux-${TMUX_VERSION}.tar.gz | |
cd tmux-${TMUX_VERSION} | |
./configure CFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include/ncurses -L$HOME/local/include" | |
CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/include/ncurses -L$HOME/local/lib" make | |
cp tmux $HOME/local/bin | |
cd .. | |
# cleanup | |
rm -rf $HOME/tmux_tmp | |
echo "$HOME/local/bin/tmux is now available. You can optionally add $HOME/local/bin to your PATH." |
Thank you so much!
For anyone looking to do this for Windows. Installing Tmux in Git Bash for instance without admin privileges.
You can grab the file from https://packages.msys2.org/package/tmux?repo=msys&variant=x86_64 and it contains tmux.exe
along with appendices.
https://github.com/msys2/MSYS2-packages/blob/master/tmux/PKGBUILD is how they build it.
Wow this is an older version of my build script, I will have to look through the commits for suggestions
https://github.com/nodswal/tmux-install
@StevenShi-23 script is breaking in
CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/include/ncurses -L$HOME/local/lib" make
with
make: *** No rule to make target 'compat/forkpty-linux.c', needed by 'compat/forkpty-linux.o'. Stop.
I am using CentOS 6.10. Any ideas?
Any solution to this? I know CentOS6.10 is ancient but that is the version @StevenShi-23 and I are using. Is this only a problem on older distros? tmux refuses to to continue to compile with this error:
$ ./configure CFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include/ncurses -L$HOME/local/include" CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/include/ncurses -L$HOME/local/lib"
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/dh016d/tmux/packages_downloaded/tmux-2.2':
configure: error: C compiler cannot create executables
See `config.log' for more details
I can get past it if I just run
./configure CFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses -I$HOME/local/include/event2" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include/ncurses -L$HOME/local/include -L$HOME/local/include/event2" CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses -I$HOME/local/include/event2"
However after I make
tmux throws this error:
$tmux -V
./tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
$ldd ./tmux
linux-vdso.so.1 => (0x00007ffca26e0000)
libutil.so.1 => /lib64/libutil.so.1 (0x0000003b71e00000)
libevent-2.0.so.5 => not found
librt.so.1 => /lib64/librt.so.1 (0x0000003b68600000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003b69200000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b67600000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b67e00000)
/lib64/ld-linux-x86-64.so.2 (0x0000561f0752f000)
configure refuses to link the library for libevent, I cant figure out why. Anyone know?
EDIT: Got it working, followed this post here.
Steps to fix. Do not compile the way the script as above, do the following after you untar tmux and go into the directory.
export DIR="$HOME/local"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIR/lib
./configure --prefix=$DIR CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib"
make
make install
One more note, all the posts about using autogen.sh
, that did not work for me because aclocal was not installed. To avoid having to install autogen and autoconf I just downloaded the release version from here
https://github.com/tmux/tmux/releases/download/2.2/tmux-2.2.tar.gz
Change the version to what you want, like this. The configure script should be inside so you dont need to use autogen
https://github.com/tmux/tmux/releases/download/2.8/tmux-2.8.tar.gz
Note: The latest version of tmux (3.0a) is distributed as an Appimage. So you can simply download the Appimage and either:
tmux.Appimage
directly) or