这篇文章主要介绍公网上的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 eoguos@uos-PC:~/Desktop/eog$ lseog_3.28.4-2+b1_amd64.deb3. 使用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 testuos@uos-PC:~/Desktop/eog$ lseog_3.28.4-2+b1_amd64.deb  test

二,改包名

1. 按照新规则,我们要使用倒置域名规则来命令包名,并且要升级一下版本号修改test目录下的DEBIAN目录下的control文件,具体为修改Package字段和Version字段2. 修改前:Package: eogVersion: 3.28.4-2+b1修改后:Package: org.gnome.eogVersion: 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}/entriesmv $(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/shexport 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/bashexport PYTHONPATH="/opt/apps/io.readthedocs.quodlibet/files/lib/python3.7/site-packages":$PYTHONPATH
python3 /opt/apps/io.readthedocs.quodlibet/files/bin/quodlibet
  • perl导入库路径脚本参考
#!/bin/bashexport 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

uos打包——公网deb包转uos的deb包相关推荐

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

    这篇文章主要介绍appimage包如何转化为符合uos规范的deb包 ***已做快速打包工具 *** upTool 一,获取appimage包并解压 1,本文档使用obsidian程序进行演示从app ...

  2. 统信uos系统考试题_统信 UOS 桌面操作系统 V20 专业版(1021)发布

    IT之家 8 月 12 日消息 今日,统信官方宣布,统信桌面操作系统 V20 专业版(1021)发布. IT之家了解到,与上一版本相比,此版本实现功能更新 4 项,修复缺陷 200 余项.在此版本,统 ...

  3. 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )

    文章目录 一.扩展方法示例 二.实例扩展方法配置 三.编译实例扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 实例扩展方法 一.扩展方法示例 为 Thread 扩展 he ...

  4. 【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )

    文章目录 一.扩展方法示例 二.静态扩展方法配置 三.编译静态扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 静态扩展类 一.扩展方法示例 为 Thread 扩展 hel ...

  5. jar打包 剔除第三方依赖以及它的依赖_maven打包成第三方jar包且把pom依赖包打入进来的方法...

    添加此PLUGIN到项目的POM.XML中 maven-assembly-plugin com.allen.capturewebdata.Main jar-with-dependencies 如果出现 ...

  6. Eclipse安装低版本4.3并安装FatJar打包插件来打包引用第三方jar包的项目成jar包

    场景 Eclipse中打包引用了第三方jar包的Java Application项目,除了添加MANIFESE.MF文件,还可以使用 Fat Jar插件打成jar包. 但是Eclipse的版本在4.3 ...

  7. deb 安装_本地安装DEB包的3种命令行工具(适合Ubuntu和Deepin )

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 在本教程中,我们将学习如何使用三种不同的命令行工具(d ...

  8. linux程序打包安装,制作Linux下程序安裝包——使用腳本打包bin、run等安裝包

    制作簡單的安裝包的時候可以簡單的用cat命令連接兩個文件,然后頭部是腳本文件,執行的時候把下面的文件分解出來就行了.一般這個后部分的文件是個壓縮包,那樣,就能夠打包很多文件了,在腳本中解壓出來即可.這 ...

  9. linux 软件 tar deb rmp,专业编剧软件Fade In Linux版提供deb、rpm、tar.gz包下载

    Fade In是一款专业编剧软件,支持Windows.Mac.Linux.iPhone/iPad和Android平台.它是专业人士使用的最先进的软件,可用于电影.电视.视频游戏.舞台.广播等.它具有对 ...

  10. 安卓rom包解包linux,Android rom解包打包工具

    eMMC主要是针对手机和平板电脑等产品的内嵌式存储器,由于其在封装中集成了一个控制器,且提供标准接口并管理闪存等优势,越来越受到Android手机厂商的青睐,以eMMC为存储设备的android手机, ...

最新文章

  1. 全面理解目标检测中的anchor
  2. 七大科技巨头的最新人工智能布局
  3. LVS TUN模式搭建
  4. 邮件被暴力破解邮件网关如何解决
  5. OpenMP的一点使用经验
  6. java邮件发送代码_用Java实现最简单的邮件发送代码
  7. Linux内存释放脚本
  8. 使用tab键分割的文章能快速转换成表格。( )_EXCEL的163种使用技巧集锦-42~62
  9. 探果(简称tamguo)是基于java开发的在线题库系统
  10. visio画图中怎么添加①
  11. devops 三十六计_DevOps从业人员应遵循的16个博客和新闻通讯
  12. 常用概率论矩阵论公式
  13. iwconfig的使用
  14. c语言如何答应出数所在数组的下标_零基础学C语言——数组
  15. 11.求二元查找树的镜像[MirrorOfBST]
  16. 生产者消费者之爸爸妈妈儿子女儿苹果橘子编程实现
  17. 常用排序算法:直接插入排序
  18. android webview 之 AgentWeb的使用
  19. 06_因果图法、判定表法、场景法
  20. 【英语音节输入软件】模仿汉语拼音

热门文章

  1. PHP:A mono-alphabetic cipher 单字母密码加解密算法(附完整源码)
  2. OpenCV入门学习笔记之常用的图像处理操作
  3. intern() 方法
  4. 2022电大国家开放大学网上形考任务-普通心理学非免费(非答案)
  5. 微信公众号开发详细笔记
  6. 海恩法则和费曼学习法
  7. Intelligent Reference Curation for Visual Place Recognition via Bayesian Selective Fusion 论文阅读及注解
  8. 【转载】MongoDB 极简实践入门
  9. 云邦互联免费空间(免备案,无广告)
  10. 怎么测试网站访问速度?