강좌 & 팁
글 수 2,412
2011.12.26 04:31:26 (*.138.143.120)
42990
압축 파일을 건네줄때 bin 파일로 주면서 실행하라고 해보고 싶었다.
그래서 한번 찾아보았다.
리눅스도 자동압축해제가 있었다.
물론 스크립트 방식이다.
기본 원리는 (압축해제하는 스크립트 + 압축 파일) 로 파일을 만들어서
압축을 해제하는 스크립트는 압축 파일이 있는 파일부터 읽어 들여서 압축을 해제하게 하는 것이다.
두개의 사이트를 참조했는데
http://www.linuxjournal.com/node/1005818 -> 영어 사이트...
http://progressio.tistory.com/262 -> 한글 사이트 ^^
하지만 영어사이트는 복잡했고 한글사이트의 스크립트는 동작하지 않았다.
뭐... 조합해 버렸다.
제일 중요한 것은 압축해제 파일이 어디서부터 시작되느냐하는 위치를 넘기는 방법이다.
한글 사이트는 소개하고 싶지만 커먼 라이센스라서 지면으로 소개할수는 없습니다.
제대로 실행되지 않는 스크립트의 문제점만을 소개합니다.
sfx-header 라는 자동 압축해제 스크립트의 마지막은 압축파일의 위치를 아래와 같이
tail 로 60번째 라인부터 해제파일이라고 알려준다. 하지만... 이유는 모르지만 동작하지 않았다.
tail -n +60 $0 | tar xz -C $DEFAULTDIR
exit 0
EOF
그래서 영어 사이트를 참조하기 기막힌 방법을 쓰고 있었다.
맨 마지막 라인을 아래처럼 수정해 버렸다.
ARCHIVE=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' $0`
tail -n+$ARCHIVE $0 | tar xz -C $DEFAULTDIR
exit 0
__ARCHIVE_BELOW__
문자열을 찾아서 그 뒤부터 압축 파일이 있다고 해석해 준는 것이다...
이제 한글 사이트에 나온대로 진행해 보니 잘 수행된다.
내가 수행한 명령어이다.
root@boggle70-desktop:test# cat sfx-header installer.tar.gz > temp/installer.bin
root@boggle70-desktop:test# chmod +x temp/installer.bin
실행하지 압축파일이 멋지게 풀려버렸다.
혹시 sfx-header 라는 파일을 웹에서 긁어서 vi 같은 에디터로 복사하지는 마시라.
$로 입력한 문자열은 모두 NULL 로 바뀌어 버립니다.