构建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/bashversion="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)
EOFcat <<EOF> ./$package_dir/DEBIAN/copyright
******************************************************************* @attention** 实验平台:野火  i.MX6ULL开发板 * 公司    :http://www.embedfire.com* 论坛    :http://www.firebbs.cn* 淘宝    :https://fire-stm32.taobao.com*
* * ******************************************************************
EOFcat <<EOF> ./$package_dir/DEBIAN/control
Source:embedfire
Package:${package_name%.*}
Version:$version
Section: debug
Priority: optional
Architecture: amd64
Maintainer:$author
Description: Embedfire Tools
EOFcat <<EOF> ./$package_dir/DEBIAN/postinst
#!/bin/sh
echo "******************************************************************"
echo "welcome to use $package_name!"
echo "******************************************************************"
EOFsudo chmod 775 ./$package_dir/DEBIAN/postinstdpkg -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默认属性对用户友好(进度条、提示升级包数)

五、构建deb软件安装包相关推荐

  1. cydia软件路径_在Cydia中提取Deb格式安装包文件

    大家都知道越狱后可以安装deb格式的文件包了,并且我们经常看到一些大神在论坛分享一些deb格式的文件或插件,他们是如何提取出来的呢?本文就给大家介绍一下在Cydia中提取Deb格式安装包文件教程. C ...

  2. ubuntu下载软件安装包

    apt-get -d download xxx ubuntu下载软件安装包命令.仅仅下载deb格式的安装包,不安装. xxx是待下载的安装包. 转载于:https://www.cnblogs.com/ ...

  3. 专业的软件安装包可以这样做!

    C/S客户端开发完成,需要将程序交付给用户,直接压缩发给用户是可以的(只是有点不专业),如果能有一个比较好看的安装界面,那档次就不一样了. 本文介绍怎么使用Adanced Installer 17.9 ...

  4. Pocket PC/Smartphone软件安装包之制作DIY

    Pocket PC/Smartphone软件安装包之制作DIY<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:of ...

  5. 资料汇总更新|软件安装包、书籍、源码、技术文档、手册……

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  6. 程序的安装——软件安装包的制作、软件仓库的使用

    读书笔记 -- <嵌入式C语言自我修养> 软件安装 linux 安装包的制作 编译 软件安装包路径 使用dpkg命令来制作安装包   及   安装包的卸载 软件仓库 更新源 查看具体需要更 ...

  7. 超详细的软件安装包制作打包流程(C/S客户端)

    C/S客户端开发完成,需要将程序交付给用户,直接压缩发给用户是可以的(只是有点不专业),如果能有一个比较好看的安装界面,那档次就不一样了. 本文介绍怎么使用Adanced Installer 17.9 ...

  8. Studio One Pro5软件安装包下载及安装教程

    Studio One Pro5软件安装包下载及安装教程 PreSonus Studio One是PreSonus出品的一款功能强大的音乐创作软件 Studio One Pro5下载地址: 百度网盘 百 ...

  9. Advanced Installer软件安装包制作

    从创建项目开始,一步一步按流程往下走 我是选择制作Release版本的安装包,Debug版本也可以 最好全选 没有许可协议,直接下一步 添加图标 构建 确认dll文件,如果有少了,记得要手动添加 有出 ...

  10. haiyang457 原创软件安装包代表作集合电子书

    http://pan.baidu.com/s/1c1CsMy8 haiyang457原创软件安装包集合电子书 转载于:https://blog.51cto.com/haiyang457/1873461

最新文章

  1. 无监督学习之RBM和AutoEncoder
  2. 解决AttributeError: XXX instance has no attribute ‘xxx‘的问题(新手必备)
  3. 自定义mysql8.0安装路径
  4. Spring的自动装配方法
  5. OpenCV小部件的姿势Pose of a widget
  6. postman模拟post请求的四种请求体
  7. SQL学习之使用视图
  8. 关于本地共享文件夹会话连接时间
  9. 6大设计原则之开闭原则
  10. 13个美国大学生最常用的社交网络
  11. AVL树(Java实现)
  12. 「职业生涯规划」真的有必要做吗?
  13. 本地语音控制模块 | 带语音识别的智能家居方案
  14. 牛腩新闻发布系统错误总结
  15. scratch积木编程-[微进阶]纯画笔时钟[单角色]
  16. swot分析模板_学生个人生涯规划报告模板
  17. Chromium源码中 media::VideoFrame 的3个属性(coded_size, visible_rect, natual_size)的理解
  18. 更简单的方法实现el-calendar日历组件中点击上个月、今天、下个月按钮时的点击事件
  19. python字符串加双引号是什么意思_python字符串表示什么?
  20. python超级大脑游戏代码_Super Brain超级大脑

热门文章

  1. 微信公众开发 表情开发php,微信公众帐号开发教程第9篇-QQ表情的发送与接收_PHP教程...
  2. 一篇文章带您秒懂地理标志商标注册
  3. Akamai 宣布收购 IaaS 提供商 Linode
  4. 因为高考是最相对公平的一次竞争和选拔
  5. Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法
  6. 推荐几个选择时间.日期的免费插件 js
  7. 数学竞赛辅导陈启浩pdf_【优秀论文】第九届MathorCup高校数学建模挑战赛(B题)...
  8. 全国大学生英语竞赛总结
  9. Vim快捷键汇总 - Jeffery Lee的专栏 - CSDNBlog
  10. ReiBoot(iOS系统修复工具)v6.9.5.0官方版