解决方法

解决方法

由于特定原因,我必须使用apt-get(不下载和编译源代码)将我的 GCC 降级到版本 2.x。

这可能吗?如果可以,我该如何找到存储库地址并通过 进行安装apt-get

提前致谢。

答案1

从所有实际意图和目的来看,您所要求的是不可能的,并且在接下来的几段中将解释原因并提出一些潜在的解决方法。

虽然 gcc、glibc、Linux 内核和其他各种系统库的耦合程度不如 FreeBSD 或 OpenBSD 中那么紧密,但它们确实在并行演进。由于最后一批支持 gcc 2.95 的版本在 2005 年不再受内核支持,因此核心系统库也不再支持它。

仅仅将 2.x 版本的 gcc 安装到现代系统上就会是一个重大障碍,因为涉及到所有依赖项 - 它依赖于 Linux 社区很久以前就不再使用的旧版本的系统库,从而产生了“依赖地狱”的情况,甚至从源代码安装也是如此,更不用说尝试从软件包安装 - 仅依赖项就可能迫使您降级十几代或更多的 Linux 发行版,降级到不仅不再受支持而且非常不安全的版本。

安装 gcc 后,您仍需面对编译应用程序的问题 - 系统库的改变与 gcc 一样多或更多,因此您必须再次经历这个过程,以解决数十个甚至数百个其他依赖项。当然,所有这些依赖项都已在系统的其他地方使用,因此没有合理的方法来安装它们的正确版本。

您可能需要花费数千甚至数十万小时的工作时间才有机会让所有部分重新运转起来,在此过程中,您可能会将系统变成难以维护且不稳定的系统,甚至重新启动系统也是盲目的,并且您会将十多年的严重安全漏洞重新引入到系统中。

解决方法

但一切希望还没有破灭。短期解决方案是 chroot 或虚拟化。https://stackoverflow.com/questions/8176798/installing-gcc-2-95-3-in-ubuntu-10-04-3提到 Debian Etch 是最后支持 gcc 2.95 的发行版之一。应该可以构建 Debian Etch 的 chroot 或虚拟机。该发行版最后一次获得安全支持是在 2010 年,因此您仍然会看到 4 年来积累的安全漏洞。

您需要的旧版 Debian 只能在以下网址找到:https://archive.debian.org/debian因为它们目前完全没有得到维护。

解引导(https://wiki.debian.org/Debootstrap) 似乎仍然能够安装 etch,从而可以构建一个可用的 chroot,您将能够在其中编译和运行旧软件。

考虑到安全隐患,长期解决方案必须是尽快更新代码,使其能够在当前支持的现代发行版上编译。除非所讨论的软件用于一次性用途(例如从旧版本的程序中恢复数据),否则这一点绝对至关重要。

使此移植过程易于管理的可行解决方案可能是逐步推进,推进并修复每个中间 Debian 版本的编译问题,然后最终更新最新 Ubuntu 版本的代码。由于 Debian 的发布周期比 Ubuntu 长得多,并且具有良好的向前兼容性,因此这项任务应该不会太难,而且几乎肯定比将 gcc 2.x 移植到最新的 Ubuntu 更可行。

编辑:Etch 实际上非常适合大量的移植工作 - 它支持从 2.95 到 4.1 的 gcc 版本,从而可以小步骤地更新旧代码。

相关内容