モチログ

はてなでのブログ

Mac向け文字化けしないunzipコンパイル

Mac 10.8.2でhomebrew0.94でやってるlibiconvが必要らしいがなんかbrewで入れようとするとMacで元から入ってるからそれ使えっていわれる。しかし、それでは上手くいかないような事がWeb記事見てたら載ってるので、自前でコンパイルする。

参考サイト unzip ver6.0ソースコード+日本語化パッチでzipファイル解凍時の文字化けに対処。 -パソコン関連の覚え書き

libiconvのインストール

$wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
$tar zxvf libiconv-1.14.tar.gz
$cd libiconv-1.14
$./configure --prefix=/usr/local/Cellar/libiconv/1.14
$make
$make install
$brew link libiconv

unzipのインストール

パッチの取得

上2つのファイルをコンパイルする作業ディレクトリに置く。コマンドラインからそのディレクトリに移動

$tar zxvf unzip60.tar.gz
$ cd unzip60
$patch -p1 < ../unzip60-alt-iconv-utf8.patch

Makeファイルの修正

$vi unix/Makefile

diff表示なので、-行を+行に書き換え

--- unix/Makefile2009-01-19 07:41:18.000000000 +0900
+++ /Users/flogedge/Builds/unzip/unzip60/unix/Makefile2013-02-16 18:57:50.000000000 +0900
@@ -50,7 +50,7 @@
 CFLAGS = -O
 CF_NOOPT = -I. -I$(IZ_BZIP2) -DUNIX $(LOC)
 CF = $(CFLAGS) $(CF_NOOPT)
-LFLAGS1 =
+LFLAGS1 = -L/usr/local/lib -liconv
 LF = -o unzip$E $(LFLAGS1)
 LF2 = -s

@@ -121,7 +121,7 @@
 INSTALL_D = mkdir -p
 # on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
 manext = 1
-prefix = /usr/local
+prefix = /usr/local/Cellar/unzip/6.0
 BINDIR = $(prefix)/bin#where to install executables
 MANDIR = $(prefix)/man/man$(manext)#where to install man pages
 INSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/unzip$E $(BINDIR)/unzipsfx$E \
@@ -872,7 +872,7 @@

 # Macintosh MacOS X (Unix-compatible enviroment), using standard compiler
 macosx:unix_make
-$(MAKE) unzips CFLAGS="-O3 -Wall -DBSD" LF2=""
+$(MAKE) unzips CFLAGS="-O3 -Wall -DBSD -I/usr/local/include" LF2=""
  $(STRIP) $(UNZIPS)

 # Macintosh MacOS X (Unix-compatible enviroment), using gcc

コンパイル

$make macosx -f unix/Makefile
$make install
$brew link unzip

使い方

$unzip -O cp932 filename -d 展開ディレクトリ