记录一个被代码困住的人

从最开始到这个实验室的时候我就被震惊了,被这个还在使用 SunOS 5.10 的实验室震惊了,我没有想过还会有人用 sparc 框架的服务器作为他的主要数据存储和处理设备。

Linux is not good enough

最开始我很好奇这个问题,得到的答复是他们也曾尝试过 Linux 但是 『 Linux is not good enough 』。

后来我发现正在使用 binary 竟然是某软件包在 1993 年版本的一个已经被淘汰的 binary,虽然最新版本的是 2016 年的,但是也是相差了 23 年,而且这个软件包包含多个独立的 binary 并且后期的版本已经淘汰了部分独立的 binary,更糟糕的是无法兼容早期输出的数据库格式,新 binary 已经不能够支持打开那些若干年工作的产物了。

这和这个软件包的历史分不开的,这个软件包早期由 Medicine Research Center 研发,早期并没有使用他们后来所采用的 BSD Licensen 所以自然而然就没有开源,直到 2004 年才采用 BSD License 去分发 2003 年的 release,而在 2004 年的网站上最早也只有 1995 年的版本的 release note。并且 1995 年的包描述里就已经没有了目前正在使用的 binary,这个 release 距离实验室服务器上运行的才仅仅相差两年。

而促使我导师说 『 Linux is not good enough 』的一个很重要原因是 sparc 框架的 binary 无法运行在 x86 框架下,同时 1993 年的版本也是不开源的。

The Unix server will be closed soon

但是导师却十分坚持使用那些 1993 年的 binary,这就造成一些问题,在我入学几个月后,学校通知学校那台老到不行的 SunOS 服务器要停止运行了,很快就要 go to the bin。

写稿件的时候, VNC 服务已经停止,仅仅能通过 Xephyr 苟延残喘使用一些很基础的功能,而很早以前,就因为 SSH 是 Sun SSH 1.1.4 (SSH protocols 1.5/2.0, OpenSSL 0x0090704f) 版本的问题,一般使用当今较新版本的 openssh 是直接连接不上,需要很多参数,而另一个用户,因为版本问题或者 SSH 设置问题已经不能够使用 SSH 登陆了。

但是要想更新也是很难的,SunOS 5.10 在 1999 年4 月就停止支持了,所以想升级也是很难的。这就造成了各种各样的问题。

除了基础使用,目前还在使用的另一大软件,是美国某大学开发的,没有 License,但是在 2003 年由另外一个大学的三个人修改了代码释放出来了一个 Linux 可以使用的版本,但是2008 年就下线了,也是因为年代过于久远,使用当时的 binary 和 lib 已经无法让软件运行了。

自然而然,我导师也就更会觉得迁移服务器是一个很不太可能的事情,但是事到如今,也没有办法,只好接受

结语

我在想如果有很多如果,今天的事情也就不会发生了。如果他能够在 1990s 跟随上游更新软件,那么就不需要重做那么多事情了。如果他能够在早期使用/切换到有良好社区支持的开源软件,或许就不会有今天迁移服务器额的苦恼。如果他能够在 SunOS 停止支持后,立马忍痛割爱,或许就不会有今天那么多 VNC SSH 等基础软件的问题了。

可惜没有如果,当初选择的时候,就要做好承担风险的心理准备。这也活生生给我上了一课,服务器并不是不更新、稳定就好,软件也不是能用就好,对于工具的选择有时候需要用长远安全的眼光去看待,也要能够接受时代潮流。