我们从零开始,首先创建源码目录demo和一个demo.c文件
demo.c内容如下:
#include<stdio.h> int main() { printf("this is a demo ! \n"); return 0; }
编写一个Makefile
PREFIX=/usr/local all: prepare build-bin prepare: mkdir -p bin build-bin: $(CC) -o bin/demo demo.c install: mkdir -p ${DESTDIR}${PREFIX}/bin mkdir -p ${DESTDIR}${PREFIX}/share/applications mkdir -p ${DESTDIR}${PREFIX}/share/icons/hicolor/48x48/apps install -v bin/demo ${DESTDIR}${PREFIX}/bin install -v demo.desktop ${DESTDIR}${PREFIX}/share/applications install -v demo.png ${DESTDIR}${PREFIX}/share/icons/hicolor/48x48/apps clean: rm -rf bin .PHONY: all install clean
写一下快捷方式文件demo.desktop
[Desktop Entry] Name=demo Exec=demo Terminal=false Type=Application Icon=demo Categories=Network;
制作一个图片,推荐svg格式,也可以是png格式。
以上工作完成后,就是一个最基础的软件结构,我们截图看一下。
dh_make -s --createorig
uos和debian对于打包服务器软件规则完全一致,参见debian打包文档即可。
由于uos的安装路径和debian的默认安装路径不同,因此需要额外做一些工作。 请保留source目录以及changelog、compat、control、copyright、rules这几个文件,删掉其他文件。
Source: demo Section: net Priority: optional Maintainer: zhaozhen <zhaozhen@uniontech.com> Build-Depends: debhelper (>= 11) Standards-Version: 4.1.3 Homepage: https://demo.org #Vcs-Browser: https://salsa.debian.org/debian/demo #Vcs-Git: https://salsa.debian.org/debian/demo.git Package: org.demo Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: a demo application
请注意Source和Package字段,Source表示软件源码包的名称,一般亦是软件名。Package指在UOS上的二进制包名。包名是用来区分不同软件包的名字,不用纠结为什么不一样,只需要知道包名如何起就可以。
包名的生成规则是该软件所在网站url的倒置,举例:
www.demo.org,包名可以叫org.demo,也可以叫org.demo.www,一般忽略www
demo.demo.org,包名可以叫org.demo.demo,域名倒置
www.demo.org/demo,包名可以叫org.demo.demo,域名倒置,路径不倒置
www.demo.org/a/demo,包名可以叫org.demo.a.demo,域名倒置,路径不倒置
demo (1.0.0.0) unstable; urgency=medium * Initial release -- zhaozhen <zhaozhen@uniontech.com> Mon, 01 Mar 2021 13:55:16 +0800
需要注意版本号形式为a.b.c.d,然后编写版本修订记录,方便以后查询
建议不要直接修改源码,请使用补丁形式,修改Exec字段。
cat debian/patches/fix-desktop.patch
--- a/demo.desktop +++ b/demo.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=demo -Exec=demo +Exec=/opt/apps/org.demo/files/bin/demo Terminal=false Type=Application Icon=demo
在debian目录增加info文件
#!/usr/bin/make -f export DH_VERBOSE = 1 export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed JOBS=$(shell echo nproc) %: dh $@ #自动执行预编译,由于没有cmake、qmake、configure等预编译工程,因此不执行该功能 override_dh_auto_configure: #覆盖默认的自动构建规则,重新编写 override_dh_auto_build: make PREFIX=/opt/apps/org.demo/files -j$(JOBS) #覆盖默认的自动安装规则,重新编写 override_dh_auto_install: make install DESTDIR=$(CURDIR)/debian/org.demo mkdir -p $(CURDIR)/debian/org.demo/opt/apps/org.demo/entries cp -r $(CURDIR)/debian/org.demo/opt/apps/org.demo/files/share/*/ $(CURDIR)/debian/org.demo/opt/apps/org.demo/entries cp $(CURDIR)/debian/info $(CURDIR)/debian/org.demo/opt/apps/org.demo #不执行安装changelog override_dh_installchangelogs: #不执行安装doc override_dh_installdocs: #不执行安装info override_dh_installinfo:
需要重写dh_auto_build和dh_auto_install,如果有预编译文件,还需要重写dh_auto_configure,然后不执行安装changelog、doc和info文件。这就是UOS打包和Debian打包最重要的区别,安装目录不同。
dpkg-buildpackage -us -uc
联系客服