uos打包——appimage包转uos的deb包

这篇文章主要介绍appimage包如何转化为符合uos规范的deb包

一,获取appimage包并解压

1,本文档使用obsidian程序进行演示从appimage包改成uos的deb包的过程示例.

2,从obsidian官网下载appimage包

3,在桌面创建obsidian文件夹,将下载好的appimage包放到该目录

uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage
uos@uos-PC:~/Desktop/obsidian$ 

4,使用 --appimage-extract对appimage进行解包,解包完成的内容都放到了squashfs-root目录

uos@uos-PC:~/Desktop/obsidian$ chmod +x Obsidian-0.12.3.AppImage 
uos@uos-PC:~/Desktop/obsidian$ ./Obsidian-0.12.3.AppImage --appimage-extract
uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root
uos@uos-PC:~/Desktop/obsidian$ 

二,制作uos规范目录

1,uos规范目录可以参考官方其他文档,这里不做过多叙述

2,使用脚本来制作符合uos规范的目录,将脚本放到obsidian文件夹下,参考脚本如下

mkdir -p  test/DEBIAN/

echo  "----------------------创建control文件----------------------"
touch test/DEBIAN/control
read -p "(输入Package名):" package
read -p "(输入Version名):" version
read -p "(输入Architecture名):" architecture
read -p "(输入Section名):" section
read -p "(输入Maintainer名):" maintainer
read -p "(输入Depends名):" depends
read -p "(输入Homepage名):" homepage

cat>test/DEBIAN/control<<EOF
Package: $package
Version: $version
Architecture: $architecture
Section: $section
Maintainer: $maintainer
Depends: $depends
Priority: optional
Homepage: $homepage
Description: 欢迎使用$package
EOF

echo  "----------------------control文件创建完成----------------------"

mkdir -p  test/opt/apps/$package/entries/applications/
mkdir -p  test/opt/apps/$package/files/bin
mkdir -p  test/opt/apps/$package/entries/icons
touch  test/opt/apps/$package/info
echo  "----------------------创建info文件----------------------"
read -p "(输入name名):" name
cat > test/opt/apps/$package/info <<EOF
 {
	 "appid": "$package",
	 "name": "$name",
	 "version": "$version",
	 "arch": ["amd64","arm64","mips64el"],
	 "permissions": {
	     "autostart": false,
	     "notification": false,
	     "trayicon": false,
	     "clipboard": false,
	     "account": false,
	     "bluetooth": false,
	     "camera": false,
	     "audio_record": false,
	     "installed_apps": false
   }
 }
EOF
echo  "----------------------info创建完成----------------------"


echo "-----------------------desktop文件创建--------------------"
touch  test/opt/apps/$package/entries/applications/$package.desktop
read -p "(输入Comment):" comment
read -p "(输入Exec):" exece
read -p "(输入GenericName):" genericname
read -p "(输入Icon):" icon
read -p "(输入Name):" name
cat > test/opt/apps/$package/entries/applications/$package.desktop <<EOF
[Desktop Entry]
Categories=Utility;Calculator;
Comment=$comment
Exec=$exece
GenericName=$genericname
Icon=$icon
Name=$name
StartupNotify=true
TryExec=deepin-calculator
Type=Application
X-Deepin-ManualID=deepin-calculator
X-Deepin-Vendor=deepin
X-Deepin-TurboType=dtkwidget
EOF

3, 新建uos_standard.sh文件,将上边脚本复制到脚本文件,执行脚本,制作打包目录,按照要求的内容去填写,不确定的内容可以稍后修改,执行完成后会生成test文件夹

uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$ chmod +x uos_standard.sh 
uos@uos-PC:~/Desktop/obsidian$ ./uos_standard.sh 
----------------------创建control文件----------------------
(输入Package名):md.obsidian
(输入Version名):0.12.3
(输入Architecture名):amd64
(输入Section名):x11
(输入Maintainer名):uos uos@uniontech.com
(输入Depends名):
(输入Homepage名):https://obsidian.md/
----------------------control文件创建完成----------------------
----------------------创建info文件----------------------
(输入name名):obsidian
----------------------info创建完成----------------------
-----------------------desktop文件创建--------------------
(输入Comment):obsidian
(输入Exec):
(输入GenericName):obsidian
(输入Icon):
(输入Name):obsidian
uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root  test  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$

三,修改test目录

1,修改control文件

a,进入test/DEBIAN目录,因为这里不需要安装额外的依赖,所以将control文件中的Depends字段删除,不删除会影响测试。如果其他程序运行过程中发现需要依赖,可以在该字段填写。

b,修改前:

Package: md.obsidian
Version: 0.12.3
Architecture: amd64
Section: x11
Maintainer: uos uos@uniontech.com
Depends: 
Priority: optional
Homepage: https://obsidian.md/
Description: 欢迎使用md.obsidian

c,修改后:

Package: md.obsidian
Version: 0.12.3
Architecture: amd64
Section: x11
Maintainer: uos uos@uniontech.com
Priority: optional
Homepage: https://obsidian.md/
Description: 欢迎使用md.obsidian

2,修改bin目录

a,将squashfs-root目录下的所有文件移动到test/opt/apps/md.obsidian/files/bin/bin目录下

uos@uos-PC:~/Desktop/obsidian$ cp -r squashfs-root/* test/opt/apps/md.obsidian/files/bin/
uos@uos-PC:~/Desktop/obsidian$ ls test/opt/apps/md.obsidian/files/bin/
AppRun                  libffmpeg.so            locales           snapshot_blob.bin
chrome_100_percent.pak  libGLESv2.so            obsidian          swiftshader
chrome_200_percent.pak  libvk_swiftshader.so    obsidian.desktop  usr
chrome-sandbox          libvulkan.so.1          obsidian.png      v8_context_snapshot.bin
icudtl.dat              LICENSE.electron.txt    resources         vk_swiftshader_icd.json
libEGL.so               LICENSES.chromium.html  resources.pak
uos@uos-PC:~/Desktop/obsidian$

b,修改bin目录下chrome-sandbox的权限,先将属主和属组改为root, 再将执行权限改为4755,必须改属主,再改权限。

uos@uos-PC:~/Desktop/obsidian$ cd test/opt/apps/md.obsidian/files/bin/
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ ls -l chrome-sandbox 
-rwxr-xr-x 1 uos uos 4708288 5月  30 10:47 chrome-sandbox
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ sudo chown root:root ./chrome-sandbox 
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ sudo chmod 4755 ./chrome-sandbox 
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ ls -l chrome-sandbox 
-rwsr-xr-x 1 root root 4708288 5月  30 10:47 chrome-sandbox
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ 

3,修改entries/icons目录

a,找到解后的icons目录,替换entries/icons目录,本例子解包后icons在usr/share目录下

四,修改entries/applications/desktop文件

1,修改Exec字段,将Exec字段改为程序安装后可执行文件的目录/opt/apps/md.obsidian/files/bin/AppRun

2,修改Icon字段,将Icon字段改为程序安装后图标的目录/opt/apps/md.obsidian/entries/icons/hicolor/48x48/apps/obsidian.png

五,压包和安装

1,使用dpkg-deb -b test/ 输出目录 ,将按照新规则放置好的目录压入deb包内

uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root  test  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$ dpkg-deb -b test/ .
dpkg-deb: 正在 './md.obsidian_0.12.3_amd64.deb' 中构建软件包 'md.obsidian'。
uos@uos-PC:~/Desktop/obsidian$ ls
md.obsidian_0.12.3_amd64.deb  Obsidian-0.12.3.AppImage  squashfs-root  test  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$

2,使用dpkg -i 安装或者双击deb包安装,检查启动器是否有改程序且能正常使用和卸载,如果正常,打包完成。

3,启动器中程序名和desktop文件的Name字段对应

3,打包过程中遇到的问题,随时可以在QQ群交流。QQ群号:1162917308

六,Q/A

上一篇:Deepin系统安装mysql5.7实录


下一篇:Ubuntu安装libmediainfo(亲测有效)