分享

源码打包为deb

 开花结果 2024-03-27 发布于北京

源码编写

c程序源码

我们从零开始,首先创建源码目录demo和一个demo.c文件

demo.c内容如下:

#include<stdio.h>

int main() {

printf("this is a demo ! \n");

return 0;

}

Makefile

编写一个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

debian打包目录修改

服务器软件

uos和debian对于打包服务器软件规则完全一致,参见debian打包文档即可。

桌面软件

由于uos的安装路径和debian的默认安装路径不同,因此需要额外做一些工作。 请保留source目录以及changelog、compat、control、copyright、rules这几个文件,删掉其他文件

修改control文件

Source: demo
Section: net
Priority: optional
Maintainer: zhaozhen <zhaozhen@>
Build-Depends: debhelper (>= 11)
Standards-Version: 4.1.3
Homepage: https://
#Vcs-Browser: https://salsa./debian/demo
#Vcs-Git: https://salsa./debian/demo.git

Package: org.demo
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: a demo application

请注意Source和Package字段,Source表示软件源码包的名称,一般亦是软件名。Package指在UOS上的二进制包名。包名是用来区分不同软件包的名字,不用纠结为什么不一样,只需要知道包名如何起就可以。

包名的生成规则是该软件所在网站url的倒置,举例:

www.,包名可以叫org.demo,也可以叫org.demo.www,一般忽略www

demo.,包名可以叫org.demo.demo,域名倒置

www./demo,包名可以叫org.demo.demo,域名倒置,路径不倒置

www./a/demo,包名可以叫org.demo.a.demo,域名倒置,路径不倒置

修改changelog

demo (1.0.0.0) unstable; urgency=medium

  * Initial release

 -- zhaozhen <zhaozhen@>  Mon, 01 Mar 2021 13:55:16 +0800

需要注意版本号形式为a.b.c.d,然后编写版本修订记录,方便以后查询

修改Desktop

建议不要直接修改源码,请使用补丁形式,修改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

增加info文件

在debian目录增加info文件

修改rules

#!/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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多