[software development] 写了个GUI程序转化AppImage到Deb(符合deepin标准)
Tofloor
poster avatar
马小松
deepin
2024-11-25 15:07
Author

0 仓库

AppImage2Deb For Deepin

1 概述

一个以deepin标准把AppImage转化为deb的小工具。

ui

  • 需要以deepin标准输入参数(没做硬性限制,暂时没考虑健壮性);
  • 支持amd64和arm;
  • 不用提供icon和desktop文件,会解包并从中提取png和desktop文件并放到标准指定的位置;
  • 会根据填写的信息建包,计算包的大小,生成info、control文件;
  • 会将AppImage解包再打包成deb。

P.S. 你可以在这里找到大量AppImage程序,尝试转化为deb,从而丰富软件生态。

2 依赖

程序主要由仓库里的 src文件夹里两个脚本 main.py build.sh构成。

为了顺利运行 main.py ,需要先安装 PyQt5。可以使用 condavenv创建虚拟环境并安装 pyqt5

conda install pyqt5
pip3 install pyqt5

因为 build.sh 会被 main.py中的一个函数调用,为了正常运行 build.sh , 需要 bash 环境并且安装好 fakerootimagemagick

sudo apt install python3-pyqt5
sudo apt install fakeroot

3 运行

下载了我的程序后,在终端运行以下命令(/the/path/to需要自己替换成实际路径):

python3 /the/path/to/src/main.py

deb文件会放置在 /the/path/to/src

P.S. 只在deepin上测试过,其他发行版可能无法正常运行

4 总结

在学打deb包的时候,发现有坛友做了AppImage转deb的程序,我尝试了一下,发现打包后的deb缺失很多信息。

为了满足自己的强迫症,我就搓了一个小工具试试水,希望能帮到大家。

第一次写GUI程序没经验,使用过程中肯定是有很多没考虑到的问题,请大家多多担待。

P.S. 写GUI程序真折磨人,工程师们辛苦了

Reply Favorite View the author
All Replies
1 / 2
To page
流星追月
deepin
2024-11-25 15:17
#1

修改驱动,会违反著作权法吗?好奇问问。。。

Reply View the author
神末shenmo
deepin
Spark-App
2024-11-25 15:27
#2
Reply View the author
马小松
deepin
2024-11-25 16:20
#3

这个应该比我手搓的好多了。

之前用过一个转换器,好像是基于zenity的,生成的deb包缺了好多control信息。

Reply View the author
马小松
deepin
2024-11-25 16:21
#4
流星追月

修改驱动,会违反著作权法吗?好奇问问。。。

这个我不太清楚,驱动分开源的和闭源的吧,修改开源的驱动应该没问题。

Reply View the author
198******21
deepin
2024-11-25 16:38
#5

厉害,是在deepin的基础上研发的吗?

Reply View the author
buyike
deepin
2024-11-25 16:55
#6

这个和官方商店的有区别吗?

image.png

Reply View the author
流浪的加菲
deepin
2024-11-25 17:10
#7

我之前用这个,使用很简单(简陋)🤧

Reply View the author
璀璨星空
deepin
2024-11-25 17:38
#8

有把deb转换成AppImage不,dp的live里自带的那个磁盘工具不要用想用其它的,但是live里没法安装,寻思着能不能直接来一个AppImage格式的软件来用

Reply View the author
神末shenmo
deepin
Spark-App
2024-11-25 19:54
#9
马小松

这个应该比我手搓的好多了。

之前用过一个转换器,好像是基于zenity的,生成的deb包缺了好多control信息。

这个确实就是那个zenity的

为了投递方便,很多信息都是缺失的。能让用户选的,就不要让用户填;把不必要的都去掉,才能节省用户心智

为了投递,deb不需要那么全的信息,而且应用商店已经有详尽的信息展示了,没必要让用户重复填写


那个info文件只校验第一行的appid是否和package name 一致,别的都没用,可以整个去掉不让用户填写,自动生成就完了

deb只保留最基本的信息即可

Reply View the author
神末shenmo
deepin
Spark-App
2024-11-25 19:56
#10
buyike

这个和官方商店的有区别吗?

image.png

不是,官方那个咋400多M了?玲珑化了?这太荒谬了,这东西一共不到20k的,加上图标也就300k不到


官方的版本比较老,去年之后就没更新过了

Reply View the author
buyike
deepin
2024-11-25 20:10
#11
神末shenmo

不是,官方那个咋400多M了?玲珑化了?这太荒谬了,这东西一共不到20k的,加上图标也就300k不到


官方的版本比较老,去年之后就没更新过了

Reply View the author
神末shenmo
deepin
Spark-App
2024-11-25 20:12
#12

那个官方的版本是之前我搬砖的时候搞的,没更新也不影响用,后面加的功能是为了适配星火

这个荒谬在于使用了玲珑。。。这个包没有什么依赖的,没必要

但是并不是这一个包400多M,这个算上了玲珑的runtime,其他包可以复用的

Reply View the author
buyike
deepin
2024-11-25 20:14
#13
神末shenmo

那个官方的版本是之前我搬砖的时候搞的,没更新也不影响用,后面加的功能是为了适配星火

这个荒谬在于使用了玲珑。。。这个包没有什么依赖的,没必要

但是并不是这一个包400多M,这个算上了玲珑的runtime,其他包可以复用的

晕,你这一说明白了,官方好大的坑。

Reply View the author
神末shenmo
deepin
Spark-App
2024-11-25 20:19
#14
buyike

晕,你这一说明白了,官方好大的坑。

仔细掰扯呢,是这个样子

这个包我打的时候适配的是deepin 20,所以官方丰富玲珑生态的时候就把它的依赖写成了deepin 20的runtime

如果依赖写的deeepin 23,那么这里的数字应该也和deb版本的差不多大,因为你本地已经装了23的runtime

实际上,这东西在deepin 23也能跑,所以我说这里荒谬,其实这个包不需要玲珑的,在哪都能跑

你可以试试找一个一样是适配了deepin 20的玲珑应用装一下,再刷新一下回来看,应该大小就和星火现在这个差不多了

图片.png

Reply View the author
马小松
deepin
2024-11-25 21:12
#15
神末shenmo

这个确实就是那个zenity的

为了投递方便,很多信息都是缺失的。能让用户选的,就不要让用户填;把不必要的都去掉,才能节省用户心智

为了投递,deb不需要那么全的信息,而且应用商店已经有详尽的信息展示了,没必要让用户重复填写


那个info文件只校验第一行的appid是否和package name 一致,别的都没用,可以整个去掉不让用户填写,自动生成就完了

deb只保留最基本的信息即可

涨知识了,原来info没啥用,那打包标准设置这个info是为了战未来了。

我的强迫症看见信息没填全就浑身难受,哈哈,都有点想在研究明白Debian的wiki后再整细一点。

后面我规定一下什么是必填项,什么是选填项,感觉这样可以折中一点。

Reply View the author
神末shenmo
deepin
Spark-App
2024-11-25 21:19
#16
马小松

涨知识了,原来info没啥用,那打包标准设置这个info是为了战未来了。

我的强迫症看见信息没填全就浑身难受,哈哈,都有点想在研究明白Debian的wiki后再整细一点。

后面我规定一下什么是必填项,什么是选填项,感觉这样可以折中一点。

没有未来了,未来是玲珑

这个info在deepin 25规划里也没有,大概率烂尾了

Reply View the author
马小松
deepin
2024-11-25 21:24
#17
神末shenmo

没有未来了,未来是玲珑

这个info在deepin 25规划里也没有,大概率烂尾了

明白了,官方文档也存在屎山现象。

Reply View the author
神末shenmo
deepin
Spark-App
2024-11-26 14:30
#18
马小松

明白了,官方文档也存在屎山现象。

不会将AppImage解包再打包,而是直接使用AppImage

这个过不了UOS的哈,那边要二进制签名

如果懒得弄的话,可以直接套一下这边的逻辑,重新写个前端就好

https://gitee.com/spark-store-project/appimage2deb/blob/master/appimage2deb/opt/durapps/a2d-packages/appimage2deb/AppRun

Reply View the author
马小松
deepin
2024-11-26 14:44
#19
神末shenmo

不会将AppImage解包再打包,而是直接使用AppImage

这个过不了UOS的哈,那边要二进制签名

如果懒得弄的话,可以直接套一下这边的逻辑,重新写个前端就好

https://gitee.com/spark-store-project/appimage2deb/blob/master/appimage2deb/opt/durapps/a2d-packages/appimage2deb/AppRun

感谢提醒,我自己研究一下解包再打包,重复造一下轮子,研究不明白再抱一下大佬的大腿。 kissing_heart

Reply View the author
商店运营-流云
deepin
2024-11-26 15:56
#20
神末shenmo

那个官方的版本是之前我搬砖的时候搞的,没更新也不影响用,后面加的功能是为了适配星火

这个荒谬在于使用了玲珑。。。这个包没有什么依赖的,没必要

但是并不是这一个包400多M,这个算上了玲珑的runtime,其他包可以复用的

这个deb包在23上不能用,包成玲珑之后可以打开,你要不更新下deb?

Reply View the author
1 / 2
To page