linux .deb 包的制作

方法1

deb包介绍:
“.deb”是Debian软件包格式的文件扩展名。 deb包是Unixar的标准归档,将包文件信息以及包内容,经过gzip和tar打包而成;处理这些包的经典程序是dpkg.
一个deb包通常由两部分组成,控制脚本 和 程序数据:
这里写图片描述

dpkg是Debian软件包管理器的基础,主要负责安全卸载软件包,配置,以及维护已安装的软件包。
apt(Advanced Packaging Tool)、aptitude 和 dselect 等作为 dpkg 的前端,能够快速、高效的安装软件包,并且当软件包更新时,可以自动管理关联文件和维护已有配置文件。

Binary package的制作——与之对应的为 souce package,即安装源文件,然后执行编译过程,比较少用。 如果package是源码,则需要创建/source目录和/debian目录等。然后编辑debian/rules文件(其本质是一个首行为#!/usr/bin/make –f 的makefile文件),并且在rules文件中添加编译和安装的规则。

这里写图片描述

最常用的 5 个脚本文件:

  • control,用了记录软件标识,版本号,平台,依赖信息等数据;
  • preinst,在安装数据包之前运行的脚本;
  • postinst,在安装数据包之后运行的脚本;
  • prerm,卸载时,在删除文件之前运行的脚本;
  • postrm,在删除文件之后运行的脚本.

这里有个控制脚本文件的例子 (control 文件):

Package: helloworld
Version: 1.0-1
Section: libs
Priority: optional
Architecture: all
Depends: debconf (>= 0.2.26), gcc(>= 4:4.8.0-12)
Maintainer: guo.wei.1107@163.com
Installed-Size: 1024
Homepage: www.herofireworks.com
Description: Hello World!
 Say hello to the everybody!

其中Depends表示依赖,版本号的格式如下:
[epoch:] upstream_version [-debian_revision]
upstream_version:以数字开头,A-Z,a-z,0-9
版本大小判断:逐项比较(A < B < a < z < 0 < 9)

例子:在Ubuntu14.04上制作一个.deb包
先用apt-get install安装如下包: build-essential, debhelper, dh-make
进入工程根目录,执行:dh_make –createorig
执行 makefile 中的 rules:fakeroot debian/rules clean
创建.deb包: dpkg-buildpackage -rfakeroot -us -uc

方法2

使用 cmake 的 cpack 工具,很方便很简单哈。

步骤:

  • 在工程目录下创建如下一个 CMakeLists.txt 文件,可以修改CPACK_XXX变量来修改.deb包的配置:
cmake_minimum_required(VERSION 2.6.3)
#
# This creates a debian package for installation
#
project(my_first_deb)

# Set as many variables as you like to change the configuration. link: [http://www.cmake.org/Wiki/CMake:CPackConfiguration]
SET(CPACK_GENERATOR "DEB")
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386")    #required
#SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "armhf")  #如果是arm平台
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "guowei")    #required
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "guowei precious project")
SET(CPACK_PACKAGE_VENDOR "guowei")
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "0")
SET(CPACK_PACKAGE_VERSION_PATCH "0")

# This is important!
INCLUDE(CPack)

# you can change this setting as well, link: [http://www.cmake.org/cmake/help/v3.0/command/install.html]
# DIRECTORY 后面为你需要打包的目录
# DESTINATION 后面为安装路径
# 所以制作完.deb包后,使用 dpkg -i 安装,其目录结构为:
# DESTINATION/bin 和 DESTINATION/lib 和 DESTINATION/include

install(DIRECTORY bin lib include DESTINATION /home/guowei/temp_install_directory
    USE_SOURCE_PERMISSIONS
    FILES_MATCHING PATTERN "*"
)
# permissions:  executable 
#install(DIRECTORY test DESTINATION $ENV{ROBOT_ROOT_DIR}
#   USE_SOURCE_PERMISSIONS
#   FILES_MATCHING PATTERN "*"
#)
  • 然后创建一个build目录:
mkdir build
  • 然后生成.deb包:
cd build
cmake ..
sudo make package

在 build 目录下就可以找到你的 .deb 包了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值