AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1367231
Accepted
raj
raj
Asked: 2021-10-04 13:05:47 +0800 CST2021-10-04 13:05:47 +0800 CST 2021-10-04 13:05:47 +0800 CST

我想运行一个旧的 GNOME 应用程序

  • 772

我知道我想做的事情有点不寻常,但我需要在 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 之间。

20.04
  • 2 2 个回答
  • 287 Views

2 个回答

  • Voted
  1. drpjkurian
    2021-10-04T17:35:47+08:002021-10-04T17:35:47+08:00

    由于依赖性问题,您将破坏操作系统。因此我建议:从这里下载 Ubuntu 10.04 。将其安装在 VM 容器中并在其中运行应用程序。

    • 0
  2. Best Answer
    raj
    2021-10-05T11:45:49+08:002021-10-05T11:45:49+08:00

    我能够解决这个问题。问题在于,除了常规的 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 包,如果我只知道怎么做的话:))

    1. 为旧的 gThumb 应用程序创建一个目录,例如/opt/gthumb_old.
    2. 从 64 位 Ubuntu 10.04 的工作安装中,将以下文件复制到/opt/gthumb_old(我有这样的安装可用;如果它不可用,您需要识别包含这些文件的包,下载它们并提取文件,这需要更多工作):
    /usr/bin/gthumb
    /usr/lib/gthumb/libgthumb.so
    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
    /usr/lib/glade/2.0/libbonobo.so
    /usr/lib/glade/2.0/libcanvas.so
    /usr/lib/glade/2.0/libgnome.so
    /usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
    /usr/lib/libart_lgpl_2.so.2
    /usr/lib/libaudiofile.so.0
    /usr/lib/libbonobo-2.so.0
    /usr/lib/libbonobo-activation.so.4
    /usr/lib/libbonoboui-2.so.0
    /usr/lib/libcanberra-gtk.so.0
    /usr/lib/libcanberra.so.0
    /usr/lib/libesd.so.0
    /usr/lib/libfam.so.0
    /lib/libgcrypt.so.11
    /usr/lib/libglade-2.0.so.0
    /usr/lib/libgnome-2.so.0
    /usr/lib/libgnomecanvas-2.so.0
    /usr/lib/libgnome-keyring.so.0
    /usr/lib/libgnomeui-2.so.0
    /usr/lib/libgnomevfs-2.so.0
    /usr/lib/libgnutls.so.26
    /usr/lib/libhal-storage.so.1
    /usr/lib/libhal.so.1
    /usr/lib/libiptcdata.so.0
    /usr/lib/libopenrawgnome.so.1
    /usr/lib/libopenraw.so.1
    /usr/lib/libORBit-2.so.0
    /usr/lib/libORBitCosNaming-2.so.0
    /lib/libpng12.so.0
    /usr/lib/libtasn1.so.3
    /usr/lib/libtiff.so.4
    

    上面的/usr/lib/*.so.*or/lib/*.so.*文件是指向其他文件的符号链接,因此您当然必须复制链接指向的文件,但目标名称应该是链接之一。(如果您使用cp或scp复制上述名称,则不必担心这一点,因为这会自动发生。)

    您还需要符号链接 /usr/lib/x86_64-linux-gnu/libjpeg.so.8到libjpeg.so.62in /opt/gthumb_old。应用程序希望链接到libjpeg.so.62但从 Ubuntu 10.04 复制的原始libjpeg.so.62库无法正常工作并且 JPEG 文件不显示;所以我们将使用现有的系统库来代替。

    1. 创建一个目录/opt/gthumb_old/glade并将 Ubuntu 10.04 安装的内容复制/usr/share/gthumb/glade到该目录。

    2. 创建一个目录/opt/gthumb_old/modules并将 Ubuntu 10.04 安装的内容复制/usr/lib/gthumb/modules到该目录。

    3. 创建一个目录/opt/gthumb_old/vfs_modules并将 Ubuntu 10.04 安装的内容复制/usr/lib/gnome-vfs-2.0/modules到该目录。

    4. 创建一个目录/opt/gthumb_old/modules_conf并将 Ubuntu 10.04 安装的内容复制/etc/gnome-vfs-2.0/modules到该目录。

    5. .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 会有点失真)。如果您没有安装 Adob​​e Reader 9(Linux 的最后一个可用版本),您可以跳过中间x86_64-pc-linux-gnu子目录并将文件放在.gtk-2.0/engines. 但是如果你安装了 Adob​​e Reader(像我一样),它需要一个 32 位版本的文件libmurrine.so,它应该位于.gtk-2.0/i686-pc-linux-gnu/engines,因此最好使用“更长”的版本。

    6. 创建一个/usr/share/gthumb/glade指向/opt/gthumb_old/glade.

    7. 创建一个/usr/lib/gthumb/modules指向的符号链接/opt/gthumb_old/modules(该目录/usr/lib/gthumb在 Ubuntu 20.04 的标准安装中不存在,因此您必须先创建它)

    8. 创建一个/usr/lib/gnome-vfs-2.0/modules指向的符号链接/opt/gthumb_old/vfs_modules(该目录/usr/lib/gnome-vfs-2.0在 Ubuntu 20.04 的标准安装中不存在,因此您必须先创建它)

    9. 创建一个/etc/gnome-vfs-2.0/modules指向的符号链接/opt/gthumb_old/modules_conf(该目录/etc/gnome-vfs-2.0在 Ubuntu 20.04 的标准安装中不存在,因此您必须先创建它)

    10. 创建一个/opt/gthumb_old/gvfsd_wrapper包含以下内容的脚本(文件必须是可执行的):

    #!/bin/sh
    GVFSD_DIR=`/usr/bin/dirname $0`
    LD_LIBRARY_PATH=${GVFSD_DIR} ${GVFSD_DIR}/gnome-vfs-daemon
    
    1. 将文件从 Ubuntu 10.04 复制到 Ubuntu 20.04 ( )/usr/share/dbus-1/services/gnome-vfs-daemon.service上的同一目录,然后按如下方式进行编辑。原始文件有以下内容:/usr/share/dbus-1/services
    [D-BUS Service]
    Name=org.gnome.GnomeVFS.Daemon
    Exec=/usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
    

    将其更改为:

    [D-BUS Service]
    Name=org.gnome.GnomeVFS.Daemon
    Exec=/opt/gthumb_old/gvfsd_wrapper
    
    1. 最后,创建一个脚本/usr/local/bin/gthumb_old来运行应用程序:
    #!/bin/sh
    LD_LIBRARY_PATH=/opt/gthumb_old /opt/gthumb_old/gthumb
    

    (您也可以参考此脚本在菜单或 GNOME 面板中创建启动器)。

    该应用程序与 Ubuntu 20.04 中的现有 gThumb 3.8.0 不冲突,因为它将其配置数据存储在不同的位置。两者都可以独立使用,但是下面描述了一个可能的问题。

    请注意,应用程序在一个图像目录中崩溃,该目录的.comments子目录包含由较新版本的 gThumb 创建的评论。因此,万一进入某个目录后应用程序崩溃,您应该删除该子目录.comments。

    我还发现了一个带有两个特定图像文件的奇怪案例(我有几千个)。应用程序在一个目录中崩溃,该目录包含指向另一个目录中这两个文件的符号链接(当我用文件或硬链接的副本替换符号链接时,没有崩溃 - 它仅发生在这两个文件上)。如果您的图像目录中没有任何符号链接,则不应出现此问题。

    工作应用程序的最终屏幕截图:

    在此处输入图像描述

    • 0

相关问题

  • 如何在 18.04..20.04 上设置本地通配符 (127.0.0.1) 域解析?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve