目录
- 前言
- 了解一下deb包结构
- deb打包过程
- 结束
前言
因为有些Linux的软件很烦人它不提供.deb形式的安装包,有些时候放哪了也不知道。为了方便管理和升级等操作造个.deb安装包是个很急需的事情。其实这个事情不是很难,如果对Linux比较熟悉做这个事情会很简单,这里用一个最简单的例子来演示怎么把二进制压缩文件造成.deb安装包。
Firefox的中国版是没有提供.deb安装包的,但是国际版是有安装包的,那可以直接拿国际版的安装包里的配置文件做中国版的deb包
了解一下deb包结构
首先准备一下被安装的文件。如果了解Linux的话就知道deb包就是把文件放到对应的目录里然后再在管理器里注册一下。比如:
把一个deb包按压缩文件打开后可以看到三个压缩包,第一个压缩包里是deb包信息,包括版权等等;第二个压缩包里是数据文件,也就是主体的可执行文件;第三个可以看成统一的info文件。
打开control.tar.xz:
其中的第二个就是deb包打包信息,第三个是md5校验,第4个是安装完成后执行的sh脚本,第五个是删除时执行的的sh脚本。
打开data.tar.xz:
可以看到它是假拟一种Linux系统下的根目录,然后按照文件层级放置文件。
按照这个思路我们就可以着手做自己的deb包了。
deb打包过程
先随便新建一个文件夹,名字也可以随便,作为deb包对应的"根目录"
我这里就以FirefoxDebianPackage
为例:
然后就可以往里面新建文件夹了,必须要有一个DEBIAN
文件夹,全大写,必须是这个名字。
然后是usr/bin
,usr/share
,usr/lib
。
之后从Firefox中国版的压缩文件里拿二进制文件,再从国际版的share文件夹拿用户文件,包括图标,文档,快捷方式等等。
一定要有图标文件和usr/share/applications
中的.desktop文件
desktop文件的格式和作用可以自行移步百度。
需要注意的是usr/lib
路径下的可执行文件是不能直接被访问的,而usr/bin
是可以的,所以大多数deb包usr/bin
的内容是一个软连接。Firefox也是,那我们也可以照做:
ln -s ../lib/firefox/firefox firefox
最后文件夹是这样子:
然后编辑打包文件,可以直接复制,也可以自己写一下。我直接复制原有firefox的deb包里的脚本。
理论上只需要control文件就可以了,最简单的模板如下:
Package: JFeng // 程序名称,中间不能有空格
Version: 1.1.0 //版本
Architecture: amd64 //架构
Section: utils //类别
Priority: optional //重要程度
Maintainer: MC //打包人
Homepage: http://montecarlo.org.cn //软件包主页
Description: Gale debug //描述
最后的软件包层级:
然后切换到FirefoxDebianPackage
所在的目录,修改权限,其中DEBIAN文件夹权限应该是755,usr/lib/firefox和usr/bin/firefox应该是u+x的可执行权限。
sudo chmod -R 755 FirefoxDebianPackage/DEBIAN/
sudo chmod u+x FirefoxDebianPackage/usr/lib/firefox
sudo chmod u+x FirefoxDebianPackage/usr/bin/firefox
执行打包命令:
sudo dpkg -b FirefoxDebianPackage firefox_cn.deb
sudo dpkg -b 要打包的目录 打出来deb包名称.deb
之后就会在对应目录下生成可以安装的deb包。
结束
参考文章:
Ubuntu中deb包详解及打包教程