我有一个程序在 Ubuntu 16.04 LTS 上运行,该程序将在 2 个月后停产。该程序是使用 QT4 的 Python 2 应用程序。它工作得很好,我想把它移到 Ubuntu 20。不太快,Python2 和 QT4 都不再受到官方支持。好的,我可以使用一些非官方存储库,并可能设法安装那些缺失的部分。但到 2025 年(Ubuntu 20 支持结束)我也会遇到同样的情况,安装过时的库会更糟糕。
由于该程序的性质,其内容永远不会过期,我希望能够在未来 50 年内使用它。我一直相信开源,但现在我发现,访问源代码并不是一切。作者很可能不会将其转换为 Python3/QT5(过去 4 年里他没有更新),但即使他这样做了,这也不是一个真正的解决方案,因为总有一天 QT5 和 Python3 将停止受到支持。
我尝试使用两种不同的方法将 python 编译为二进制文件。它在某种程度上可以工作,但是与作为 python2 应用程序运行时的 1 秒相比,程序启动速度非常慢(30 秒)。此外,这样编译的二进制文件(使用 Ubuntu 16)是否可以在未来几十年内适用于 Ubuntu 的所有下一个 LTS 版本(glibc 依赖项等)?
我希望有一些创造性的想法来解决这个问题,谢谢!
答案1
当我与一家有此类要求的公司合作时,他们对大约 100 年感兴趣。说实话,50年和100年的差距似乎并没有那么大。对未来的任何押注都将是错误的。所以我对告诉你的任何建议都非常怀疑这或者那仍然会在附近。
我工作的公司更感兴趣的是他们创建的内容是否可以在 100 年后供人们阅读。为此,他们几乎接受了这样的事实:他们无法拥有任何在该时间范围内仍然可以运行的软件。
相反,重点更多地在于使文件格式易于阅读、有据可查、开放,并且如果可能的话可以不言自明。
对于他们来说,这导致他们将所有内容存储在开放的 XML 标准中,并且仅使用 SQL 数据库作为二级索引。他们承认软件会随着时间的推移而改变,但至少他们可以控制文件格式,这意味着总有办法让新软件兼容。
在保持软件活力方面,基于 Web 的软件 GUI 的生存能力比任何与特定桌面环境或平台库相关的软件都要好一些。 HTML 始于 1993 年,尽管发生了许多变化,但仍然向后兼容其最简单的功能。
如果您现在要移植您的软件,那么将其移植到基于 Web 的选项可能会更好。
但确实无法预测什么会幸存。我是说谁还记得fortran?
当软件变得非常旧时(我支持的最古老的软件已经有大约 20 年了)。最后的手段是接受你无法升级(再次)的事实,并尝试尽可能长时间地保持其运行的物理盒子处于活动状态。在某些行业中,这是一种令人惊讶的常见策略(参见“为什么今天的航天器仍然运行在 20 世纪 90 年代的处理器上”)。
正如 Muru 在评论中指出的那样,尽早在虚拟机中设置此功能是值得的。不久前,我看到一个这样的“黑匣子服务器”出现了硬盘故障,并且花了一年多的时间才尝试让另一台服务器运行旧版本的 Linux。
还要记住,安全可能是一个问题。由于无法修补软件的安全漏洞,您需要将其保持整齐的防火墙,以防出现另一个漏洞心血。
但最终你已经找到了主要问题。图书馆失去支持。操作系统通常与旧编译的库不兼容。最终CPU 已达到使用寿命并且无法保证您能够获得替代品。