我知道我想做的事情有点不寻常,但我需要在 Ubuntu 20.04 上运行一个相当旧版本的 gThumb(2.10.11,来自 Ubuntu 10.04)。
(有人在评论中问我为什么,所以这里解释一下:旧版本有一个非常好的幻灯片模式,它提供了Ubuntu 20.04中当前版本的gThumb不提供的几个功能。其中包括:1)选项“仅适用于较大图像的屏幕”在幻灯片模式下工作;2) GIF动画以幻灯片方式播放;3) 快捷键“I” - 显示有关当前图像的信息 - 在幻灯片模式下工作。所有这些在当前的 gThumb 中都不起作用)。
到目前为止,我设法将运行此应用程序所需的所有旧库收集到一个目录中(因此满足所有依赖项),应用程序启动并出现 GUI(下面的屏幕截图)。但是,该应用程序无法与当前的 GNOME VFS 守护程序通信,因此不会加载文件夹内容,因此实际上无法使用。终端中出现以下错误消息:
(gthumb:13485): libgnomevfs-WARNING **: 13:34:54.800: Failed to activate daemon: The name org.gnome.GnomeVFS.Daemon was not provided by any .service files
新旧 GNOME VFS 守护程序之间肯定存在一些不兼容,应用程序无法与之通信。有什么办法可以解决这个问题并让应用程序在我的系统上运行——例如,让应用程序不使用 VFS,而是直接从磁盘读取?(除了必须自己重建应用程序,因为我认为这不可行)
由于问题与 VFS 有关,我尝试用libgnomevfs-2.so.0
我能找到的最新库替换我从 Ubuntu 10.04 复制的库,即来自 Ubuntu 18.04(20.04 没有libgnomevfs-2.so.0
可用的库)。但是,效果是一样的。所以对 VFS 的更改一定发生在 18.04 和 20.04 之间。
由于依赖性问题,您将破坏操作系统。因此我建议:从这里下载 Ubuntu 10.04 。将其安装在 VM 容器中并在其中运行应用程序。
我能够解决这个问题。问题在于,除了常规的 GNOME VFS 守护程序(
/usr/libexec/gvfsd
或/usr/lib/gvfs/gvfsd
在旧版本的 Ubuntu 中)之外,gThumb 使用了另一个守护程序,直到 Ubuntu 18.04 -/usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
。Ubuntu 20.04 中不再存在此守护进程,因此旧的 gThumb 无法访问磁盘上的文件/文件夹。需要将守护进程复制到 Ubuntu 20.04,以便应用程序可以使用它。使应用程序运行的完整解决方案如下(这很长,可能除了我之外没有人对此感兴趣,但是当我解决问题时我发布了答案,也许将来有人可以使用它:)):
(顺便说一句。我想所有这些都可以做成一个 AppImage 包,如果我只知道怎么做的话:))
/opt/gthumb_old
./opt/gthumb_old
(我有这样的安装可用;如果它不可用,您需要识别包含这些文件的包,下载它们并提取文件,这需要更多工作):上面的
/usr/lib/*.so.*
or/lib/*.so.*
文件是指向其他文件的符号链接,因此您当然必须复制链接指向的文件,但目标名称应该是链接之一。(如果您使用cp
或scp
复制上述名称,则不必担心这一点,因为这会自动发生。)您还需要符号链接
/usr/lib/x86_64-linux-gnu/libjpeg.so.8
到libjpeg.so.62
in/opt/gthumb_old
。应用程序希望链接到libjpeg.so.62
但从 Ubuntu 10.04 复制的原始libjpeg.so.62
库无法正常工作并且 JPEG 文件不显示;所以我们将使用现有的系统库来代替。创建一个目录
/opt/gthumb_old/glade
并将 Ubuntu 10.04 安装的内容复制/usr/share/gthumb/glade
到该目录。创建一个目录
/opt/gthumb_old/modules
并将 Ubuntu 10.04 安装的内容复制/usr/lib/gthumb/modules
到该目录。创建一个目录
/opt/gthumb_old/vfs_modules
并将 Ubuntu 10.04 安装的内容复制/usr/lib/gnome-vfs-2.0/modules
到该目录。创建一个目录
/opt/gthumb_old/modules_conf
并将 Ubuntu 10.04 安装的内容复制/etc/gnome-vfs-2.0/modules
到该目录。.gtk-2.0/x86_64-pc-linux-gnu/engines
在您的目录中创建一个子目录/home/username
并将文件/usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
从 Ubuntu 10.04 复制到此目录。这是正确显示菜单和其他 UI 小工具所必需的(应用程序将在没有此文件的情况下工作,但 UI 会有点失真)。如果您没有安装 Adobe Reader 9(Linux 的最后一个可用版本),您可以跳过中间x86_64-pc-linux-gnu
子目录并将文件放在.gtk-2.0/engines
. 但是如果你安装了 Adobe Reader(像我一样),它需要一个 32 位版本的文件libmurrine.so
,它应该位于.gtk-2.0/i686-pc-linux-gnu/engines
,因此最好使用“更长”的版本。创建一个
/usr/share/gthumb/glade
指向/opt/gthumb_old/glade
.创建一个
/usr/lib/gthumb/modules
指向的符号链接/opt/gthumb_old/modules
(该目录/usr/lib/gthumb
在 Ubuntu 20.04 的标准安装中不存在,因此您必须先创建它)创建一个
/usr/lib/gnome-vfs-2.0/modules
指向的符号链接/opt/gthumb_old/vfs_modules
(该目录/usr/lib/gnome-vfs-2.0
在 Ubuntu 20.04 的标准安装中不存在,因此您必须先创建它)创建一个
/etc/gnome-vfs-2.0/modules
指向的符号链接/opt/gthumb_old/modules_conf
(该目录/etc/gnome-vfs-2.0
在 Ubuntu 20.04 的标准安装中不存在,因此您必须先创建它)创建一个
/opt/gthumb_old/gvfsd_wrapper
包含以下内容的脚本(文件必须是可执行的):/usr/share/dbus-1/services/gnome-vfs-daemon.service
上的同一目录,然后按如下方式进行编辑。原始文件有以下内容:/usr/share/dbus-1/services
将其更改为:
/usr/local/bin/gthumb_old
来运行应用程序:(您也可以参考此脚本在菜单或 GNOME 面板中创建启动器)。
该应用程序与 Ubuntu 20.04 中的现有 gThumb 3.8.0 不冲突,因为它将其配置数据存储在不同的位置。两者都可以独立使用,但是下面描述了一个可能的问题。
请注意,应用程序在一个图像目录中崩溃,该目录的
.comments
子目录包含由较新版本的 gThumb 创建的评论。因此,万一进入某个目录后应用程序崩溃,您应该删除该子目录.comments
。我还发现了一个带有两个特定图像文件的奇怪案例(我有几千个)。应用程序在一个目录中崩溃,该目录包含指向另一个目录中这两个文件的符号链接(当我用文件或硬链接的副本替换符号链接时,没有崩溃 - 它仅发生在这两个文件上)。如果您的图像目录中没有任何符号链接,则不应出现此问题。
工作应用程序的最终屏幕截图: