MacOS – How to update the version of `unzip` to version 6.00 or higher

archive-utilitycommand linehomebrewmacoszip

Its a common problem that, when unzipping (read: 'open by double-click'), some .zip files result in a similar sized .cpgz file. But you expected an unzipped file or folder instead.

The default unzip program in OS X is '/System/Library/CoreServices/Archive Utility.app'

When you try to unzip it in the Terminal (/usr/bin/unzip) you see the following:

$ unzip SE.zip

Archive:  SE.zip
warning [SE.zip]:  zipfile claims to be last disk of a multi-part archive;
  attempting to process anyway, assuming all parts have been concatenated
  together in order.  Expect "errors" and warnings...true multi-part support
  doesn't exist yet (coming soon).
error [SE.zip]:  missing 8256083459 bytes in zipfile
  (attempting to process anyway)
error [SE.zip]:  attempt to seek before beginning of zipfile
  (please check that you have transferred or created the zipfile in the
  appropriate BINARY mode and that you have compiled UnZip properly)

I have Mavericks 10.9.5 running, and a unzip -v learns us we are on version 5.52:

$ unzip -v
UnZip 5.52 of 28 February 2005, by Info-ZIP.  Maintained by C. Spieler. Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.
...

The funny thing is, the same 'corrupt' zip file extracts fine on my CentOS system. There is no error and the file seems fine. My CentOS system runs unzip version 6.00:

$ unzip -v
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.
...

My question: How can I update my version of unzip to version 6.00 or higher?

And affiliated question: Will my new version of OS X unzip also have affect on the default unzip 'Archive Utility.app'?

ps. I prefer the use of a package manager like brew above compiling from source. brew install unzip results in: Error: No available formula for unzip

Best Answer

Using Homebrew (as requested):

$ brew tap homebrew/dupes
$ brew install unzip

This will install unzip at (considering defaults) /usr/local/Cellar/unzip/6.0/bin/unzip

You can then alias it as unzip6 somewhere in your path.

Also, you may want to to try "The Unarchiver" from the app store. Much more useful IMO then Apple's Archive Utility.

UPDATE

dupes has been deprecated in Homebrew, so brew tap homebrew/dupes is no longer necessary. All you need now (assuming Homebrew is installed) is:

brew install unzip

Then you can add a link to /usr/local/bin with:

ln -s /usr/local/opt/unzip/bin/unzip /usr/local/bin/unzip6

Now the system unzip should work with unzip and Version 6 will work with unzip6