uos打包——公网deb包转uos的deb包

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

一,获取deb包

1. 本文档使用eog包进行演示从旧规则的包改成新规则的包的过程示例.

2. 使用apt download eog或者其他方式来下载一个旧规则的eog包

    uos@uos-PC:~/Desktop$ mkdir eog        
    uos@uos-PC:~/Desktop$ cd eog/
    uos@uos-PC:~/Desktop/eog$ apt download eog
    uos@uos-PC:~/Desktop/eog$ ls
    eog_3.28.4-2+b1_amd64.deb
    
3. 使用dpkg-deb -R pkg.deb test 将包名为pkg的deb包解压到test目录下
    uos@uos-PC:~/Desktop/eog$ dpkg-deb -R eog_3.28.4-2+b1_amd64.deb test
    uos@uos-PC:~/Desktop/eog$ ls
    eog_3.28.4-2+b1_amd64.deb  test

二,改包名

1. 按照新规则,我们要使用倒置域名规则来命令包名,并且要升级一下版本号
   修改test目录下的DEBIAN目录下的control文件,具体为修改Package字段和Version字段
   
2. 修改前:
   Package: eog
   Version: 3.28.4-2+b1
   修改后:
   Package: org.gnome.eog
   Version: 3.28.4-3+b1
   版本号由软件版本号和打包版本号组成,由`-`分割,左边是软件版本号,右边是打包版本号,我们升级版本号只修改打包版本号,其他的不需要改变

三,创建UOS规范包结构

1,UOS包结构基本目录 ,entries下的文件夹,只需把有的移动过来就行

└── org.gnome.eog #此目录以包名命名
   ├── entries
   │   ├── applications    #放desktop文件
   │   ├── autostart        #放自启动入口文件
   │   ├── icons    #应用的图标文件,根据大小放进不同的目录下的apps/目录下,svg格式的放在scalable/apps/目录下
   │   │   └── hicolor
   │   │       ├── 128x128
   │   │       │   └── apps
   │   │       ├── 16x16
   │   │       │   └── apps
   │   │       ├── 24x24
   │   │       │   └── apps
   │   │       ├── 256x256
   │   │       │   └── apps
   │   │       ├── 32x32
   │   │       │   └── apps
   │   │       ├── 48x48
   │   │       │   └── apps
   │   │       ├── 512x512
   │   │       │   └── apps
   │   │       ├── 64x64
   │   │       │   └── apps
   │   │       └── scalable
   │   │           └── apps
   │   ├── plugins        #插件的目录
   │   └── services    #dbus服务目录
   │   └── glib-2.0    #schema文件
   │   └── GConf        #gseetings文件
   │   └── locale        #语言包文件
   ├── files            #其他文件
   └── info            #应用的一些信息

2,参考脚本,entries下的文件夹来自/usr/share/, 没有的文件夹可以注释掉。

#!/bin/bash

# 包名
pkg="org.gnome.eog"

mkdir -p $(pwd)/test/opt/apps/${pkg}/files
mkdir -p $(pwd)/test/opt/apps/${pkg}/entries

mv $(pwd)/test/usr/bin $(pwd)/test/opt/apps/${pkg}/files/
mv $(pwd)/test/usr/lib $(pwd)/test/opt/apps/${pkg}/files/

mv $(pwd)/test/usr/share/applications $(pwd)/test/opt/apps/${pkg}/entries/
mv $(pwd)/test/usr/share/icons $(pwd)/test/opt/apps/${pkg}/entries/
mv $(pwd)/test/usr/share/GConf $(pwd)/test/opt/apps/${pkg}/entries/
mv $(pwd)/test/usr/share/glib-2.0 $(pwd)/test/opt/apps/${pkg}/entries/
mv $(pwd)/test/usr/share/locale $(pwd)/test/opt/apps/${pkg}/entries/

mv $(pwd)/test/usr/share $(pwd)/test/opt/apps/${pkg}/files/

rm -r $(pwd)/test/usr


3,将脚本放到与test同级的目录,执行脚本

uos@uos-PC:~/Desktop/eog$ ls
chdir.sh  eog_3.28.4-2+b1_amd64.deb  test
uos@uos-PC:~/Desktop/eog$ chmod +x chdir.sh
uos@uos-PC:~/Desktop/eog$ ./chdir.sh 
uos@uos-PC:~/Desktop/eog$ ls
chdir.sh  eog_3.28.4-2+b1_amd64.deb  test
uos@uos-PC:~/Desktop/eog$ cd test/
uos@uos-PC:~/Desktop/eog/test$ ls
DEBIAN  opt
uos@uos-PC:~/Desktop/eog/test$

四,编辑info文件

1,info文件是应用的描述文件,使用json格式,info文件内容如下:

{
	"appid": "org.gnome.eog",                   # 包名
	"name": "eog",                              # 程序名
	"version": "3.28.4",                        # 程序版本号
	"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
           		}

}

2,将编辑好的文件放到 与files文件的同级目录

uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog$ ls
entries  files  info
uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog$ 

五,创建启动脚本用来导入依赖库路径

1,某些包带有自己的运行依赖库,旧规则都是安装在/usr/lib/目录下,在系统启动时可以找到需要的运行库,新规则不允许安装在/usr/lib/下,所以我们写一个启动脚本,先使用LD_LIBRARY_PATH环境变量来导出运行依赖库的路径,再去执行可执行文件

2,files文件夹下有lib文件夹的需要导库脚本,没有的可以直接执行可执行文件,导库脚本如下:

  • 脚本中的路径都需要是绝对路径
  • c/c++导入库路径脚本参考
#!/bin/sh

export LD_LIBRARY_PATH="/opt/apps/org.gnome.eog/files/lib/x86_64-linux-gnu/eog:LD_LIBRARY_PATH"
/opt/apps/org.gnome.eog/files/bin/eog
  • python导入库路径脚本参考
#!/bin/bash

export PYTHONPATH="/opt/apps/io.readthedocs.quodlibet/files/lib/python3.7/site-packages":$PYTHONPATH
python3 /opt/apps/io.readthedocs.quodlibet/files/bin/quodlibet
  • perl导入库路径脚本参考
#!/bin/bash

export PERL5LIB=/opt/apps/net.sourceforge.gscan2pdf/files/share/perl5:$PERL5LIB
perl /opt/apps/net.sourceforge.gscan2pdf/files/bin/gscan2pdf

3, 将写好的启动脚本放到bin目录下,新创建的脚本没有可执行权限,需要先添加可执行权限

uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog/files/bin$ chmod +x eog.sh
uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog/files/bin$ ls
eog  eog.sh
uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog/files/bin$ 

六,编辑desktop文件

1,uos规范的deb包会将程序安装到/opt/apps/包名/的目录下,desktop文件位于entries/applications目录下

2,修改Exec字段,将Exec字段改为程序安装后可执行文件的目录/opt/apps/org.gnome.eog/files/bin/eog.sh

3,修改Icon字段,将Icon字段改为程序安装后图标的目录/opt/apps/org.gnome.eog/entries/icons/hicolor/256x256/apps/eog.png

4,修改完这两个字段就可以进行下一步了,如果出现启动器不显示,可以参考第四步,该例子中设计语言的字段太多,导致最后启动器没有显示,把一些和语言有关的字段删除后,启动器可以正常显示

[Desktop Entry]
Name=Image Viewer
Comment=Browse and rotate images
Exec=/opt/apps/org.gnome.eog/files/bin/eog.sh %U
Icon=/opt/apps/org.gnome.eog/entries/icons/hicolor/256x256/apps/eog.png
StartupNotify=true
Terminal=false
Type=Application
Categories=GNOME;GTK;Graphics;2DGraphics;RasterGraphics;Viewer;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=EOG
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.28.4
X-GNOME-DocPath=eog/eog.xml
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/x-bmp;image/x-gray;image/x-icb;image/x-ico;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-pcx;image/svg+xml;image/svg+xml-compressed;image/vnd.wap.wbmp;image/x-icns;
Keywords=Picture;Slideshow;Graphics;

七,删除钩子脚本

1,如果解压后的包在DEBIAN目录下有preinst, postinst, prerm, postrm文件,确定没有用的话,将其删除,不删除会导致deb包安装失败

2,之前在打包wireshark的过程中需要用到这些钩子脚本,但是极少数,大部分都是没有用的,具体可以群里交流

八,压包和安装

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

uos@uos-PC:~/Desktop/eog$ ls
chdir.sh  eog_3.28.4-2+b1_amd64.deb  test
uos@uos-PC:~/Desktop/eog$ dpkg-deb -b test/ .
dpkg-deb: 正在 './org.gnome.eog_3.28.4-2+b1_amd64.deb' 中构建软件包 'org.gnome.eog'。
uos@uos-PC:~/Desktop/eog$ ls
chdir.sh  eog_3.28.4-2+b1_amd64.deb  org.gnome.eog_3.28.4-2+b1_amd64.deb  test
uos@uos-PC:~/Desktop/eog$

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

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

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

九,Q/A

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值