[教程]简单的Linux标准编译和打包
http://forum.ubuntu.org.cn/viewtopic.php?f=56&t=454338
2014年的时候写了这个帖子,现在看来难得没什么大毛病。就是觉得有一些细节性的内容需要补充。
内容章节
一,软件编译环境安装
二,精细化控制deb软件包行为的四个脚本
三,control文件中软件包的优先级(Priority字段)
四,control文件中软件包的分类(Section字段)
五,opendesktop 开放桌面标准菜单
六,Debian menu 使用方法
七,Debian menu 中的section一览(见二楼)
一,软件编译环境安装(包括所有编译+打包工具):
Debian:
代码: 全选
$ sudo apt-get install dpkg-dev file gcc g++ libc6-dev make patch autoconf automake dh-make debhelper devscripts fakeroot gnupg xutils lintian pbuilder pkg-config gawk cmake build-essential
Ubuntu:
代码: 全选
$ sudo apt-get install dpkg-dev file gcc g++ libc6-dev make patch autoconf automake dh-make debhelper devscripts fakeroot gnupg xutils lintian pbuilder gpc g77 build-essential
二,精细化控制deb软件包行为的四个脚本
使用dh_make debian化源代码时,在/debian文件夹下,除了control还会生成4个bash脚本文件。未编辑状态下,这4个bash脚本不会有任何作用,但是对于习惯高品质打包和精细化管理的打包者很有用。
preinst 在Debian解包之前运行,主要作用是是停止作用于即将升级的软件包服务,保证软件包安装或和升级完成,也可以做在安装之前的所有系统必要操作。
postinst 完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动。
prerm 在软件包删除之前要做的操作,可以停止与软件包关联的daemon服务
postrm 在软件包删除之后要做的操作,比如删除使用时生成的系统文件等。
如果你是用dpkg手工打包,那么这四个文件则需要你手工建立,并指定755 root权限。
三,软件包的优先级
每个软件包都有一个维护者指定的优先级, 用于包管理系统,优先级在debian打包时的control文件中的Priority字段指定。这些优先级是:
必须的(Required): 系统运转所必须的软件包.
包括修复系统缺陷所必须的所有工具. 不能删除这些软件包, 否则系统可能会崩溃, 且甚至有可能无法用 dpkg 恢复. 仅有这类包的系统是不可用的, 但是它为系统管理员启动系统安装其它软件提供足够的功能.
重要的(Important): 在任何类 Unix 系统上均安装有该级别软件包.
没有这类包, 其它的包无法在系统上正常运转或使用, Emacs , X11 , TeX 等大型应用程序不在此列. 此类包构成基本系统.
一般的(Standard): Linux 系统里的一般软件包, 构成小型字符系统.
这是用户什么也不选也会默认安装的软件包. 不包括大型软件, 但是 Emacs(与其说它是一个应用软件,不如说它是基础构件)一小部分 TeX 和 LaTeX(不支持X)除外.
可选的(Optional): 软件包包含了所有的你想要安装的文件, 如果你一开始不知道它是什么. 或者没有特殊的需要.
这包括 X11, 所有的 TeX 和许多应用程序.
额外的(Extra): 这类包不是与其它高优先级的软件冲突, 只有知道它的用途才可能对你有用, 就是因为特别的原因而不能进入"可选"优先级。
四,control文件中软件包分类。
这里是新立得软件包管理器中的软件分类。如果你打包的软件control文件没有这个字段,那么在软件包安装后,新立得会将软件包划归为未分类:
admin, cli-mono, comm, database, debug, devel, doc, editors, education, electronics, embedded, fonts, games, gnome, gnu-r, gnustep, graphics, hamradio, haskell, httpd, interpreters, introspection, java, kde, kernel, libdevel, libs, lisp, localization, mail, math, metapackages, misc, net, news, ocaml, oldlibs, otherosfs, perl, php, python, ruby, science, shells, sound, tasks, tex, text, utils, vcs, video, web, x11, xfce, zope.
五,opendesktop 开放桌面标准菜单
标准菜单所有的菜单项都会在/usr/share/applications/文件夹下,扩展名为desktop。需要将某个程序放入某分类,修改程序desktop文件的Categories字段。标准分类列表如下:
opendesktop Categories 列表(来自debian wiki)
AudioVideo 一个多媒体程序,包括音频,视频的播放与处理。
Development 开发程序,代码编辑器
Education 教育相关软件
Game 各类游戏
Graphics 图形浏览和处理程序
Network 网络应用程序,比如浏览器或IM。
Office 字处理,电子表格以及图书阅读器等。
Settings 系统设置程序。条目可能也会出现在一个单独的程序组"控制中心"里。
System 系统工具, "System Tools" 比如网络监视器或者log阅读器等类似程序。
Utility 附件,小型实用程序。比如星际译王电子词典或者便签、闹钟。
六,Debian menu 使用方法
debian系统有自己的古老树形菜单,ubuntu也支持。所有程序的菜单项目文件都放在/etc/menu或~/.menu目录下。这个菜单对于opendesktop菜单支持不到位的小众/老式桌面尤其有用。
相关命令:
安装debian菜单
代码: 全选
sudo apt-get install menu
代码: 全选
sudo update-menus
文件名:
/etc/menu/gnumeric
注意:文件名要和软件包名相同,否则会出现一些类似无法启动的奇怪现象。
文件内容:
代码: 全选
?package(gnumeric):\ 定义软件包名,每条配置信息要在一行中写完,所以要用反斜杠续行
needs="X11"\ 定义该菜单项需在X11环境中使用
section="Apps/Math"\ 定义菜单项的路径位置(这个位置牵涉到菜单分级目录名称,写的时候请参照其他menu项目文件)
title="Gnumeric"\ 定义菜单项的标题
command="gnumeric" \ 定义命令和选项
hints="Gnome,Spreadsheets" \ 定义一些提示信息
icon="/usr/share/pixmaps/gnumeric.xpm" 定义菜单项的图标