参考:

LXR:

根据 https://repology.org/repositories/graphs 分析活跃的软件仓库有NixPkgs, AUR, Debian, FreeBSD Ports, DPorts, Fedora, Gentoo, Guix, pkgsrc, openSUSE, Alpine, LFS/BLFS。

先说结论,Slackware、Debian、Ubuntu、Redhat、SuSE 直接在软件仓库里附带了源码包,其中 Slackware、Debian、Ubuntu、Redhat 历史留存完好。Slackware 虽然很值得敬仰,但基本是个人作品不适合做服务器用途,Redhat 商业化味道很重,版本比较乱,历经多次变更,尤其现在 CentOS 不再让白嫖了,实在没必要再去贴冷屁股,SuSE 断代的她爹都不认识了, 所以剩下的只有值得信赖的 Debian 和 Ubuntu 了,2022 年依然可以使用 2005 年发布的Debian Sarge(3.1) 和 2004 年发布的 Ubuntu 4.04(Warty Warthog)。

Gentoo 和 NetBSD 保存了比较完整的源码包,定期删除,LFS/BLFS 也提供源码包镜像,但 收录的软件包比较少。FreeBSD ports 和 DPorts 保存了部分源码包, 其它诸如NixPkgs、 AUR、Guix、Alpine 都是直接下载软件包官网的源码包,所以不要指望方便的找回老版本了,只能可劲的升级升级再升级永不回头。

补充:FreeBSD、NetBSD、OpenBSD 都有 old releases 的归档服务,可以找到当时发布时 ports tree 对应的源码包。

Debian 软件仓库里的 pool/ 下面包含了源码,以 *.dsc 文件描述:

Redhat:

Fedora:

CentOS:

EPEL:

Slackware 镜像很完整,老版本一直存着:

FreeBSD distfiles 里只有部分软件包,其它的在外部源上:

DragonFlyBSD 使用 FreeBSD 的 distfiles,自己也补充了一部分:

Gentoo:

NetBSD:

OpenBSD:

LFS 和 BLFS 收录的软件包不多:

ArchLinux 保存了二进制包历史,但没有保存源代码。ArchLinux 确实从来就不保存源码,它只有 PKGBUILD 和补丁文件。

Cygwin 保留最近几个版本,有源码。第三方 TimeMachine 保留了 2002 年以来的老版本。

MinGW + MSYS 使用 Pacman 管理二进制软件包, 在 github 上管理 PKGBUILD 文件。

打包了 Gnome 2.30 or 2.32 的发行版:

  • Gnome 2.30, 2010.3

  • Gnome 2.32, 2010.9

  • Fedora 14, Gnome 2.32, 2010.11.2

  • Debian 6(Squeeze), Gnome 2.30, 2011.2.6

  • Ubuntu 10.10(Maverick), Gnome 2.32, 2010.10.10

  • Ubuntu 11.04(Natty), Gnome 2.32(use Unity by default), 2011.4.28

参考 https://repology.org/repositories/statistics/newest 分析下几个软件仓库:

Repository Total Non-unique Newest Newest Ratio Architecture OS
nixpkgs unstable 80969 65041 54657 89.5% x86, amd64, arm64 Linux, MacOS
AUR 70532 35668 21277 72.4% x86_64 Linux
Debian Unstable 35354 26902 19365 72.4% x86*,arm*,ppc*,s390x Linux
FreeBSD Ports 29475 25017 17913 73.1% x86*,arm*,ppc*,riscv64 FreeBSD
Fedora Rawhide 22332 19902 14409 73.9% amd64,arm64 Linux
Gentoo 18152 15071 10320 75.9% x86*,arm*,alpha,hppa,ia64,loong,
mips,m68k,ppc,riscv,s390,sparc,x86
Linux, macOS, Solaris, 
openSUSE Tumbleweed 14569 13098 10305 79.7% amd64,i686,arm64,ppc64le,ppc64,s390x Linux
Arch 10924 10384 9051 88.3% x86_64 Linux
pkgsrc current 16555 14386 9038 63.4% 15+ BSD, Solaris, Linux, macOS
GNU Guix 20240 15537 8174 55.1% x86_64,i686,armhf,aarch64,powerpc64le Linux
Alpine Linux Edge 9388 8791 7351 85.7% aarch64,armhf,armv7,ppc64le,s390x,x86,x86_64 Linux
OpenBSD Ports 8926 8211 5516 68.2% amd64,arm64,i386,octeon,ppc64,riscv64,sparc64 OpenBSD
Void Linux 8453 8126 5279 65.5% x86_64,i686,armv6l,armv7l,aarch64 Linux
OpenMandriva Rolling 13764 12562 5232 55.6% x86_64 Linux
SlackBuilds 8200 7386 3865 53.9% x86_64,aarch64 Linux
Ravenports 3015 2974 2916 98.9% x86_64,amd64 BSD, MacOS,Solaris,Linux
MSYS2 mingw 2137 2063 1627 80.3% x86 Windows
CRUX 1799 1751 1666 95.7% x86_64 Linux
Slackware64 current 1655 1617 1416 89.1% x86_64,aarch64,s390 Linux
Cygwin 3133 3045 1269 42.1% x86 Windows
MSYS2 msys2 513 490 341 70.6% x86 Windows

以 GTK 4 为例:

  • ⭐️Slackware 直白原始的构建脚本 (Bash),不依赖包管理工具,记录手动执行的命令,不支持构建选项,不支持交叉编译,不拆分软件包,可以在 x86/arm/s390 主机上编译

  • ⭐️⭐️⭐️Void Linux 依赖包管理工具 xbps,抽取了通用构建命令,Bash 脚本很简洁,支持构建选项,支持交叉编译,拆分软件包

  • ⭐️⭐️Chimera Linux 派生自 Void Linux 的软件仓库,将 Bash 脚本转换成了 Python 脚本,依赖包构建工具 cbuild 和 Alpine Linux 的包管理工具 apk,支持构建选项(没有 Void Linux 丰富),支持交叉编译,拆分软件包

  • Alpine Linux 跟 Void Linux 很像,也使用 Bash 脚本,但通用构建命令抽取不如 Void Linux 彻底,支持构建选项(Chimera Linux 与之类似),拆分软件包,不支持交叉编译

  • FreeBSD 使用 Makefile,不拆分软件包,支持构建选项,支持交叉编译

  • OpenBSD 使用 Makefile,拆分软件包,不支持构建选项,支持交叉编译

  • NetBSD 使用 Makefile,比较复杂,不拆分软件包,支持构建选项,支持交叉编译

  • ⭐️ArchLinux 使用 Bash 脚本,拆分软件包,不支持构建选项,不支持交叉编译,CRUX 与 ArchLinux 类似

  • openSUSE 使用 spec 文件,拆分软件包,不支持构建选项,不支持交叉编译

  • Debian 使用 Makefile,比较复杂,依赖包管理工具,拆分软件包,支持构建选项,支持交叉编译

  • ⭐️⭐️⭐️Gentoo 使用 Bash 脚本,不拆分软件包,支持构建选项,支持交叉编译

  • ⭐️⭐️NixOS 使用 Nix 语法,不拆分软件包,支持构建选项,支持交叉编译

  • Guix 使用 Scheme 语法,相当复杂,不拆分软件包,支持构建选项,支持交叉编译

总结来说,Void Linux 和 Gentoo Linux 更合我个人口味:

  1. Void Linux 的 xbps-src 和 Gentoo Linux 的 Portage 都很简洁,后者更规范更高级(也更复杂点);

  2. Chimera Linux 结合了 Alpine、FreeBSD/NetBSD/OpenBSD、Void Linux 的味道,也有点意思;

  3. NixPkgs 收录的软件包超级多,而且 Nix 的设计非常独特,值得玩玩;

  4. Slackware 由 Patrick 本科毕业后维护近三十年,发行版构建的非常直(tu)白(bie),很有老派 Unix 味道,可堪怀旧;

  5. ArchLinux 则介于 Slackware 和 Void Linux/Gentoo Linux 之间,没有 Slackware 土鳖,也没 Void/Gentoo 高级,当然反过来说,也是个挺好玩的发行版;

  6. Fedora/openSUSE 的 spec 单文件派以及 Debian/Ubuntu 的 debian/* 一大坨派,从普通开发者角度看,其实都不太讨喜,但前者有商业撑腰,后者有社区撑腰,依然红的发紫,只是使用而不做发行版二次开发的话,还是强力推荐 Debian 的;

  7. 几个 BSD 的 ports 里,FreeBSD 和 OpenBSD 比较简洁,NetBSD 的 pkgsrc 比较复杂,但个人不太喜欢用 Makefile 来做软件打包脚本,还是 Bash、Python 这种普通脚本语言更直白点。