五、构建deb软件安装包

构建deb软件安装包

Linux软件包的组成

文件类型保存目录
普通程序/usr/bin
root权限程序/usr/sbin
程序配置文件/etc
日志文件/var/log
文档文件/usr/share/doc

Linux软件包

源码包

优点:

  • 开源免费

  • 自由裁剪功能

  • 修改源代码

缺点:

  • 安装步骤繁琐
  • 编译时间长
  • 新手无法解决编译问题

二进制包

优点:

  • 简单易用
  • 安装速度快

缺点:

  • 无法阅读修改源码
  • 无法裁剪功能
  • 依赖性强

deb包

概念

Debian、Ubuntu、Deepin等Linux发行版的软件安装包。

rpm包

概念

RedHat,Fedora,Centos等Linux发行版的软件安装包。

dpkg工具

概念

底层的包管理工具,主要用于对已下载到本地和已经安装的deb包进行管理

常用命令
安装软件:dpkg -i xxxx.deb
查看安装目录:dpkg -L xxxx
显示版本:dpkg -l xxxx
详细信息:dpkg -s xxxx
罗列内容:dpkg -c xxxx.deb
卸载软件:dpkg -r xxxx

deb包文件结构分析

DEBIAN目录

  • control文件:

    • Package:软件名称

    • Version:版本

    • Section:软件类别

    • Priority:对系统的重要性

    • Architecture:支持的硬件平台

    • Maintainer:软件包的维护者

    • Description:对软件的描述

  • preinst文件 : 安装之前执行的shell脚本

  • postinst文件 : 安装之后执行的shell脚本

  • prerm文件:卸载之前执行的shell脚本

  • postrm文件: 卸载之后执行的shell脚本

  • copyright文件:版权声明

  • changlog文件: 修改记录

软件具体安装目录

​ 视实际需求

构建一个helloworld的deb包

  1. 在自己创建的目录mywork下创建一个helloworld目录
mkdir helloworld
  1. 在helloworld目录下创建./usr/bin目录
mkdir -p usr/bin
  1. 在bin目录下创建helloworld.sh文件,文件中输出helloworld
#!/bin/bash
echo "hello world!"
  1. 返回目录mywork,使用构建deb包脚本构建目录,在这里使用野火示例脚本 build.sh,内容如下:
#!/bin/bash

version="0.1.2"
author="Emdebfire"
package_name="$2"
package_dir="$1"

mkdir -p ./$package_dir/DEBIAN/

cat <<EOF > ./$package_dir/DEBIAN/changelog
AUTHOR:$author
VERSION:$version 
DATE:$(date -R)
EOF


cat <<EOF > ./$package_dir/DEBIAN/copyright
******************************************************************
  * @attention
  *
  * 实验平台:野火  i.MX6ULL开发板 
  * 公司    :http://www.embedfire.com
  * 论坛    :http://www.firebbs.cn
  * 淘宝    :https://fire-stm32.taobao.com
  *
* * ******************************************************************
EOF

cat <<EOF > ./$package_dir/DEBIAN/control
Source:embedfire
Package:${package_name%.*}
Version:$version
Section: debug
Priority: optional
Architecture: amd64
Maintainer:$author 
Description: Embedfire Tools
EOF

cat <<EOF > ./$package_dir/DEBIAN/postinst
#!/bin/sh
echo "******************************************************************"
echo "welcome to use $package_name!"
echo "******************************************************************"
EOF

sudo chmod 775 ./$package_dir/DEBIAN/postinst

dpkg -b $package_dir $package_name

#$package_dir 		参数为构建deb包的目录
#$package_name		参数为构建deb包的名称
  1. 在目录mywork下执行: sudo ./build.sh helloworld helloworld.deb,之后生成helloworld.deb,如下:

    这一步的注意事项:

    一、直接从win下复制到虚拟机中的build.sh文件没有执行权限,要先压缩放入再解压,并且要修改文件权限(直接复制文件再修改权限似乎也不能成功);
    二、自己在虚拟机下创建的文件只要修改文件权限为可执行文件就行。

    三、修改权限可能需要重新开一个新线程(也可能是我误操作了)。

​ ① 没有执行权限的情况:
在这里插入图片描述
​ ② 成功构建软件包的情况:
在这里插入图片描述

  1. 输入 sudo dpkg -i helloworld.deb 安装deb包,如下显示安装成功
    在这里插入图片描述

  2. 输入helloworld.sh成功执行

在这里插入图片描述

  1. 输入sudo dpkg -r helloworld便可以卸载该deb包,不能再执行helloworld.sh命令
    在这里插入图片描述

apt命令和apt-get命令

  • apt是新版的包管理工具
  • 解决apt-get命令过于分散的问题
  • apt默认属性对用户友好(进度条、提示升级包数)
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要生成内核头文件deb安装包,你需要执行以下步骤: 1. 安装dpkg-dev和debhelper软件包: ``` sudo apt-get update sudo apt-get install dpkg-dev debhelper ``` 2. 下载内核源代码,并进入源代码根目录。 3. 在源代码根目录下创建一个名为debian的目录: ``` mkdir debian ``` 4. 在debian目录创建一个名为control的文件,并添加以下内容: ``` Source: linux Section: kernel Priority: optional Maintainer: Your Name <youremail@example.com> Build-Depends: debhelper (>= 10), dpkg-dev (>= 1.16.1~) Standards-Version: 3.9.5 Package: linux-headers-${KVERS} Architecture: amd64 Section: kernel Priority: optional Depends: linux-headers-generic (= ${binary:Version}) Description: Linux kernel headers for version ${KVERS} This package provides kernel header files for version ${KVERS} on amd64 architecture. ``` 在control文件,你需要将${KVERS}替换为要打包的内核版本号。例如,如果要打包4.15.0-29-generic内核的头文件,那么${KVERS}应该被替换为4.15.0-29。 5. 在debian目录创建一个名为rules的文件,并添加以下内容: ``` #!/usr/bin/make -f # -*- makefile -*- %: dh $@ ``` 这将告诉debhelper如何构建软件包。 6. 在源代码根目录下运行以下命令: ``` dpkg-buildpackage -us -uc ``` 这将使用dpkg-buildpackage命令构建软件包。构建完成后,你将在上一级目录找到生成的.deb文件。 请注意,生成内核头文件deb安装包比较复杂,因此你可能需要进一步了解Debian软件包的构建过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值