UOS非开发者模式deb打包安装说明(附带解压说明)

以demo软件为例,project_uos完整目录结构如下:

├── DEBIAN
│   └── control
├── etc
│   └── udev
│       └── rules.d
│           └── ttyusb.rules
├── lib
│   └── x86_64-linux-gnu
│       └── libQt5SerialPort.so.5
└── opt
    └── apps
        └── com.demo.tempcardprint
            ├── entries
            │   ├── applications
            │   │   └── TempCardPrint.desktop
            │   └── icons
            │       └── hicolor
            │           └── 48x48
            │               └── apps
            │                   └── com.demo.tempcardprint.png
            ├── files
            │   └── bin
            │       ├── config.ini
            │       ├── copylib.sh
            │       ├── libbsd.so.0
            │       ├── libc.so.6
            │       ├── libdl.so.2
            │       ├── libdouble-conversion.so.1
            │       ├── libfreetype.so.6
            │       ├── libgcc_s.so.1
            │       ├── libGLdispatch.so.0
            │       ├── libglib-2.0.so.0
            │       ├── libGL.so.1
            │       ├── libGLX.so.0
            │       ├── libgraphite2.so.3
            │       ├── libharfbuzz.so.0
            │       ├── libicudata.so.63
            │       ├── libicui18n.so.63
            │       ├── libicuuc.so.63
            │       ├── libm.so.6
            │       ├── libpcre2-16.so.0
            │       ├── libpcre.so.3
            │       ├── libpng16.so.16
            │       ├── libpthread.so.0
            │       ├── libQt5Core.so.5
            │       ├── libQt5Gui.so.5
            │       ├── libQt5PrintSupport.so.5
            │       ├── libQt5SerialPort.so.5
            │       ├── libQt5Test.so.5
            │       ├── libQt5Widgets.so.5
            │       ├── librt.so.1
            │       ├── libstdc++.so.6
            │       ├── libudev.so.1
            │       ├── libX11.so.6
            │       ├── libXau.so.6
            │       ├── libxcb.so.1
            │       ├── libXdmcp.so.6
            │       ├── libXext.so.6
            │       ├── libz.so.1
            │       ├── pack.sh
            │       ├── platforms
            │       │   └── libqxcb.so
            │       ├── TempCardPrint
            │       └── TempCardPrint.sh
            └── info

首先在project_uos下新建如下目录

 在DEBIAN目录下新建control文件,输入命令touch control,文件写入如下内容

Package: com.demo.tempcardprint                                     
Version: 1.0.0                                   
Architecture: amd64               
Maintainer: tempcardprint                        
Description: tempcardprint project

etc目录为配置udev规则,由于需要操作串口,需要开权限,etc/udev/rules.d/ttyusb.rules文件内容如下:

SUBSYSTEM=="tty",KERNEL=="tty*",OWNER="guest",MODE="0666"

lib目录放一些程序需要的库环境,这里在/lib/x86_64-linux-gnu/中放入libQt5SerialPort.so.5文件

opt/apps/com.demo.tempcardprint目录下结构如下

其中info文件内容如下:

{
    "appid": "com.demo.tempcardprint",
    "name": "tempcardprint",
    "version": "1.0.0.0",
    "arch": ["amd64"],
    "permissions": {
        "autostart": false,
        "notification": false,
        "trayicon": false,
        "clipboard": false,
        "account": false,
        "bluetooth": false,
        "camera": false,
        "audio_record": false,
        "installed_apps": false
    }
}

 entries目录新建applications和icons目录,applications新建tempcardprint.desktop文件,内容如下

[Desktop Entry]
Categories=Audio;AudioVideo;Qt;
Exec=/opt/apps/com.demo.tempcardprint/files/bin/TempCardPrint.sh
GenericName=com.demo.tempcardprint
Icon=/opt/apps/com.demo.tempcardprint/entries/icons/hicolor/48x48/apps/com.demo.tempcardprint.png
MimeType=audio/aac;application/aac;
Name=tempcardprint
Type=Application
X-Deepin-Vendor=user-custom

icons目录放程序logo,路径为icons/hicolor/48x48/apps/com.demo.tempcardprint.png

files/bin目录为程序运行目录,运行环境都放在这个目录。

返回project_uos目录,所有打包文件都必须是root权限,输入如下命令赋予root权限(这一步可以不要,详见“打包文件权限的一些说明”)

//这句忽略,改变用户组的,把project_uos的用户名和用户组改成root和root
//sudo  chown -R root:root  project_uos/
//修改某个目录或文件的访问权限
chmod -R 755 project_uos/

输入命令打包deb

sudo dpkg-deb --root-owner-group  -b  project_uos/  xxx.deb

打包文件权限的一些说明

安装包里的文件权限是755

1、查看权限

Linux文件访问权限分为可读,可写和可执行三种。

可用ls -l命令查看,例:ls -l

显示-rwxr-xr-x 1 root root 6444 09-22 15:33 shmwrite

-rw-r--r-- 1 root root 1443 09-22 15:33 shmwrite.c

drwxr-xr-x 2 root root 4096 09-22 17:19 test

第一个字符代表文件类型。d代表目录,-代表非目录。

接下来每三个字符为一组权限,分为三组,依次代表所有者权限,同组用户权限,其它用户权限

每组权限的三个字符依次代表是否可读,是否可写,是否可执行

r 表示拥有读的权限

w 表示拥有写的权限

x 表示拥有可执行的权限

- 表示没有该权限

2、修改权限

可用chmod命令来修改文件权限。

例如:chmod 754 test

4代表读权限,2代表写权限,1代表执行权限

7=4 + 2 + 1,表示拥有可读可写可执行权限

5=4 + 1,表示拥有可读可执行权限,但是没有写权限

0 代表没有任何权限
 

解压deb包
 

1,将deb包解压到extract文件夹下

dpkg -X ./xxx.deb extract

2,解压deb包中的control信息(包的依赖在这里面的control文件中)

dpkg -e ./xxx.deb extract/DEBIAN

desktop文件运行shell脚本的一些问题

        上面发布之后只能是执行可执行文件,可执行文件有个问题不能配置依赖库的环境变量,只能用系统自带的qt库,这样会造成版本冲突导致程序不能运行。

        于是我想用desktop文件执行run.sh脚本来配置环境变量的同时启动程序,这样就不会造成qt依赖库版本混乱的问题,于是我的desktop文件是这样的

[Desktop Entry]
Categories=Network;
Comment=cameraphoto
Comment[zh_CN]=test
Comment[zh_TW]=test
Exec="/opt/apps/com.test.cameraphoto/files/bin/run.sh"
Icon=/opt/apps/com.test.cameraphoto/entries/icons/hicolor/48x48/apps/com.test.cameraphoto.png
MimeType=audio/aac;application/aac;
Name=cameraphoto
Name[zh_CN]=test
Name[zh_TW]=test
StartupWMClass=cameraphoto
Terminal=false
Type=Application
X-Deepin-AppID=com.test.cameraphoto
X-Deepin-CreatedBy=com.deepin.dde.daemon.Launcher
X-Deepin-Vendor=user-custom

run.sh文件是这样的

#!/bin/sh  
export LD_LIBRARY_PATH=/opt/apps/com.test.cameraphoto/files/bin/lib:$LD_LIBRARY_PATH
./cameraphoto

点击desktop文件之后,程序就是启动不了,后来打开终端看到如下日志

找不到文件?应该是运行路径不对,于是我在run.sh脚本加了路径选择,脚本如下

#!/bin/sh  
cd /opt/apps/com.test.cameraphoto/files/bin
export LD_LIBRARY_PATH=/opt/apps/com.test.cameraphoto/files/bin/lib:$LD_LIBRARY_PATH
./cameraphoto

针对qml项目,如下配置

#!/bin/sh  
cd /opt/apps/com.test.acceptancemachine/files/bin
export LD_LIBRARY_PATH=/opt/apps/com.test.acceptancemachine/files/bin/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/opt/apps/com.test.acceptancemachine/files/bin/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/opt/apps/com.test.acceptancemachine/files/bin/qml:$QML2_IMPORT_PATH
./Test_AcceptanceMachine

 点击desktop文件可以正常运行了,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值