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)