본문 바로가기

Skills/mY Technutz

Tar 간단 패치...

Irc Tini채널에서 Badung님의 불평 ( tar압축을 풀때, 원하는 디렉토리에 풀기위해선 목표 디렉토리가 생성되어 있어야 한다는..)을 듣고,
호기심에 GNU Tar 소스를 받아보았다..

mkdir만 -C 옵션에 추가해 넣으면 되는걸 가지고, 안하고 있었다니!!! 자세히보니 릴리즈 일자가 이년전이다 흐억!

어쨋든, 원래 tar xvfz (xvf) 압축파일명 -C 풀고싶은위치 를 때리면 압축이 풀릴 디렉토리가 존재 하는 경우에 한해서
그 디렉토리로 압축을 풀어주는 거였는데, 이 -C 옵션에 아주 간단하게
mkdir(arg, 0755); 만 추가해 줌으로써 원하는 디렉토리에 압축을 풀때, 구지 미리 생성하지 않아도 되도록 했다.

어차피 디렉토리인데다가, mkdir만 하는거니까 중복디렉토리가 있으면 자동으로 그냥 넘어갈 것이고, 없으면 만들테니
문제될것 따윈 없겠지...

Badung님이 신나서 포스팅해봤지만 Tar 메인테이너의 답변은 냉랭했다..
"그딴거 왜필요해? 그냥 mv나 cp 써서 옮겨!"
.... 뭐..상관 없으니까 ㅎㅎ
근데 이게 왜 아무도 필요없다고 생각하고 있었는지 모르겠네...
mkdir tmp && mv 압축파일
cd tmp && tar vfxz(vfx) 압축파일;
이렇게 최소 두줄을...
뭐 변태적으로 한다면 한줄(mkdir tmp && mv 압축파일 tmp && cd tmp && tar vfxz or vfx 압축파일)로 되겠지만,

tar vfxz(vfx) 압축파일 -C 위치
단 한줄에 타이핑도 줄이면서 사용 할 수 있는데 말이지.... - 사실 나도 바둥옹이 불평하기 전까진 신경안쓰고 있었다!!

어쨋든 패치 방법은 GNU tar(http://directory.fsf.org/GNU/tar.html) 소스를 다운받아서 적당히 푼 다음

vi src/tar.c 를 열고,
parse_opt(int key, char *arg, struct argp_state *state) 함수를 찾고,
   case 'C':
     name_add ("-C");
       mkdir(arg, 0755);       // Patched by Mirr
       name_add(arg);
     break;


저장, 그리고 ./configure && make && make install 하면끝...



간혹 install이 안되거나(권한없어서) prefix부분이 다른 경우는 그냥 바이너리만 가져다 쓰던가, 복사해서 덮으면 된다.

수정된 Gnu Tar : http://mirr.***pia.com/pds/tar-1.15.1-1.tgz
바이너리파일 : http://mirr.***pia.com/pds/tar

첨부로, 수정된 소스와, 바이너리 파일을 첨부하겠다...


'Skills > mY Technutz' 카테고리의 다른 글

RHEL 구버젼 업데이트 지원받기..  (0) 2006.09.06
Inode 로 파일 지우기..  (0) 2006.09.04
Eclipse  (0) 2005.10.30
머드서버프로그래밍에서 주의해야 할 사항  (0) 2005.09.13
Table을 쉬게하자...  (0) 2005.07.01