Unzip 6.0 버젼?

unzip 6.0 버젼으로 올라오면서 이전버젼에 적용됐던 패치들이
적용하기 어려워져서 윈도우에서 압축된 일본어 한국어 zip파일들을
풀면 풀린 디렉토리나 파일이름이 깨집니다.

info-zip사이트 게시판을 보면([url:d8ulq5jr]http://www.info-zip.org/board/board.pl?m-1248086794/s-1/[/url:d8ulq5jr])
개발자가 이 문제 해결해줄 마음이 없는것 같네요.

임시 해결책으로는 이전 5.5.2 바로슬님 패치버젼이나 -O 옵션있던 버젼을 쓰거나
6.0 버젼에 unzip-6.0-alt-natspec.patch ([url:d8ulq5jr]http://sisyphus.ru/en/srpm/Sisyphus/unzip/patches/0[/url:d8ulq5jr])를 적용해주는겁니다.
물론 완벽한 해결은 아니고 문제는 조금 남아있습니다.

먼저 libnatspec 최신버젼을 먼저 설치해 주고

[code:d8ulq5jr]/media/sdc1/unzip-dir$ natspec -i
libnatspec 0.2.5, compiled Oct 1 2009
=== Overall information ===
Current locale: ko_KR.UTF-8
System locale: ko_KR.UTF-8
Filename encoding in iconv/nls form: utf8
Country ID (for DOS): -1
Codepage of DOS: 949
Charset of ‘UNIX’ system: UTF8
Charset of ‘WIN’ system: CP949
Charset of ‘DOS’ system: CP949
Charset of ‘MAC’ system: MAC
After setlocale:
nl_langinfo(CODESET): UTF-8
natspec_get_charset: UTF8
Current locale is in UTF8 encoding[/code:d8ulq5jr]

패치를 적용한 컴파일 설치 .잘 링크됐나 확인한뒤에

[code:d8ulq5jr]/media/sdc1/unzip-dir$ ldd -r /usr/bin/unzip
linux-gate.so.1 => (0xffffe000)
libnatspec.so.0 => /usr/lib/libnatspec.so.0 (0xb7fe5000)
libc.so.6 => /usr/lib/debug/libc.so.6 (0xb7ea2000)
/lib/ld-linux.so.2 (0xb803a000)[/code:d8ulq5jr]

옵션을 살펴보면 -O 옵션이 추가됐습니다.

[code:d8ulq5jr]/media/sdc1/unzip-dir$ unzip
UnZip 6.00 of 20 April 2009, by ALT Linux Team. Original by Info-ZIP.

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
Default action is to extract files in list, except those in xlist, to exdir;
file[.zip] may be a wildcard. -Z => ZipInfo mode ("unzip -Z" for usage).

-p extract files to pipe, no messages -l list files (short format)
-f freshen existing files, create none -t test compressed archive data
-u update files, create if necessary -z display archive comment only
-v list verbosely/show version info -T timestamp archive to latest
-x exclude files that follow (in xlist) -d extract files into exdir
modifiers:
-n never overwrite existing files -q quiet mode (-qq => quieter)
-o overwrite files WITHOUT prompting -a auto-convert any text files
-j junk paths (do not make directories) -aa treat ALL files as text
-C match filenames case-insensitively -L make (some) names lowercase
-X restore UID/GID info -V retain VMS version numbers
-K keep setuid/setgid/tacky permissions -M pipe through "more" pager
-O CHARSET specify a character encoding for DOS, Windows and OS/2 archives
-I CHARSET specify a character encoding for UNIX and other archives
See "unzip -hh" or unzip.txt for more help. Examples:
unzip data1 -x joe => extract all files except joe from zipfile data1.zip
unzip -p foo | more => send contents of foo.zip via pipe into program more
unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer[/code:d8ulq5jr]

잘 풀리나 테스트해보면 화면 출력은 깨지지만 풀리기는 제대로 풀린다는걸 알수있습니다.

/media/sdc1/unzip-dir/unzip-test$ unzip -O shift-jis zip_test_3470.zip
Archive: zip_test_3470.zip
creating: Zip_Test/
extracting: Zip_Test/??? ???.txt
reandr@reandr /media/sdc1/unzip-dir/unzip-test$ ls -al Zip_Test
합계 12
drwxr-xr-x 2 reandr reandr 4096 2009-07-20 11:21 .
drwxr-xr-x 3 reandr reandr 4096 2009-10-02 00:34 …
-rw-r–r-- 1 reandr reandr 37 2009-07-20 11:21 新規テキスト ドキュメント.txt

/media/sdc1/unzip-dir/unzip-test$ unzip -O cp949 한국어.zip
Archive: 한국어.zip
extracting: ???.txt

/media/sdc1/unzip-dir/unzip-test$ ls -al *.txt
-rw-r–r-- 1 reandr reandr 6 2008-03-18 17:19 한국어.txt

우선 좋은 참고 글 감사합니다.

PPA 용으로 따로 한번 해볼까하고
오전에 natspec을 찾아 보니
우분투용은 없고 데비안 용이 있어(0.2.5)
소스를 다운 받아 PPA 에 맞게 수정 후
업로드 했더니 PPA에서 컴파일 설정중에 …

[code:dvmtsyqd]autoreconf -iv
make: autoreconf: Command not found
make: *** [configure] Error 127
[/code:dvmtsyqd]
autoreconf가 있는데 왜 오류를 뿝는지…
일단 여기까지 하고 좀 더 알아 봐야 겠습니다.

전에 제가 8.10 까지 PPA에 올리던 unzip 패치 패키지를 6.0-2로 올려 편법으로 업데이트 하는 거도 방법이나
이보다는 원래 최초 이패치를 만든 bluetux님의 조언을 더 들어도 봐야 겠습니다.

우분투에는 빵집같은 효율좋은 압축프로그램이 없을까요?

저는 어떻게 네이티브로 unzip돌리는 것보다 포도주로 빵집 돌리는게 빠르던데…OTL

전 p7zip…

7zip 만세!