p7zip 和 7-Zip 是什么关系,支持哪些系统?

更新时间

p7zip 是 7-Zip 命令行版本 7za.exe 向 POSIX 系统的移植,运行在 Unix(Linux、Solaris、OpenBSD、FreeBSD、Cygwin、AIX 等)、macOS X,以及 BeOS 和 Amiga 上。它适合需要在类 Unix 环境里用命令行完成高压缩比归档操作的用户;如果你只想要图形界面或 Windows 原生程序,应直接使用 7-Zip 本体。

两者的分工

维度 7-Zip p7zip
形态 文件归档工具,含图形界面与命令行 7-Zip 命令行版 7za.exe 的移植
主要目标平台 Windows 为主 POSIX 系统、macOS X、BeOS、Amiga
压缩能力 官方描述为最高压缩比的文件归档器 沿用同一压缩核心
字节序支持 自 4.10 起支持小端与大端机器 自 4.10 起同样支持小端与大端机器

关键机制在于:p7zip 不是另起炉灶的重写,而是把 7-Zip 的命令行归档程序搬到类 Unix 平台,因此压缩格式与算法行为与上游保持一致,差异主要体现在运行平台和调用方式上。例如需要在一台 FreeBSD 服务器上通过脚本批量压缩日志目录时,用的就是 p7zip 提供的命令行程序,而不是 Windows 版 7-Zip。

支持的系统

根据站点说明,p7zip 覆盖以下平台:

  • Unix 类:Linux、Solaris、OpenBSD、FreeBSD、Cygwin、AIX 等
  • macOS X
  • BeOS
  • Amiga

自 4.10 版本起,p7zip 与 7-Zip 一样同时支持小端和大端机器,这意味着在 AIX、Solaris 等可能存在大端架构的系统上也能运行。

下载与获取方式

官方页面把下载指向 SourceForge 项目页:http://sourceforge.net/projects/p7zip/,源码包和二进制包都在那里获取。

站点还列出了一些非官方打包渠道,适合希望用系统包管理器安装的用户:

平台 非官方包入口
Amiga http://amiga.sourceforge.net/?showpackage=p7zip
BeOS http://www.bebits.com/app/4079
Debian http://adn.diwi.org/debian/,另有 Debian Unstable 包
Fedora Core 1、2、3 http://timeoff.wsisiz.edu.pl/rpms.html
FreeBSD http://www.freshports.org/archivers/p7zip/
Gentoo Linux http://packages.gentoo.org/package/app-arch/p7zip
Mandrake http://www.geocities.com/mestiada,另有 Mandrake Cooker
Solaris http://sunfreeware.com/

需要注意,这些是第三方维护的包,版本和更新节奏由各打包方决定,与 SourceForge 上的官方发布不一定同步。选择时优先看你的系统是否已有对应仓库入口;没有的话再回到 SourceForge 下载源码或二进制包。

同站的其他项目

p7zip 主页还介绍了两个相关项目,容易与主项目混淆:

  • J7Zip:7zr.exe 的 Java 移植。2006-12-10 发布首个公开版本,仅支持解压使用 LZMA 和 BCJ2 过滤器压缩的文件;2007-02-04 起支持 BCJ 过滤器。创建归档、加密、多线程等能力在站点上仍列为待办。
  • JAVA LZMA SDK:作者把 LZMA SDK 4.03 的 LZMA 解码器移植到 Java,2005-09-11 又移植了 LZMA C# SDK 4.23 的编码器与解码器。页面提到 Igor Pavlov 后来在官方 LZMA SDK 中直接提供了 Java 版本。

如果你只是想在 Java 环境里读取 7z 压缩数据,J7Zip 是相关选项,但要接受它功能受限、且页面信息停留在较早年份的事实。

判断要点

  • 需要 Windows 上的图形化归档工具:用 7-Zip。
  • 需要在 Linux、BSD、macOS、Solaris、AIX 等系统上用命令行压缩解压:用 p7zip。
  • 需要 Java 侧解压 7z:可了解 J7Zip,但先确认其功能范围是否满足需求。
  • 安装前先查系统仓库是否有 p7zip 包,没有再去 SourceForge 取官方包。

站点页面最后修改时间为 2009 年 2 月 21 日,其中的版本号、链接和项目状态反映的是当时情况,实际使用前应以 SourceForge 项目页的当前发布信息为准。