[Feelings & Sharing] 【水】写了一个运行AppImage的abl脚本
Tofloor
poster avatar
enforcee
deepin
2023-06-25 07:44
Author

首先随便谈一些事情:

其实楼主是不太看好AppImage这种打包形式的,因为实际上AppImage没能根本解决依赖问题,虽然他自带了大量依赖库,照样有「找不到依赖」和「版本不兼容」的弊病(而且还可能出现内置动态库和系统动态库不兼容的问题),体积也大,也没有flatpak那么前卫,况且类似的功能不用AppImage也能完成(像blender或者firefox那种压缩包的便携软件也足够好用)。如果大家经常看我的帖子,各种依赖问题都应该能迎刃而解,只要这样或那样操作就好了(水)。难度最大的glibc问题除了手动操作之外我也做了「附加基础库」这样的简便方法。楼主做了这个小东西以后,以为各种glibc的事应该不成问题了,但是确实像AppImage这样的不能这样运行,因为AppImage需要挂载文件系统,但是bubblewrap这种容器里面要想允许挂载必须再用root权限加操作,就违背了简单实用的主题。

我一开始是不想做这个东西的,因为这个脚本和ablrun比起来显得很粗糙,有各种各样诡异的黑魔法操作,但是好在他能运行。对于各种动态库问题而言,我还是十分推荐把AppImage解包以后操作,其实一点都不麻烦(而且还可以自己删减里面的动态库)。虽然我有点担心这个脚本能不能稳定,但是还是发出来给大家看看,万一能解决什么问题呢。

暂时只给有经验的用户使用,如果大家觉得有用,之后给他打包到「附加基础库」里面去。需要先安装「附加基础库」,用法: 脚本位置.sh appimage应用 [选项]

ablimage.sh 内容:

#!/usr/bin/bash

ABLIMAGE_PARAMETERS=("$@")

$1 --appimage-mount >/tmp/ablimage_dir &

ABLIMAGE_PID=$!

cleanup() {
    kill $ABLIMAGE_PID
    exit
}
trap cleanup SIGHUP
trap cleanup SIGINT
trap cleanup SIGTERM

ABLIMAGE_DIR_WC=0
while [ "$ABLIMAGE_DIR_WC" != 25 ]
do
    ABLIMAGE_DIR_WC=`cat /tmp/ablimage_dir | wc -m`
    if [ ! -e /proc/$! ]
    then
        exit
    fi
    if [ ! -e /tmp/ablimage_dir ]
    then
        cleanup
    fi
done

ABLIMAGE_DIR=`cat /tmp/ablimage_dir`

ablrun $ABLIMAGE_DIR/AppRun ${ABLIMAGE_PARAMETERS[@]:1}

cleanup
Reply Favorite View the author
All Replies
enforcee
deepin
2023-06-25 07:47
#1

顺便说个小知识,查看AppImage的内置选项:

appimage文件 --appimage-help

Reply View the author
阿尼樱奈奈
Moderator
2023-06-25 07:48
#2

like

Reply View the author
神末shenmo
deepin
Spark-App
2023-06-25 07:52
#3

那个,其实可以去给a2d提pr,加一个ablrun的选项,或者默认ablrun

https://gitee.com/deepin-community-store/appimage2deb

Reply View the author
enforcee
deepin
2023-06-25 08:10
#4
神末shenmo

那个,其实可以去给a2d提pr,加一个ablrun的选项,或者默认ablrun

https://gitee.com/deepin-community-store/appimage2deb

在那之前我也许应该先创建一个additional-base-lib的源

sad

做什么都需要时间啊。可是我很懒惰。

Reply View the author
青稚
Moderator
2023-06-25 12:27
#5

来了,来了。

Reply View the author
jjcui8595
deepin
2023-06-25 14:37
#6

大神威武like

Reply View the author
神末shenmo
deepin
Spark-App
2023-06-25 16:18
#7
enforcee

在那之前我也许应该先创建一个additional-base-lib的源

sad

做什么都需要时间啊。可是我很懒惰。

我的意思是直接改这个会比较简单啦~

abl的源可以直接用我的better dde源的基础设施,或者其实直接用星火仓库就行

Reply View the author
enforcee
deepin
2023-06-25 18:28
#8

大家有什么问题应该提出来,我此前都不知道AppImage运行不了

sweat

肯定有人试过的吧

Reply View the author