Origem do erro
O PK no erro significa Phil Katz, o inventor do formato PKZIP original. O utilitário zip
não acompanhou os recursos do software comercial derivado pkzip
, particularmente o armazenamento de certificados que os bancos gostam de incluir em seus arquivos ZIP.
A Wikipedia fornece uma visão geral do desenvolvimento do formato. Mas os utilitários zip
do Unix não implementam as mudanças após o ano de 2002.
Você pode ter que comprar a versão comercial do PKWARE para o Linux para descompactar isso.
A página man de zip
tem o seguinte para dizer por si e 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.
Solução
Embora zip
não possa fazer o trabalho, existem outras ferramentas que podem. Você mencionou o utilitário 7zip e a versão de linha de comando do Linux / Unix do 7-Zip que, entre outros, pode ler e escrever ZIP
formato. Ele alega que, se o 7-Zip não puder ler um arquivo zip, em 99% dos casos, o arquivo está quebrado . Os utilitários 7-Zip devem ser capazes de ler o seu arquivo, então ele está quebrado ou então o seu está no 1% (para o qual eu não encontrei mais detalhes).
O 7-zip no Linux vem em vários executáveis com diferentes formatos de suporte. O mais básico ( 7zr
), não suporta ZIP, você deve usar pelo menos 7za
ou o total 7z
:
7za x filename.zip
Diferente pacote de versão do Linux 7za
/ 7z
em pacotes com nomes diferentes.
O mais fácil (como sempre) é instalar no Solus:
sudo eopkg install p7zip
Na versão Linux derivada do Debian, o pacote p7zip
instala apenas a base 7z
que não suporta ZIP. Esta divisão causou alguns problemas e instalar p7zip-full
não faz o que diz, às vezes você também tem que instalar p7zip-rar
No meu sistema Linux Mint eu precisava fazer:
sudo apt-get install p7zip-full p7zip-rar
No RedHat / CentOS você precisa ter o repositório EPEL ativado. Por exemplo, no CentOS 7 eu precisava fazer:
sudo yum install epel-release
sudo yum --enablerepo=epel install p7zip