在Linux上写程序,写完了总是要发布的,常用的打包方式也无非是那么几种,使用checkinstall创建deb包(这个工具也可以创建rpm包),修改已有的deb包,或者使用dpkg命令重新制作一个新的deb包,今天我们介绍的就是如何使用dpkg命令重新生成一个新的deb安装包(非源码的形式)。
首先先查询一下我们要使用的包名是否被其他的包使用了,使用如下命令:
sudo apt-cache showsrc <包名>
这条命令是获取源码包的详细信息,如果提示没有这个包的信息,那么我们就可以使用这个名字作为制作的deb包的名字。这里不得不说一下.deb软件包命名规则:
Debian软件包命名遵循下列约定: _-_.deb
* 软件包名称(Package Name):
* 版本(Version Number):
* 修订号(Build Number):
* 平台(Architecture):
o i386
o all: 平台无关. 即适用于所有平台.比如文本, 网页, 图片, 媒体, pdf 等.
例如:
* package_1.0.1-1_i386.deb
* |软件包名称: package
* |版本: 1.0.1
* |修订号: 1
* |平台: i386
第一步:建立文件结构,假如我们要打包的这个项目的名字为AlpacaKnight,项目文件夹名字就命名为AlpacaKnight,我们要将这个项目中的main文件安装在“/usr/local/”目录下,将所需的库安装在“/usr/lib/”目录下,那么我们就需要在AlpacaKnight文件夹中分别建立一个“/usr/local/”目录和“/usr/lib/”目录,并将对应的文件放在相应的位置即可。
第二步:在项目目录下建立DEBIAN目录,并在在DEBIAN目录下建立control文件。
现在我们所需要做的就是编写control文件(注意结尾必须空一行),示例如下:
Package: alpacaknight-test(名称) Name: 作者AlpacaKnight的测试包 Version: 1.0(版本号) Architecture: i386(软件包对应的平台,基于i386,amd64,m68k,sparc,alpha,powerpc等) Depends: xviewg (>= 3.2p1.4), xfig (>= 1:3), libstdc++2.10-glibc2.2(依赖的软件包可库文件,用逗号隔开) Maintainer:AlpacaKnight<xuyingdong1992@163.com>(维护人) Description: this is a package use for test(描述) Provides: bioinfoserv-arb(供应商|可选) Source: (软件包的源代码名称|可选) Section:net(软件类别声明如`utils’, `net’, `mail’, `text’, `x11′|可选) Priority: optional(软件对系统的重要程度:required,standard,optional,extra|可选) Pre-Depends: (软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求|可选) Recommends: (这个字段表明推荐的安装的其他软件包和库文件) Suggests: fig2ps(建议安装的其他软件包和库文件|可选) Installed-Size: 26104(安装包大小|可选) Essential: (是否是系统最基本的软件包,选项为yes/no,如果是的话,就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载,除非进行强制性的卸载|可选) If you want to print your graphs you probably need to install the suggested fig2ps package.preinst: 这个文件是软件安装前所要进行的工作,工作执行会依据其中脚本进行; postinst这个文件包含了软件在进行正常目录文件拷贝到系统后,所需要执行的配置工作 prerm :软件卸载前需要执行的脚本 postrm: 软件卸载后需要执行的脚本现在来看看如何修订一个已有的deb包软件 (此处必须空一行再结束)
#如果DEBIAN目录中含有postinst 、prerm等shell执行文件
chmod -R 755 DEBIAN
preinst:在Deb包文件解包之前,将会运行该脚本。许多“preinst”脚本的任务是停止作用于待升级软件包的服务,直到软件包安装或升级完成。
postinst:该脚本的主要任务是完成安装包时的配置工作。许多“postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。
prerm:该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。
postrm:该脚本负责修改软件包链接或文件关联,或删除由它创建的文件。
第三步:也是我们打包的最后一步:
打包:dpkg -b <目录名> <包名>
最后,包的使用和卸载方式:
安装:sudo gdebi <包名>
卸载:sudo dpkg -r <包名> (这里说的包名为.deb之前的部分)
近期评论