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


相关文章
|
6月前
|
算法 IDE 编译器
【Conan 基础 知识】Conan中的构建类型 Release和 Debug
【Conan 基础 知识】Conan中的构建类型 Release和 Debug
108 0
|
3月前
|
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 最佳实践以保证稳定性和兼容性。
|
3月前
|
安全 Linux 开发工具
关于如何在Arch Linux上编写自己的第一个module
【8月更文挑战第21天】在Arch Linux上编写首个内核模块需遵循以下步骤:首先,确保已安装Linux内核头文件及开发工具,可通过`pacman -S base-devel linux-headers`安装;其次,理解内核模块基本概念,它是在运行时动态加载以扩展内核功能的代码片段;接着,创建并编辑模块源文件(如`my_module.c`),包含必要头文件,并定义初始化与清理函数;同时指定模块的许可证信息。
|
3月前
|
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环境变量来解决。
143 0
|
5月前
|
JavaScript
vue : 无法加载文件 D:\module\npm_module\npm_modules\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c
vue : 无法加载文件 D:\module\npm_module\npm_modules\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c
|
5月前
|
JavaScript
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
通过patch-package创建补丁修改node_modules依赖下的源码
通过patch-package创建补丁修改node_modules依赖下的源码
214 0
|
缓存 资源调度
因node-sass和node版本不匹配导致无法安装依赖
因node-sass和node版本不匹配导致无法安装依赖
1060 0
下载node-gyp依赖包报错:gyp ERR! find VS msvs_version not set from command line or npm config
就是有一点需要注意,我这里安装vs的时候,可用里面没有vs社区版2017,只有2022,只能安装了2022
|
测试技术 Linux
CMake库打包以及支持find_package(一)
CMake库打包以及支持find_package(一)
215 0