기본 콘텐츠로 건너뛰기

추천 가젯

Tmux 환경에서 Vim 컴파일 시 발생하는 termio/termios 감지 오류 해결 방법

 리눅스 환경에서 소스코드를 직접 빌드하다 보면 의외의 환경 변수나 터미널 세션 설정 때문에 엉뚱한 빌드 에러를 마주할 때가 있습니다. 대표적인 예로 Tmux 세션 내부에서 Vim 소스를 컴파일할 때 발생하는 termio/termios 감지 오류 가 있습니다. 이번 글에서는 해당 에러가 발생하는 원인과, 단순한 clean 으로는 해결되지 않는 이유 및 올바른 해결 방법을 정리합니다. 1. 문제 원인 Vim의 소스 코드 빌드 과정( configure )은 시스템이 System V 계열인지 Linux 계열인지 판별하기 위해 termio.h 와 termios.h 헤더 파일 및 터미널 인터페이스를 검사(Probe)합니다. 하지만 Tmux 내부(세션 안)에서 컴파일을 진행할 경우 , Tmux가 제공하는 PTY(Pseudo-Terminal) 환경과 TERM=screen 등의 특수한 환경 변수 영향으로 인해 Autoconf가 터미널 인터페이스를 검출하는 과정에서 오동작을 일으킵니다. 그 결과, 실제 시스템 조건과 무관하게 설정 에러를 발생시키게 됩니다. 2. 왜 make clean 으로는 해결되지 않을까? 일반적인 개발 과정에서는 빌드가 꼬였을 때 make clean 을 실행하곤 합니다. 하지만 make clean 은 컴파일된 오브젝트 파일이나 바이너리( .o 파일 등)만 삭제할 뿐, Autotools가 시스템 환경을 탐색한 결과로 남긴 캐시( config.cache 또는 내부 매크로 변수)나 설정 파일들은 그대로 유지 합니다. 일반적인 상황에서는 시스템의 하드웨어/OS 정보가 바뀌지 않기 때문에 이 잔여물이 문제가 되지 않습니다. 그러나 Tmux나 Screen 같은 터미널 멀티플렉서 환경에서 탐색된 왜곡된 정보가 캐시에 박혀버리면, 나중에 Tmux 외부(일반 터미널)로 나와서 빌드를 시도해도 이전의 오염된 캐시 때문에 계속해서 오류가 발생하게 됩니다. 3. 해결 방법 이 문제를 해결하기 위해서는 반드시 Tmux 외부 환경 에서 기존의 오염된 설정 파일을 ...

윈도우 wsl2에서 cifs 외부 마운트가 안되는 상황의 해결법.

 /mnt 폴더를 보면 /mnt/c라고 c드라이브가 마운트가 되어 있다. 


mount 명령을 넣으면 다음 결과가 나온다. 


마이크로소프트에서 호스트컴퓨터와 데이터 통신을 할 수 있도록 공간을 열어 두었다. 

wsl과 도커까지 연동이 되는 상황이라 이게 보안에 있어 좋지 않을 수도 있지만, 연결이 되는 것이 중요합니다. 

windows에서는 폴더 정리를 위해서 1. xxx 2. yyyy 3. zzzz 식으로 폴더를 정리를 해놓고나서,

10개가 넘어가는 순간 01. xxxx로 바꾸기 위해서는 상당히 머리가 아프다, powershell 쓴다고 해서, 윈도우가 perl을 기본으로 깔아주지도 않기 때문에, rename.pl이라는 위대한 도구를 사용할 수 없다. 

그래서 생각한 것이, wsl을 사용하여 파일이름을 바꾸는 게 어떻가 하는 생각이었다.

그런데 문제가, mount.cifs로 nas가 잡히지 않고 계속 에러가 뜨는 것이었다. 웹에 나온방법을 다 뒤져도 안되길래 찾아보니, 드라이브 패쓰를 그대로 마운트 하는 방법이 있다고 하더라
(교정을 bing chat으로 시켰더니, 보안에 안좋으니, 다시 mount.cifs 쓰라는데 안되는데 어카라는겨...   교정하다말고 왜 다시 정보를 주는건지.)

뭐 결국은 이 방법을 써서, nas를 마운트한 Z:\와 y:\를 연결해서 작업을 했다. 

bash는 자신 있으니, bash를 쓰는 그냥 rename.pl을 쓰던간에 이제 저 일을 난 할 수 있다.  


댓글