如何在 2020 年在 Linux 上运行 Netscape?
这是为了我的一个项目,也是为了怀旧。
我已经下载了最新的netscape navigator 9.0 i386并解压,但无法启动。
./navigator ./navigator-bin:加载共享库时出错:libgtk-x11-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录
我怎样才能让它工作?我需要码头工人还是什么?
我使用的是 arch linux 64 位。
答案1
用于ldd
查看可执行文件期望看到的内容。查明所有缺失的库并:
- 尝试找到为您的发行版提供库文件的数据包,并尝试下载并安装它们。
- 如果缺少确切的版本,请尝试将确切文件名的假符号链接链接到与其最相似的 .so 库。
- 如果您仍然找不到类似的东西,请查找包含该过时库的 deb/rpm/无论什么数据包并手动安装它(您可能只想查看 deb/rpm 内部
mc
并复制您需要的这个文件。在这种情况下,您可能会遇到 .so 没有其他 .so 进行编译的情况,因此您可能需要从 1 开始此过程。对于那个特定的图书馆。 - 如果失败(经过足够的工作,它应该可以工作 - 32/64 内核的系统调用多年来没有改变 - 这是整个 Linux 内核的兼容性问题),您可能需要安装运行它的旧 Linux 发行版并静态编译该库,甚至整个 Netscape 包,并在新系统上使用这个静态链接文件。
- 相反,您可以在新系统上使用支持该产品的旧系统中的源代码包,并在新系统上构建(并链接到新库)。
- 如果由于某种原因这不起作用,请查找或构建具有所需产品的 Docker 容器 - 这确实应该是可行的方法,因为 Docker 正是为此目的而创建的。
这应该能让你继续前进。大多数情况下,我需要运行一些缺少库的旧二进制 blob,一个假的符号链接(我通常将它们放在 /use/local/lib/fake 中以跟踪它们)通常可以解决问题,但有时我确实运行变成缺失的符号。还要注意 64/32 位差异。 64 位 x86 代码与 32 位 x86 完全不同。另一个问题可能是像 Netscape 这样的包有许多二进制文件,其中大多数需要使用ldd
.
(顺便说一句 - 这真的是怀旧,而不是纯粹的需要吗?)
答案2
您需要 i686 版本的 GTK2 库。您还没有指定您的发行版,因此很难说如何安装它。
在 Fedora 33 中,这将是:
dnf install gtk2.i686
对于 Ubuntu/Debian/Mint/等。这可能会起作用:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libgtk2.0-0:i386