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


相关文章
|
7月前
|
JavaScript
npm install没问题,但npm run dev的时候报Node Sass version 6.0.1 is incompatible with ^4.0.0 ^5.0.0
npm install没问题,但npm run dev的时候报Node Sass version 6.0.1 is incompatible with ^4.0.0 ^5.0.0
63 0
|
4月前
|
JavaScript
使用 nuxi build-module 命令构建 Nuxt 模块
【8月更文挑战第29天】以下是使用 `nuxi build-module` 构建 Nuxt 模块的步骤:1. 确保已安装 Node.js 和 npm;2. 创建新目录并初始化 npm 项目;3. 安装 Nuxt 相关依赖;4. 创建模块结构,包括 `index.ts` 入口文件;5. 运行 `nuxi build-module` 构建模块;6. 在 Nuxt 项目中安装并配置该模块。确保遵循 Nuxt 最佳实践以保证稳定性和兼容性。
|
4月前
|
安全 Linux 开发工具
关于如何在Arch Linux上编写自己的第一个module
【8月更文挑战第21天】在Arch Linux上编写首个内核模块需遵循以下步骤:首先,确保已安装Linux内核头文件及开发工具,可通过`pacman -S base-devel linux-headers`安装;其次,理解内核模块基本概念,它是在运行时动态加载以扩展内核功能的代码片段;接着,创建并编辑模块源文件(如`my_module.c`),包含必要头文件,并定义初始化与清理函数;同时指定模块的许可证信息。
|
6月前
|
JavaScript
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
|
7月前
|
Linux Windows
教你在Linux上安装Node并用Electron打包deb和rpm包
教你在Linux上安装Node并用Electron打包deb和rpm包
433 9
通过patch-package创建补丁修改node_modules依赖下的源码
通过patch-package创建补丁修改node_modules依赖下的源码
225 0
|
7月前
|
算法 API C++
【Cmake MODULE模块库】深度理解CMake中的add_library: MODULE的全面指南
【Cmake MODULE模块库】深度理解CMake中的add_library: MODULE的全面指南
355 0
dh-make指定包含低线_的构建目录
dh-make指定包含低线_的构建目录
100 0
|
分布式计算 Java Scala
从源代码编译构建Apach Spark3.2.4
使用官方预编译版本的Spark已经足够满足日常需求。当在特定的场景和需求下,重新编译Spark提供了更大的灵活性和控制权,适用于需要特定功能、定制化配置或对Spark进行扩展的场景。
339 1
从源代码编译构建Apach Spark3.2.4
|
存储 Linux 计算机视觉
CMake库打包以及支持find_package(二)
CMake库打包以及支持find_package(二)
314 0