由于特定原因,我必须使用apt-get
(不下载和编译源代码)将我的GCC降级到2.x版。
那可能吗?如果是,我如何找到存储库地址并通过它安装apt-get
?
提前致谢。
由于特定原因,我必须使用apt-get
(不下载和编译源代码)将我的GCC降级到2.x版。
那可能吗?如果是,我如何找到存储库地址并通过它安装apt-get
?
提前致谢。
Answers:
对于所有实际意图和目的,你所要求的是不可能的,并在接下来的几段中解释为什么,以及一些潜在的解决方法。
虽然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上找到,因为它们在这一点上完全没有维护。
debootstrap(https://wiki.debian.org/Debootstrap)似乎仍然可以安装etch,从而可以构建一个工作chroot,在其中你将能够编译和运行旧软件。
鉴于安全隐患,长期解决方案必须是更新代码,以便尽快在现有的,当前支持的发行版上进行编译。除非所讨论的软件用于一次性目的,例如从旧版本的程序中恢复数据,否则这绝对是至关重要的。
使这个移植过程易于管理的可行解决方案可能是在最终更新最新的Ubuntu版本的代码之前,逐步推进,前进并修复每个介入Debian版本的编译问题。由于Debian的发布周期比Ubuntu长得多,并且具有良好的向前兼容性,因此这不应该是一个不可克服的任务,并且几乎肯定比将gcc 2.x移植到最新的Ubuntu更可行。
编辑:蚀刻实际上是很多移植工作的完美之选 - 它支持从2.95到4.1的gcc版本,从而可以通过小步骤更新旧代码。