第十七讲 构建一个deb软件安装包
学习内容
1.Linux软件包
2.deb包与dpkg工具
3.构建一个helloworld的deb包
4.apt工具 //安装软件经常使用apt工具
1.了解Linux软件包的组成
文件类型 | 保存目录 |
---|---|
普通程序 | /usr/bin |
root权限程序 | /usr/sbin |
程序配置文件 | /etc |
日志文件 | /var/log |
文档文件 | /usr/share/doc |
Linux软件包分为两大类:源码包 和 二进制包
-
源码包 //源代码程序,开发者按着一定的格式和语法编写出来的,使用时要用GCC编译成二进制执行
优点:
-
开源免费
-
自由裁剪功能
-
修改源代码
缺点:
- 安装步骤繁琐 //因为要使用编译器将源码编译成二进制文件,3M软件在linux下安装都得半个小时
- 编译时间长
- 新手无法解决编译问题
-
-
二进制包 //因为源码包的缺点,安装慢不适合新手,提出了二进制包。
//二进制包 就是 源码包编译后的包
优点:
- 简单易用
- 安装速度快
缺点:
-
无法阅读修改源码 //编译好了,无源码,无法修改
-
无法裁剪功能
-
依赖性强
二进制包又分为两类:deb包 和 rpm包
deb包
概念
Debian、Ubuntu、Deepin等Linux发行版的软件安装包。//Linux一切皆文件,命令,程序都可以安装
rpm包
概念
RedHat,Fedora,Centos等Linux发行版的软件安装包。
Ubuntu用的是deb包,dpkg工具对已经下载和安装deb包进行管理
dpkg工具(Debian package)
概念
Debian package的简写,为”Debian“ 操作系统 专门开发的套件管理系统,用于软件的安装,更新和移除
底层的包管理工具,主要用于对已下载到本地和已经安装的deb包进行管理
dpkg工具对 deb包进行管理 的常用命令
安装软件:dpkg -i xxxx.deb
查看安装目录:dpkg -L xxxx //父目录-子目录层层递进的显示
显示版本:dpkg -l xxxx
详细信息:dpkg -s xxxx //软件名称 版本 软件类别......
罗列内容:dpkg -c xxxx.deb //打印deb包文件的内容
卸载软件:dpkg -r xxxx
打包文件:dpkg -b //举例:dpkg -b $1hellowold1 $2hellowold1.deb //给文件打包 $1将要打包的文件名 $2生成包的名称 //即把hellowold1 的东西(你写的程序+DEBIAN) 打包成 helloworld.deb这个东西
//便于后期 dpkg -i helloworld.deb 安装这个东西
//注意$1hellowold1文件夹 必须包含 你写的程序+DEBIAN文件夹(这里至少有个control) 才能打包
deb包文件结构分析
野火的build_deb.sh这个shell文件干了啥 ,给你建立了一个DEBIAN文件,文件里有一些安装相关日志如下:
-
DEBIAN目录:
-
control文件:
-
Package:软件名称
-
Version:版本
-
Section:软件类别
-
Priority:对系统的重要性
-
Architecture:支持的硬件平台,软件支持ARM架构/X86架构
-
Maintainer:软件包的维护者
-
Description:对软件的描述
-
-
preinst文件 : 安装之前执行的shell脚本 //安装文件之前文件要执行的操作
-
postinst文件 : 安装之后执行的shell脚本 //安装文件之后执行操作,显示一些安装成功之类的信息
-
prerm文件:卸载之前执行的shell脚本 //卸载之前,显示一些提示之类的信息
-
postrm文件: 卸载之后执行的shell脚本
-
copyright文件:版权声明
-
changlog文件: 修改记录
-
-
软件具体安装目录:
视实际需求
构建一个helloworld的deb包
1.先创建一个安装路径
①mkdir deb_dpkg_study
②mkdir -p helloworld/usr/bin/ //bin代表二进制,系统的/usr/bin/这个路径下放的是bin二进制文件
//我们也建立这样一个类似的路径(没/),这样程序安装后会自动放入系统路径下bin
2.构建shell文件
①deb_dpkg_study/helloworld/usr/bin/helloworld.sh //创建helloworld.sh这个shell文件
②写个代码:echo “hello,world!”;
3.安装文件 要用到 build_deb.sh 这个文件
①./build_deb.sh helloworld helloworld.deb
//build_deb.sh 文件传入两个参数 $1:package_dir $2:package_name
②./build_deb.sh这个文件的作用就是:给你写的shell程序helloworld 给里面加了contol postinst copyright changlog的文件信息,这样安装完软件后就会有这些信息
③dpkg -b $package_dir $package_name 将这些打包成一个helloworld.deb安装包
3.运行shell文件
terminal输入 helloworld.sh 显示你写的代码 就证明deb包安装成功了!
这段代码就是一个程序了
演示**:dpkg -b** :将文件夹打包成.deb文件(.deb是一个二进制包,用于文件安装)
PS: **单独使用dpkg -b对.shell文件打包是不行的!!**必须构建一个DEBIAN文件夹,文件夹起码有control文件才能构建.deb文件。
这是linux的规定,这样才能对安装的文件进行起码的管理!
apt命令和apt-get命令 //ubuntu14.0后就用apt了 不用apt-get
- apt是新版的包管理工具
- 解决apt-get命令过于分散的问题,一个apt解决一切
- apt默认属性对用户友好(进度条、提示升级包数)
- apt install xx对软件包安装
SUMMERIZE
|-源码包(c/c++或其他语言写要gcc编译后成二进制 安装才能用)
1.Linux软件包–
|- 二进制包–deb包(ubuntu下的二进制包的名字)
2.dpkg(Debain package)工具:这工具就是操作二进制包deb包的
3.写一个deb包
①写一个shell程序 放在在xx文件的./usr/bin路径下
②通过build_deb.sh 文件 给你的shell程序加一些说明信息 (build_deb.sh)是自己写的
③dpkg -b xx文件 xx.deb //构建出deb包
④dpkg -i xx.deb 安装出deb包
⑤完毕,可以在terminal里执行xxx.shell文件了 无需之前的./xxx.shell 直接在就在bin安装好好了 直接用