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


相关文章
|
自然语言处理 关系型数据库 MySQL
PowerDesiger16与MySQL操作互转
PowerDesiger16与MySQL操作互转
355 0
|
存储 SQL 缓存
云原生内存数据库Tair的演进之路
2022年9月,云原生内存数据库Tair在阿里云正式上线。
云原生内存数据库Tair的演进之路
|
3月前
|
数据采集 开发框架 .NET
告别爬取困境:用Playwright完美抓取复杂动态网页
Playwright:动态网页爬虫新利器。跨浏览器支持、智能等待、网络拦截,轻松应对异步加载与反爬机制。实战案例+高效技巧,解锁复杂页面数据抓取。
354 0
|
5月前
|
传感器 自动驾驶 算法
自动驾驶还远吗?关键看“眼睛”
自动驾驶感知系统是智能车的“眼睛”,依赖摄像头、激光雷达、毫米波雷达等传感器实现环境感知。文章详解了感知架构、主流目标检测方法(如2D/3D检测、多传感器融合)、感知挑战(如极端天气、长尾问题)及发展趋势,并结合驭势科技实践,展示了数据闭环、BEV感知、全景分割等技术进展,推动自动驾驶向全天候、全无人目标迈进。
|
8月前
|
定位技术 Python
遭遇Debian无法执行脚本提示"文件或目录不存在"问题解决方案
这样的错误提示在使用Debian的过程中是很常见的,希望这个极具形象意义的解释和解决方法能帮到你,并使你在处理这样的问题的时候充满乐趣。如果你遇到其他的问题或者对这个问题有更深一步的疑问,欢迎随时提问,我会在第一时间为你解答。
329 24
|
12月前
|
传感器 资源调度 算法
时间序列分析中的状态估计:状态空间模型与卡尔曼滤波的隐状态估计
状态空间模型通过构建生成可观测数据的潜在未观测状态来进行时间序列分析,卡尔曼滤波为其核心,提供实时隐状态估计。本文深入探讨其理论基础与实践应用,涵盖线性及非线性系统的高级滤波算法(如EKF和UKF),并展示在运动目标跟踪等领域的具体应用,强调了参数调优和性能评估的重要性。
619 11
时间序列分析中的状态估计:状态空间模型与卡尔曼滤波的隐状态估计
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
1155 4
|
数据可视化
echarts画有三角形柱形的柱状图
echarts画有三角形柱形的柱状图
578 0
|
编译器 Linux
boost库交叉编译ARM版本
boost库交叉编译ARM版本
993 2
|
JSON Java 数据格式
如何用String字符串生成JSONObject和JSONArray数据
如何用String字符串生成JSONObject和JSONArray数据
3632 1