I want to install tmux on a machine where I don't have root access. I already compiled libevent and installed it in $HOME/.bin-libevent and now I want to compile tmux, but configure always ends with configure: error: "libevent not found", even though I tried to point to the libevent directory in the Makefile.am by modifying LDFLAGS and CPPFLAGS, but nothing seems to work.

How can I tell the system to look in my home dir for the libevent?

  • An alternative is to investigate dtach. Handy when you want detachable sessions, but don't have root and don't have time to statically compile tmux. – Sonia Hamilton Mar 22 '16 at 11:36
  • If you are on RHEL 6.x, there is a pre-compiled tmux in the repos. – Chili Aug 25 '17 at 13:57
up vote 57 down vote accepted

Try:

DIR="$HOME/.bin-libevent"
./configure CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib"

(I'm sure there must be a better way to configure library paths with autoconf. Usually there is a --with-libevent=dir option. But here, it seems there is no such option.)

  • 4
    This is the approach that made make finally work. I tried setting other environment variables and setting prefix and exec-prefix, but once I included these flags stuff actually got built. – wizonesolutions Jan 10 '13 at 16:34
  • How would I go about specifying multiple directories for the flags? I tried ./configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir" but no success – lucaswxp Aug 22 '15 at 19:12
  • 1
    @lucaswxp CFLAGS="-Idir1 -Idir2 -Idir3" LDFLAGS="-Ldira -Ldirb -Ldirb" – Kusalananda Jul 29 '16 at 8:28
  • I used this answer and the libevent not found error went away, but now I get the same with ncurses: curses not found. My libevent as well as ncurses installations are both in $HOME/.local/ – Aalok Jul 27 at 17:28

I was having a similar problem and discovered that after running sudo yum install libevent-devel I was able to successfully make and install tmux.

EDIT: If you are installing this on a Red Hat machine, you will also need to visit the channels selection for your server on the Red Hat Network and add the RHEL Server Optional channel. This will give you access to the -devel packages for libevent (the base and supplementary channels do not provide it).

  • 3
    This would be the normal way to fix it, but in this case it was "a machine where I don't have root access" – Michael Mrozek Nov 28 '12 at 15:21
  • This helped me. I wasn't root and I hadn't installed the devel lib. – polym Jul 13 '14 at 9:23
  • where do you get the devel lib as a tar file? – arrowill12 Nov 4 '14 at 18:18
  • for my fedora machine, I also required to sudo yum install ncurses-devel besides sudo yum install libevent-devel – Mustakimur Rahman Sep 1 '16 at 1:36

I had the same issue on RHEL 5.4 and actually found libevent is installed but there is no libevent.so symlink, only the real version of the library:

/usr/lib64/libevent-1.1a.so.1
/usr/lib64/libevent-1.1a.so.1.0.2

So, ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.so works pretty well for me without the need to install or alter anything. No idea why RedHat's libevent rpm didn't create the symlink. Maybe a bug to report?

But now, it's complaining for this: error: event.h: No such file or directory.

  • I got the same exact error: error: event.h: No such file or directory. – gkb0986 Aug 7 '13 at 18:00
  • I'm on RHEL 6, and I just downloaded and compiled libevent, installing it to a user folder. Then I used @Stéphane Gimenez's trick above to get it compiling. To get it running, I aliases with the LD_PRELOAD trick given by @rozcietrzewiacz: tmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux'. Works like a charm! – csl Dec 4 '14 at 15:00
  • If you find yourself messing around with symlinks or manually copying things around in system directories, then there is a better way of doing it. – Kusalananda Jul 29 '16 at 8:30

Before the configuration and compilation of tmux (or any program) you need to tell it where it can find the libraries it needs. If you have installed some library in a non-standard location, you can use the environmental variable LD_LIBRARY_PRELOAD to tell, where some libraries are located.

I your case:

$ export LD_LIBRARY_PRELOAD=$HOME/.bin-libevent/lib

And then go on with the configuration/compilation.

Later on, the binary will also need to know where your additional libraries can be found, so you'll need to place the export statement in your .bashrc (if bash is your login shell).

  • Thanks, but sadly this doesn't work, same error message. The version number is libevent-2.0.12 which should work – volker Aug 2 '11 at 17:22
  • Then it seems there is a problem with your libevent compilation. What does find .bin-libevent -name 'libevent.so*' show? – rozcietrzewiacz Aug 2 '11 at 17:42
  • $ find .bin-libevent -name 'libevent.so*' finds .bin-libevent/lib/libevent.so – volker Aug 2 '11 at 17:47
  • :) Then you should point at the directory $HOME/.bin-libevent/lib (updated the answer) – rozcietrzewiacz Aug 2 '11 at 17:48
  • Yes, I am afraid I already tried that as well, still no change. I am quite puzzled and frustrated. – volker Aug 2 '11 at 17:59

I have the same problem and it seems the most upvoted answer didn't work for me. I am using Fedora 22 Workstation. Here is what I did to fix this: 1. Install libevent-devel package. 2. Install ncurses-devel package

$ dnf install libevent-devel`
$ dnf install ncurses-devel

First one will solve no event.h problem and second will solve cannot find curses problem. BTW, the softlink method above also works for me during ./configure.

  • Not sure why it got downvoted. It fixed the issue for me on a CentOS system. – Dharmit Oct 4 '16 at 6:51

There's a gist at https://gist.github.com/ryin/3106801:

#!/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."

On CentOS 6, compile and install libevent in /opt/libevent directory with the command:

# ./configure --prefix=/opt/libevent
# make
# make install

Then, install my aplication (in this case was PgBouncer)

# ./configure --prefix=/opt/ *--with-libevent=/opt/libevent/*

You can change the directories wherever you want.

protected by Community Aug 25 '17 at 14:25

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.