기본 콘텐츠로 건너뛰기

추천 가젯

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 외부 환경 에서 기존의 오염된 설정 파일을 ...

KDE ark로 한글이름 압축파일을 열 수 없는 것을 수정하자.



여러 정보들을 찾다보면 예전에는 그저 konqueror 의 인코딩정보수정으로

간단히 가능했던 것으로 보인다.

하지만 지금은 잘은 안된다.

KDE3~ 4로 넘어오면서 부터 여러 정책적인 부분에서의 변경에 의한 부분인가 보다.

여러가지 방법이 있다. 일단 인터넷에 돌아다니는 zlib에 대한 패치를 통해서도 할 수 있지만

나는 내가 직접 수정하ᅟ는 방식을 해보길 원해서 그건 갑자기 할 수 있는 수준이 아니라 접었다.

소스를 본적이 있는데 원래 코드가 더러워서 수정 코드도 읽기 편하지 않았다. 그리고 어려웠...


iconv로 인코딩 정보 바꾸는거 정도다 기본적으로는 알고리즘도 다 알겠지만...

zlib소스 읽어본 사람ᅟ만 알겠지만... 어디다 넣어야 할 지  감이 안 온다.


그래서 ark의 소스를 받아보았다. 그런데 말이지 ark라는 프로그램이

굉장히 cli수준에서의 linux의 철학을 잘 반영한다.

먼 말이냐면 만들어진거 있으면 그냥 그것을 쓰지 새로 만들지 않는다랄까...

그냥 zipinfo로 파일정보 얻고 unzip으로 푸는 것을 gui를 잘 씌어 놓았다는 것이다.

 먼말인지 모르겠으면 그냥 한번소스를 보라 나 같은 허접한 사람이 보면 감탄한다.

의외로 굉장히 간단해서..... 간단한 것이 막강할 줄이야...


일단 내가 수정한 부분은 요 파일이다
vim plugins/clizipplugin/cliplugin.cpp 로 열고.

80         p[ListArgs] = QStringList() << QLatin1String("-O")  << QLatin1String("euc-kr") << QLatin1Str    ing( "-l" ) << QLatin1String( "-T" ) << QLatin1String( "$Archive" );
 81         p[ExtractArgs] = QStringList() <<  QLatin1String("-O")  << QLatin1String("euc-kr")  << QLati    n1String( "$PreservePathSwitch" ) << QLatin1String( "$PasswordSwitch" ) << QLatin1String( "$Archive"     ) << QLatin1String( "$Files" );

빨간색 글씨로 되어있는 부분만 수정했다. 그리고 마지막으로 빌드를 했는데

까먹으면 안되는게  cmake ; make ; sudo make install 을 하면

/usr/local/ 에다가 설치를 하는데 ark상에 문제인지 kde상에 문제인지 저쪽으로 들어가면

인식을 못한다. 그리고 ark가 설치되어있으면 우선순위도 밀려서 적용이 안된다.

고로 cmake -DCMAKE_INSTALL_PREFIX=/usr/ ; make ; sudo make install 을 하시면

되겠다. 그러면 온 갖 압축파일로 부터 해방이된다.


일단 내가 우분투라 zip에 -O 옵션이 있는 것이다.이 옵션이 없는 리눅스 배포판의 zip이라면

그냥zlib을 패치해서 쓰던지 zip자체에 패치되어 있는 녀석을 쓰던지 하면된다...

결국 ark는 unzip으로 푸는거니까...

댓글

  1. 음 이거 그대로 사용 못한다. 물론 고칠 수는 있다. 근데, zip파일을 다루는 플러그인이 너무 많아서 설정에서 플러그인도 끄고 해야해서 그냥 터미널쓰는게 편하다. 그리고 zip을 쓰지 말자... 영어 안쓰는 나라끼리 소통할거라는 생각을 전혀 안하고 만든 물건이다.

    답글삭제

댓글 쓰기