… only a few troubles to get it to build on Ubuntu 10.04 LTS 😉
Basically you’ll want libevent2
, which doesn’t come in the package repos, so fetch it from here. Then you obviously fetch the tmux
source via tmux.sourceforge.net and then it’s easy (until you try to run the resulting binary 😉 ).
Assume you have the two files in a sub folder of your home folder, called tmux
.
$ ls libevent-2.0.21-stable.tar.gz tmux-1.7.tar.gz $ tar -xzf tmux-1.7.tar.gz && tar -xzf libevent-2.0.21-stable.tar.gz $ ( cd libevent-2.0.21-stable/ && ./configure && make && sudo make install ) # loads of output ... $ ( cd tmux-1.7/ && ./configure && make && sudo make install ) # loads of output ...
Now you’ll notice the man
page is installed properly, but trying to run tmux
fails like this:
$ tmux tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
Why is that?
$ locate libevent-2.0.so.5 /home/oliver/libevent-2.0.21-stable/.libs/libevent-2.0.so.5 /home/oliver/libevent-2.0.21-stable/.libs/libevent-2.0.so.5.1.9 /usr/local/lib/libevent-2.0.so.5 /usr/local/lib/libevent-2.0.so.5.1.9
So the files are there, why does tmux
not find them? The most likely reason is that ld.so
, the dynamic loader, doesn’t know where to look for it. So let’s check:
$ grep -R local /etc/ld.so.conf* /etc/ld.so.conf.d/libc.conf:/usr/local/lib
So it does know about the folder. And it certainly should be able to find the correct file. No conflicts about the bitness used for either one either:
$ file $(readlink -f /usr/local/lib/libevent-2.0.so.5) /usr/local/lib/libevent-2.0.so.5.1.9: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped file $(which tmux) /usr/local/bin/tmux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
I’m still puzzled about why I can explicitly tell the dynamic loader to look in /usr/local/lib
via LD_LIBRARY_PATH
but it ignores the default setting in /etc/ld.so.conf.d/libc.conf
. However, the workaround to get it to run was for me:
$ LD_LIBRARY_PATH=/usr/local/lib tmux
My final solution, however, is to statically link tmux
using the following ./configure
line and make
to build a tmux
binary:
$ ( cd tmux-1.7/ && CC='gcc -static' ./configure --enable-static && make && sudo make install )
That does the job.
// Oliver
Thank You Oliver!
Any thoughts on tmux-powerline — the customization/theming of the tmux statusbar? ❓
I looked at it, but I prefer my own frugal version instead:
https://vcs.assarbad.net/mercurial/bashrc/file/tip/.tmux.conf
Odd, I thought they even didn’t have a fully-automated version back in the years of the cold war.