[RHEL] RHEL 8에 EUCKR을 지원하는 tmux 1.8 설치하기
카테고리: Linux(RHEL, Ubuntu)
문제 상황
RHEL 8 환경에서 쉽게 설치할 수 있는 tmux는 2.7버전으로, UTF-8만 지원한다. 하지만 기존에 사용하는 레거시 환경(EUC-KR)과의 호환성을 위해 RHEL 7에서 사용하던 tmux 1.8버전을 설치하려고 했다.
tmux 1.8 RPM 파일을 이용하여 설치를 시도했으나 다음과 같은 라이브러리 의존성 오류가 발생했다.
nothing provides libevent-2.0.so.5()(64bit)
필요한 libevent-2.0 RPM을 추가로 설치하려고 했지만 이번에는 기존에 설치된 unbound-libs 패키지와 의존성 충돌이 발생했다.
해결 방안
1. 기존 tmux 확인 및 제거
기존 버전을 제거해야 한다면 tmux 세션을 정리한 후 다음 명령어를 실행한다.
yum remove tmux
2. RPM 파일 준비
필요한 파일은 tmux-1.8-4.el7.x86_64.rpm과 libevent-2.0.21-4.el7.x86_64.rpm 2개 인데, RHEL 7 환경에서 사용하는 RPM은 아래의 Repo에서 찾을 수 있다.
https://mirror.kakao.com/centos/7/os/x86_64/Packages/
3. RPM 내부 파일 추출
RPM을 설치하지 않고 내부 파일만 추출하기 위해 rpm2cpio와 cpio를 사용한다. 필요한 도구가 없다면 아래와 같이 설치한다.
yum install ncurses-compat-libs cpio
준비한 RPM 파일이 있는 위치에서 아래와 같은 명령어를 실행하여 RPM을 추출한다.
mkdir -p /opt/tmux18/{bin,lib}
rpm2cpio tmux-1.8-4.el7.x86_64.rpm | cpio -idm
install -m 755 usr/bin/tmux /opt/tmux18/bin/tmux
rpm2cpio libevent-2.0.21-4.el7.x86_64.rpm | cpio -idm
cp -a usr/lib64/libevent-2.0.so.5* /opt/tmux18/lib/
4. tmux 실행 스크립트 등록
vim /usr/local/bin/tmux
#!/bin/sh
export LD_LIBRARY_PATH="/opt/tmux18/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
exec /opt/tmux18/bin/tmux "$@"
chmod 755 /usr/local/bin/tmux
5. 수정결과 확인
아래의 명령어를 입력했을 때 tmux 1.8이라고 출력되면 성공적으로 설치된 것이다.
tmux -V
마무리
RHEL 8에서 오래된 tmux 1.8 RPM을 사용하려고 하면 운영체제 버전 차이로 인한 공유 라이브러리 의존성 문제가 발생할 수 있다. 기존 시스템 라이브러리를 유지하면서 특정 프로그램만 구형 라이브러리를 사용하도록 구성하려면 rpm2cpio로 RPM 내부 파일을 별도 경로에 추출하고, LD_LIBRARY_PATH를 통해 필요한 라이브러리 경로만 지정하는 방식을 활용할 수 있다.
다만 이 방식은 RPM 패키지 관리 대상에서 제외되며, 구형 바이너리와 라이브러리 자체의 보안 및 ABI 호환성 문제까지 해결하는 것은 아니다. 장기적으로는 RHEL 8 환경에서 tmux 1.8을 다시 빌드하거나, 레거시 환경을 별도로 분리하는 방식도 고려할 필요가 있어 보인다.
정보의 바다를 헤엄치는 수달의 마음으로