… 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
$ 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
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
$ ( cd tmux-1.7/ && CC='gcc -static' ./configure --enable-static && make && sudo make install )
That does the job.