0

我想发布我用 ruby​​ 语言编写的程序,我需要先将 ruby​​ 打包到 appimage 文件并发送到我的客户端 ubuntu PC。

所以我创建文件夹“ruby-img”,然后将“/app/ruby”文件夹中我编译的ruby复制到“ruby-img/app/ruby”,然后创建一个链接为“ln -r -s app/ruby” /bin/ruby usr/bin/。” 在“ruby-img”文件夹中。

然后我创建桌面文件并将png文件放入“ruby-img”,使用appimagetool创建ruby-x86_64.AppImage。遗憾的是它无法运行,AFAIK ruby​​.AppImage 仍在使用 /app/ruby/lib 文件夹来查找一些 ruby​​ 库,但不在“ruby-img/app/ruby/lib”相关文件夹中。

所以我尝试将 ruby​​ 重新编译为 --prefix=/tmp/ruby 或 --prefix=/usr/local/ruby,然后将它们复制到“ruby-img/usr/local/ruby”或“ruby-img/tmp /ruby" 然后是上面的一些链接,然后重新打包到 AppImage 但 ruby​​.AppImage 仍然无法正常工作......

有什么想法可以帮助我吗?

4

1 回答 1

0

AppImages 包含一个文件系统,其中包含您提供的所有内容以及一个小的可执行存根,它将挂载 AppImage 文件系统,然后运行 ​​AppRun 可执行文件以在其中找到。

了解这些知识后,在根目录中提供可执行文件以及 .desktop 和图标文件非常重要。我建议你不要自己创建 AppRun。使用来自https://github.com/AppImage/AppImageKit/releases/tag/continuous的预编译版本(不要忘记将其重命名为“AppRun”)。

现在,当调用此 AppRun 时,它将执行一些检查,cd 进入 /usr 目录并尝试启动 .desktop 文件中指定的可执行文件。检查它的源代码,您可以看到它还设置了一些环境变量。

因此,最好将入口点提供为 /usr/bin/ruby.sh 并将其注册到桌面文件中。请记住,如果 /usr/bin/ruby.sh 被调用,当前工作目录是 /usr。因此 ruby​​.sh 可以设置更多的环境变量,例如 LD_LIBRARY_PATH 以便实际加载您为 /usr/lib 配置的库。

有了这个,我希望你至少能像我一样取得成功。

于 2022-01-26T19:49:27.747 回答