Zip

嘗試解壓縮文件時出錯:“需要 PK 兼容。v6.1(可以做 v4.6)”

  • August 23, 2021

我從銀行收到了一個 zip 文件。嘗試解壓縮時出現以下錯誤。

unzip filename.zip 
Archive:  filename.zip
  skipping: SOME_STUFF.pdf  need PK compat. v6.1 (can do v4.6)

命令file返回

Zip archive data

對於這個文件。

有相當多的執行緒包含此錯誤消息,但他們唯一的具體建議是使用7z x7za x來自p7zip-full包。這些失敗並出現錯誤:

Unsupported Method

Sub items Errors: 1

我正在使用 Debian wheezy amd64。不過,我在測試/不穩定中看不到unzipor包的重大更新。7za

我很感激有關如何解壓縮此文件的建議,更一般地說,錯誤消息PK compat. v6.1 (can do v4.6)是什麼意思?對於廣泛使用的實用程序,zip沒有太多可用的文件。Debian 原始碼中的自述文件指向http://www.info-zip.org/pub/infozip/,其中列出了 2009 年 4 月 29 日發布的 UnZip 6.0。

unzip這是我係統上二進製文件的版本輸出。

unzip -v
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;
see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.

Compiled with gcc 4.7.2 for Unix (Linux ELF) on Feb  3 2015.

UnZip special compilation options:
       ACORN_FTYPE_NFS
       COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)
       SET_DIR_ATTRIB
       SYMLINKS (symbolic links supported, if RTL and file system permit)
       TIMESTAMP
       UNIXBACKUP
       USE_EF_UT_TIME
       USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)
       USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)
       UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)
       LARGE_FILE_SUPPORT (large files over 2 GiB supported)
       ZIP64_SUPPORT (archives using Zip64 for large files supported)
       USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.6, 6-Sept-2010)
       VMS_TEXT_CONV
       WILD_STOP_AT_DIR
       [decryption, version 2.11 of 05 Jan 2007]

UnZip and ZipInfo environment options:
          UNZIP:  [none]
       UNZIPOPT:  [none]
        ZIPINFO:  [none]
     ZIPINFOOPT:  [none]

dpkg 將軟體包版本報告為6.0-8+deb7u2.

的輸出zipinfo是:

zipinfo filename.zip 
Archive:  filename.zip
Zip file size: 6880 bytes, number of entries: 1
-rw-a--     6.4 fat    10132 Bx defN 15-Feb-06 16:24 SOME_STUFF.pdf
1 file, 10132 bytes uncompressed, 6568 bytes compressed:  35.2%

錯誤的根源

錯誤中的 PK 代表原始 PKZIP 格式的發明者 Phil Katz。該zip實用程序沒有跟上pkzip衍生商業軟體的功能,特別是銀行喜歡包含在其 ZIP 文件中的證書儲存。

維基百科概述了該格式的發展。但是 Unixzip實用程序在 2002 年之後沒有實施這些更改。

您可能需要購買適用於 Linux 的 PKWARE 商業版本才能解壓縮它。

的手冊頁zip有以下說明unzip

  A  companion  program  (unzip(1))  unpacks  zip  archives.  The zip and
  unzip(1) programs can work with archives produced by PKZIP  (supporting
  most PKZIP features up to PKZIP version 4.6), and PKZIP and PKUNZIP can
  work with archives produced  by  zip  (with  some  exceptions,  notably
  streamed  archives,  but  recent  changes  in the zip file standard may
  facilitate better compatibility).  zip version 3.0 is  compatible  with
  PKZIP  2.04  and  also supports the Zip64 extensions of PKZIP 4.5 which
  allow archives as well as files to exceed the previous 2 GB limit (4 GB
  in  some  cases).  zip also now supports bzip2 compression if the bzip2
  library is included when zip is compiled.  Note that PKUNZIP 1.10  can‐
  not extract files produced by PKZIP 2.04 or zip 3.0. You must use PKUN‐
  ZIP 2.04g or unzip 5.0p1 (or later versions) to extract them.

解決方案

雖然zip不能完成這項工作,但還有其他工具可以。您提到了 7zip 實用程序和7-Zip的 Linux/Unix 命令行版本,除其他外,它可以讀取和寫入ZIP格式。它聲稱如果 7-Zip 無法讀取 zip 文件,則在99% 的情況下文件已損壞。7-Zip 實用程序應該能夠讀取您的文件,因此要麼它已損壞,要麼您的文件在 1% 之內(我沒有找到更多詳細資訊)。

Linux 上的 7-zip 有多種執行檔,支持不同的格式。最基本的 ( 7zr),不支持 ZIP,您應該至少使用7za或完整的7z

7za x filename.zip

不同的 Linux 版本包7za/7z在包中具有不同的名稱。

最簡單的(通常)是在 Solus 上安裝:

sudo eopkg install p7zip

在 Debian 派生的 Linux 版本上,該軟體包p7zip僅安裝7z不支持 ZIP 的基礎。這種分裂導致了一些問題,安裝p7zip-full並沒有按照它說的那樣做,有時你還必須p7zip-rar在我的 Linux Mint 系統上安裝我需要做的:

sudo apt-get install p7zip-full p7zip-rar

在 RedHat/CentOS 上,您需要啟用EPEL儲存庫。例如在 CentOS 7 上我需要做:

sudo yum install epel-release
sudo yum --enablerepo=epel install p7zip

引用自:https://unix.stackexchange.com/questions/183452