第十三讲 构建 deb 软件安装包
一、 Linux 软件包
软件包
| Debian 派系 | Redhat 派系 |
---|
源码包 | | | 二进制包后缀 | deb | rpm | 底层工具 | dkpg | rpm | 用户工具 | apt | yum |
软件包安装目录
文件类型 | 保存目录 |
---|
普通程序 | /usr/bin | root 权限程序 | /usr/sbin | 程序配置文件 | /etc | 日志文件 | /var/log | 文档文件 | /usr/share/doc |
优缺点
类型 | 优点 | 缺点 |
---|
源码包 | 开源免费 自由裁剪功能 可以修改源代码 | 安装步骤繁琐 编译时间长 新手无法解决编译问题 | 二进制包 | 简单易用 安装速度快 | 无法阅读修改源码 无法裁剪功能 依赖性强 |
二、 deb 包与 dpkg 工具
deb 包
Debian、Ubuntu、Deepin 等 Linux 发行版的软件安装包
rpm 包
Redhat、Fedora、Centos 等 Linux 发行版的软件安装包
dkpg 工具
底层的包管理工具,主要用于对已经下载到本地和已经安装的 deb 包进行管理
常用命令
功能 | 命令 |
---|
安装软件 | dpkg -i package_name.deb | 查看安装目录 | dpkg -L xxxx | 显示版本 | dpkg -l xxxx | 详细信息 | dpkg -s xxxx | 罗列内容 | dpkg -c xxxx.deb | 卸载软件 | dpkg -r xxxx |
三、 构建一个 helloworld 的 deb 包
deb 包文件分析
目录分析
-
control 文件 package 软件名称 Version 版本 Section 软件类别 Priority 对系统的重要性 Architecture 支持的硬件平台 Maintainer 软件包的维护者 Description 对软件描述 -
preinst 文件 安装之前执行的 shell 脚本 -
postinst 安装之后执行的 shell 脚本 -
prerm 卸载之前执行的 shell 脚本 -
postrm 卸载之后执行的 shell 脚本 -
copyright 版权声明 -
changlog 修改记录
构建 deb 包
创建构建 deb 包 shell 脚本
#!/bin/bash
#定义变量
version="0.1.0"
author="夜雨"
packageName="myHelloWorld.deb"
packageDir="$1"
# 创建 DEBIAN 目录
mkdir -p ./$packageDir/DEBIAN
# 将信息导入 cheagelog
cat <<EOF > ./$packageDir/DEBIAN/changelog.md
AUTHOR:$author
VERSION:$version
DATE:$(date -R)
EOF
# 导入版权信息
cat <<EOF >./$packageDir/DEBIAN/copyright.md
自动构建 deb 脚本
野火 linux 教程实践
EOF
# 导入 control 文件
cat <<EOF > ./$packageDir/DEBIAN/control
Source:proctice
Package:${packageName%.*}
Version:$version
Section: debug
Priority: optional
Architecture: amd64
Maintainer:$author
Description: my first deb
EOF
# 导入 postinst
cat <<EOF > ./$packageDir/DEBIAN/postinst
#!/bin/sh
echo "******************************************************************"
echo "welcome to use $packageName!"
echo "******************************************************************"
EOF
# 添加 deb 权限
sudo chmod 775 ./$packageDir/DEBIAN/postinst
# 打包
dpkg -b $packageDir $packageName
创建 deb 文件
-
创建文件夹用于保存我们的包工程 mkdir helloworld_deb -
在包工程路径内创建 usr/bin 目录 mkdir -p usr/bin -
创建 helloworld 脚本(在 usr/bin 目录下) touch helloworld.sh -
打开脚本并在里面输入内容 #!/bin/bash
echo "hello world!"
-
修改脚本执行权限 chmod +x helloworld.sh -
执行命令 cd ../../../ -
将 自动创建脚本复制到当前路径 -
给自动创建的脚本添加权限 chmod +x autobuild.sh -
执行命令 sudo ./autobuild.sh helloworld_deb -
命令结果 dpkg-deb: building package 'myhelloworld' in 'myHelloWorld.deb'. -
然后在创建脚本下就出现了 deb 包,成功! -
输入命令安装软件包 sudo dpkg -i myHelloWorld.deb -
运行软件包 helloworld.sh
附上源码地址: 后续附上!!!
四、 apt 工具
- apt是新版的包管理工具
- 解决apt-get命令过于分散的问题
- apt默认属性对用户友好(进度条、提示升级包数)
|