Intentar instalar tmux en CentOS 6.x falla con el error: 'EVBUFFER_EOL_LF' no declarado

11

Intenté compilar tmux usando los siguientes pasos:

yum -y install ncurses-devel libevent-devel
wget http://downloads.sourceforge.net/tmux/tmux-1.9a.tar.gz
tar -xvzf tmux-1.9a.tar.gz
cd tmux-1.9a
./configure
make

El makecomando falló con el siguiente error:

control.c:64:47: error: ‘EVBUFFER_EOL_LF’ undeclared (first use in this function)

Aquí están los detalles de los paquetes ncurses-devel y libevent-devel instalados.

[root@rigel ~]# yum info ncurses-devel.x86_64 libevent-devel.x86_64
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: centosmirror.go4hosting.in
Installed Packages
Name        : libevent-devel
Arch        : x86_64
Version     : 1.4.13
Release     : 4.el6
Size        : 421 k
Repo        : installed
From repo   : base
Summary     : Header files, libraries and development documentation for libevent
URL         : http://monkey.org/~provos/libevent/
License     : BSD
Description : This package contains the static libraries documentation for libevent.
            : If you like to develop programs using libevent, you will need
            : to install libevent-devel.

Name        : ncurses-devel
Arch        : x86_64
Version     : 5.7
Release     : 3.20090208.el6
Size        : 1.7 M
Repo        : installed
From repo   : base
Summary     : Development files for the ncurses library
URL         : http://invisible-island.net/ncurses/ncurses.html
License     : MIT
Description : The header files and libraries for developing applications that use
            : the ncurses terminal handling library.
            :
            : Install the ncurses-devel package if you want to develop applications
            : which will use ncurses.

¿Cuál es la forma correcta de instalar tmux en CentOS 6.x?

Susam Pal
fuente

Respuestas:

17

El problema ocurre porque yum instala la versión libevent 1.4 mientras que tmux 1.9 requiere la versión libevent 2.0. La solución es instalar libevent versión 2.0 desde la fuente.

Aquí está el conjunto completo de comandos para instalar tmux desde cero.

yum -y install ncurses-devel

wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar -xvzf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure
make -j 4
make install
cd ..

wget https://github.com/tmux/tmux/releases/download/2.1/tmux-2.1.tar.gz
tar -xvzf tmux-2.1.tar.gz
cd tmux-2.1
./configure LDFLAGS="-Wl,-rpath,/usr/local/lib"
make -j 4
make install

Hay tres bloques de comandos aquí.

  1. El comando yum instala el paquete ncurses-devel (si aún no está presente) requerido para compilar tmux.
  2. Luego compilamos la versión libevent 2.0 de la fuente y la instalamos.
  3. Luego compilamos la versión 2.1 de tmux desde la fuente y la instalamos. Al hacerlo, nos aseguramos de que enlace a tmux libevent que hemos instalado en / usr / local / lib locales, de otro modo obtener este error: tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory.

Finalmente, ejecute el tmuxcomando para iniciar tmux.

Susam Pal
fuente
66
la configuración de tmux también acepta esto: export LIBEVENT_CFLAGS = "- I / usr / local / include" export LIBEVENT_LIBS = "- L / usr / local / lib -Wl, -rpath = / usr / local / lib -levent" El rpath impedirá el cambio LD_LIBRAY_PATH que es más conveniente para otros usuarios en su sistema.
Ajith Antony
Nota para los Googlers: también he usado con éxito esto en un Centos 5 antiguo.
Tyr
7

Instalar libevent 2 -devel instantáneo de libevent-devel

en mi máquina de 64 bits:

yum install libevent2-devel.x86_64

Si ya tiene instalado libevent-devel, desinstálelo primero.

kijeong
fuente
1

Configure y comience a trabajar después de ejecutar:

sudo yum erase libevent-devel

sudo yum install libevent2-devel

Tenga en cuenta que el primero elimina la versión anterior ( 1 ) y el segundo tiene un '2' explícito agregado. Además, el tipo de máquina se resuelve por suerte automáticamente.

Jordan Gee
fuente