Zip 2GB Limit: Difference between revisions
RobRistroph (talk | contribs) |
RobRistroph (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
[[ | [[Category:Tips]] | ||
== Fixing the 2GB file size limit in unzip == | == Fixing the 2GB file size limit in unzip == |
Latest revision as of 05:39, 24 June 2009
Fixing the 2GB file size limit in unzip
On some SlackWare versions, up to at least 12.0, the "unzip" command cannot unpack a file that is bigger than 2 GB. This applies to the file that is created being 2 GB, the .zip compressed file might be less than 2 GB. When the unzip command attempts to create the greater than 2 GB file, it makes the file up until it is 2 GB, and then produces this error message (PROP_ENT.TXT is the file that is bigger than 2 GB in this case) :
PROP_ENT.TXT: write error (disk full?). Continue? (y/n/^C) y
This procedure will update the unzip command to fix this. It may also fix problems in creating a .zip file that is bigger than 2 GB, but I have not been able to test that.
With these commands I retrieved the source package and unpacked the source trees:
mkdir infozip cd infozip wget ftp://slackware.cs.utah.edu/pub/slackware/slackware-12.0/source/a/infozip/infozip.SlackBuild wget ftp://slackware.cs.utah.edu/pub/slackware/slackware-12.0/source/a/infozip/slack-desc wget ftp://slackware.cs.utah.edu/pub/slackware/slackware-12.0/source/a/infozip/unzip552.tar.bz2 wget ftp://slackware.cs.utah.edu/pub/slackware/slackware-12.0/source/a/infozip/zip232.tar.bz2 tar xjvf unzip552.tar.bz2 tar xjvf zip232.tar.bz2
I next modified the Makefiles in the two source trees to use the flags "-DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" as described here: http://www.info-zip.org/FAQ.html#limits
To do that, I edited the file unzip-5.52/unix/Makefile and changed line 776 from "CF="-O3 -Wall -I. -DASM_CRC $(LOC)"" to "CF="-O3 -Wall -I. -DASM_CRC $(LOC) -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"".
I then editted zip-2.32/unix/Makefile and changed line 49 from "CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP)" to "CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP) -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" .
The second Makefile edit might not be necessary, it should fix any problems you are having with the "zip" command (the first Makefile fixes problems with the "unzip" command).
After editing those files, I re-tarred up the directories with the now fixed Makefiles, and then removed the source trees:
tar cjvf unzip552.tar.bz2 unzip-5.52/ tar cjvf zip232.tar.bz2 zip-2.32/ rm -rf unzip-5.52/ zip-2.32/
I then ran the SlackBuild to make the package:
chmod a+x infozip.SlackBuild ./infozip.SlackBuild
At this point the slackware package will be in /tmp/infozip-5.52-i486-2.tgz. You might wish to copy it somewhere if you are going to install it on a number of computers or save it. You can install it with "installpkg /tmp/infozip-5.52-i486-2.tgz" like a normal package.
If someone knows this is fixed in recent SlackWare versions, or has uploaded a precompiled package somewhere, please update this wiki.