github 上下载的ZIP包在linux下用unzip解压缩,总会出错,提示 symlink error: File name too long
在OSX上解压吧,OSX的HFS+文件系统是不区分大小写的,而linux文件系统是区分大小写的,这就会造成文件 Fuck.TXT 会被 fuck.txt 覆盖的悲惨命运。
google了下,发现这是unzip软件包的历史遗留bug,sourceforge 上显示最后更新是 unzip60.tar.gz,更新时间是 2009-04-30
得打补丁: unzip-fix-symlink-filename-too-long.patch
--- a/process.c2014-07-11 18:02:34.671611514 +0800
+++ b/process.c2014-07-11 18:03:09.639609859 +0800
@@ -1751,6 +1751,12 @@
= (G.crec.general_purpose_bit_flag & (1 << 11)) == (1 << 11);
#endif
+#ifdef SYMLINKS
+ /* Initialize the symlink flag, may be set by the platform-specific
+ mapattr function. */
+ G.pInfo->symlink = 0;
+#endif
+
return PK_COOL;
} /* end function process_cdir_file_hdr() */
安装:
# patch -Np1 unzip-fix-symlink-filename-too-long.patch
# make -f unix/Makefile generic CC="gcc -DUSE_BZIP2 -lbz2"
# make -f unix/Makefile prefix=/usr install
BTW:用busybox自带的unzip解压没问题