native本地编包 || deb打包 || 构建第一个deb包hello

简介: native本地编包 || deb打包 || 构建第一个deb包hello

参考:DEB打包:快速构建一个Meta Package - YangMame


一、前提:

dh-make

dpkg-dev

linux下查看是否有这两个包:
sudo apt search dpkg-dev
sudo apt search dh-make
没有的话直接安装:
sudo apt install dpkg-dev
sudo apt install dh_make

二、构建源码包以及打包过程

1、创建工作目录

格式:包名-版本号

mkdir hello-1.0

2、初始化目录(创建debian文件)

cd hello-1.0/
dh_make --native #本地的

1)创建过程中会选择包的类型,这里选择single,输入s;


2)然后输入y确认生成


1.png


创建完之后可以在目录下看到debian目录


3、修改control文件

进入debian目录,找到control文件

cd debian/
vim control

contrl文件内容如下

Source: hello
Section: unknown
Priority: optional
Maintainer: unknown <WYN@unknown>
Build-Depends: debhelper-compat (= 12)
Standards-Version: 4.4.1
Homepage: <insert the upstream URL, if relevant>
#Vcs-Browser: https://salsa.debian.org/debian/hello
#Vcs-Git: https://salsa.debian.org/debian/hello.git
Package: hello
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
 <insert long description, indented with spaces>


Source:源代码包的名称

Section是分类,这里改成misc(杂项)

Maintainer是维护者,这里随意(必须为“名字+空格+<邮箱>”的格式)

Homepage是软件的主页,没用的话可以用#注释

Package决定了你的包名(通常与源代码包名相同)

Architecture是构架支持,如果是元数据(脚本,媒体文件,文本)可以不管

Depends是依赖,这里作为示例是没有依赖的故保留原样

Description是软件介绍,不可写太长(最长60个字符,多的另外起行,用空格缩进)

1.png


4、增加changelog文件配置文件

1) 初始化的changelog文件如下

vim changelog 

1.png


第一行:软件包的名称、版本号、发行版和紧急程度

第二行:长条目,记录每次在debian修订版本中做出的修改

第三行:维护者和维护者邮箱、以及修改的时间

2)增加一条changelog

dch

在changelog同级目录下,命令行输入dch,会自动生成一条changelog,如下


1.png


我们需要修改新增changelog的三行信息,改完如下,保存退出即可


1.png


其他的文件先不做修改


5、在debian同级目录下创建目录,并在hello.sh可执行文件中输入打印的语句

mkdir -p usr/bin/
cat << EOF > usr/bin/hello.sh
#!/bin/bash
echo hello
EOF
sudo chmod +x usr/bin/hello.sh

1.png


6、新建hello.install文件(文件在debian目录下)

vim debian/hello.install

内容为:

usr/* usr

这里的usr/xxx/xxx都是相对于系统的目录的路径创建的,而.install文件则是告诉包管理如何处理这些文件(将包根目录内的usr目录复制到系统的usr目录)


7、生成.dsc与源码包(debian同级目录)

dpkg-source -b .

注意:不要忘记最后的.  表示当前目录


1.png


执行完成后,会在上一级目录查看到新生成的两个文件


1.png


8、构建deb包(debian同级目录)

dpkg-buildpackage -us -uc

执行完成后(没有报错),会在上一级目录查看到生成的.deb文件


1.png


9、安装生成的包

sudo dpkg -i hello_1.0-1_amd64.deb

1.png


安装完成后,就可以执行可执行文件hello.sh来看一下效果了

hello.sh

1.png


会打印echo出的hello文件


END


相关文章
|
11月前
|
存储 Cloud Native Linux
QtCreator中三种不同编译版本 debug、release、profile 的区别
QtCreator中三种不同编译版本 debug、release、profile 的区别
|
16天前
|
编译器 API 开发工具
CMake构建学习笔记17-uriparser库的构建和使用
【9月更文挑战第15天】这是关于在 CMake 构建环境中构建与使用 uriparser 库的学习笔记。uriparser 是一个用于解析和处理 URI 的 C 语言库,提供高效准确的方法来解析和操作 URI。笔记详细介绍了获取源码、创建 CMake 项目结构、编写 `CMakeLists.txt`、构建项目以及在代码中包含头文件并解析 URI 的步骤。同时,还提醒了错误处理、平台兼容性和参考文档等注意事项,帮助开发者更好地理解和使用该库。
|
2月前
|
Oracle Java 关系型数据库
简单记录在Linux上安装JDK环境的步骤,以及解决运行Java程序时出现Error Could not find or load main class XXX问题
本文记录了在Linux系统上安装JDK环境的步骤,并提供了解决运行Java程序时出现的"Error Could not find or load main class XXX"问题的方案,主要是通过重新配置和刷新JDK环境变量来解决。
74 0
|
5月前
|
Linux Windows
教你在Linux上安装Node并用Electron打包deb和rpm包
教你在Linux上安装Node并用Electron打包deb和rpm包
262 9
|
5月前
|
算法 API C++
【Cmake MODULE模块库】深度理解CMake中的add_library: MODULE的全面指南
【Cmake MODULE模块库】深度理解CMake中的add_library: MODULE的全面指南
239 0
通过patch-package创建补丁修改node_modules依赖下的源码
通过patch-package创建补丁修改node_modules依赖下的源码
187 0
|
12月前
|
监控 JavaScript 安全
Node.js Current 版本和 LTS 版本的区别
Node.js Current 版本和 LTS 版本的区别
|
测试技术 Linux
CMake库打包以及支持find_package(一)
CMake库打包以及支持find_package(一)
195 0
|
存储 Linux 计算机视觉
CMake库打包以及支持find_package(二)
CMake库打包以及支持find_package(二)
263 0
|
JavaScript
Node.js:npm管理包版本version
Node.js:npm管理包版本version
106 0
Node.js:npm管理包版本version