[教程]简单Linux标准编译和打包的补充

编译打包和其他
回复
头像
carlos444_444
帖子: 448
注册时间: 2005-06-06 21:35
系统: Debian
来自: 四海为家
联系:

[教程]简单Linux标准编译和打包的补充

#1

帖子 carlos444_444 » 2019-01-12 23:47

原帖
[教程]简单的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
个人在ubuntu 6.06LTS时期彻底转投debian 4.0至今。

二,精细化控制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
更新debian菜单

代码: 全选

sudo update-menus
下面是Gnumeric程序菜单项的配置文件格式示例:
文件名:
/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"  定义菜单项的图标
该配置文件一般由Debian软件包管理者维护,在软件安装时通过软件配置脚本,把配置文件拷贝到相应的menu路径,并调用update-menus命令更新“Debian菜单”栏。这样,每安装一个新软件包,在“Debian菜单”栏就可找到它的菜单项了,且不受桌面系统或窗口管理器的限制,实现了统一的菜单界面接口。
上次由 carlos444_444 在 2019-01-14 15:37,总共编辑 4 次。
头像
carlos444_444
帖子: 448
注册时间: 2005-06-06 21:35
系统: Debian
来自: 四海为家
联系:

Re: [教程]简单Linux标准编译和打包的补充

#2

帖子 carlos444_444 » 2019-01-13 23:10

七,Debian menu中的section一览。
在制作自己的debian菜单项目时,可以作为section归类参考,把你的软件包快捷方式放到古老的debian菜单里。手工翻译,手机码字,谢谢各位大佬捧场。
附上官方文档英文链接
https://www.debian.org/doc/packaging-ma ... .html#s3.5

Applications
Normal applications

Accessibility
这里的工具用于身体机能有欠缺的用户或一些缺乏常用输入设备的计算机。

Examples: gok, yasr, dasher.

Amateur Radio
业余无线电,关于HAM radio的所有程序。

Examples: baken, hamsoft, twlog

Data Management
交互式数据库程序,收藏管理器,地址簿,目录索引工具等。

Examples: gaby, alexandria, mdbtools

Editors
编辑器,纯文本编辑器,不带有富文本格式。

Examples: ksubtile, nano, hexedit

Education
教育和训练软件。

Examples: gtypist, gcompris, quiz

Emulators
这些软件允许你在系统里运行其他操作系统的软件,或者一次性运行多个操作系统。

Examples: wine, dosemu, qemu

File Management
用于文件管理的工具,打包归档,搜索,CD/DVD烧录,备份等。

Examples: file-roller, mc, baobab

Graphics
2D和3D图形处理软件

Examples: gimp, inkscape, imagemagick

Mobile Devices
允许用户与移动设备进行交互的软件。 (phones, PDAs, etc.).

Examples: kandy, gnokii, gnome-pilot

Network
网络相关软件。这是一个三级文件夹(section), 不要把程序section直接指定到这里。

Communication
电子邮件,USENET新闻,群聊,即时消息,IP电话,视频会议软件等。

Examples: xchat, gaim, mutt

File Transfer
文件传输软件类似于下载管理器,FTP客户端,P2P客户端等。

Examples: amule, gftp, d4x

Monitoring
网络监控软件。

Examples: gip, ettercap, iptstate

Web Browsing
网页浏览器,离线浏览工具等。

Examples: elinks, epiphany-browser, webhttrack

Web News
网页内容供应(RSS, Atom, etc.)和广播信息汇集软件。

Examples: akregator, kitty, liferea

Office
Office套装,字处理,电子表格,财务管理软件,CRM, ERP等。

Examples: openoffice.org, tinyerp-client, gnucash

Programming
IDE, debug工具等

Examples: anjuta, gdb, eclipse

Project Management
时间表管理,群组待办工作追踪,bug追踪程序等。

Examples: planner, bugzilla, gnotime

Science
科学与工程相关软件。

Astronomy
天文学相关软件

Examples: celestia, spacechart, stellarium

Biology
生物学相关软件

Examples: arb, ncbi-tools-x11, seaview

Chemistry
化学相关软件

Examples: chemtool, kalzium, xdrawchem

Data Analysis
软件设计用来处理,摘录和展示通用科学数据。

Examples: fityk, ygraph, mn-fit

Electronics
电路设计工具,模拟器和为微处理器设计的计算机汇编程序。

Examples: geda, gnucap, tkgate

Engineering
CAD, UML工具,图表绘画和其他工程学相关软件。

Examples: tcm, dia, qcad

Geoscience
地球科学相关软件。

Examples: earth3d, qgis, therion

Mathematics
数学相关软件。

Examples: gcalctool, snappea, xeukleides

Medicine
医学相关软件。

Examples: mssstest, gnumed-client, xmedcon

Physics
物理学相关软件。

Examples: kxterm, ifrit, paw

Social
社会科学相关软件

Examples: gnomesword, hanzim, bibletime

Shells
在终端模拟器里使用的各种shell。

Examples: bash, ksh, zsh

Sound
声音播放器,编辑器,提取和录制工具。

Examples: beep-media-player, grip, audacity

System
系统相关软件

Administration
管理工具和系统配置组件,也包括个人用户设置工具。

Examples: gnome-control-center, configure-debian, gksu

Hardware
处理特殊硬件的工具,特别包括非标准化的笔记本电脑硬件。

Examples: toshutils, nvclock-gtk, nvtv

Language Environment
这个section为有特殊情况和功能的语言环境保留。

Monitoring
系统信息和监控工具,日志查看器等。

Examples: top, hal-device-manager, gtkdiskfree

Package Management
软件包管理工具和相关工具。

Examples: aptitude, deborphan, smartpm

Security
安全,密码和隐私相关工具,防病毒,用于追踪和报告bug的工具等。

Examples: gpgkeys, bastille, avscan

Terminal Emulators
图形化的终端模拟器。

Examples: xterm, gnome-terminal, rxvt

Text
面向文本的工具,比如词典,OCR,翻译,文本分析软件。

Examples: kdrill, stardict, turkey

TV and Radio
TV-in, TV-out, FM radio, teletext浏览器等。

Examples: gradio, gatos, alevt

Viewers
浏览观看图片,文档和其他(非视频)文件类型的软件。

Examples: gqview, evince, gthumb

Video
视频播放器,编辑器和rip,录制工具。

Examples: istanbul, totem, kino

Web Development
用于网站网页编辑,web编程和网站管理的软件。

Examples: bluefish, screem, gphpedit

Games
游戏和游戏重制版

Action
含有大量动作和需要快速反应的游戏。

Examples: xsoldier, supertux, xmoto

Adventure
角色扮演和冒险游戏,交互式电影和故事等。

Examples: beneath-a-steel-sky, egoboo, kq

Blocks
俄罗斯方块类型,掉落方块类型游戏。

Examples: crack-attack, frozen-bubble, netris

Board
在棋盘上玩的游戏。

Examples: phalanx, xshogi, xboard

Card
牌类游戏。

Examples: pysol, ace-of-penguins, xpat2

Puzzles
测试想象力和逻辑的游戏

Examples: xmpuzzles, sgt-puzzles, enigma

Simulation
模拟真实世界的细节与复杂状态的游戏。

Examples: flightgear, torcs

Strategy
策略游戏

Examples: wesnoth, widelands, netpanzer

Tools
服务器浏览器,配置工具,编辑器和其他游戏相关的工具。

Examples: xqf, crystalspace

Toys
娱乐,视觉小工具,娱乐性的演示,屏幕保护程序及其他在屏幕上显示的各种工具。

Examples: xdesktopwaves, xphoon, xpenguins

Help
提供用户文档的程序

Examples: debian-reference, apt-howto, dhelp

Screen
作用于整个屏幕的软件。

Saving
仅适用于用于关闭屏幕的工具,Tools for blanking the screen. 屏幕黑客和配置GUI工具有其他专用 sections.

Examples: xscreensaver, xlockmore

Locking
用于锁定屏幕的工具

Examples: xscreensaver, xlockmore

Window Managers
X window 管理器。

Examples: fluxbox, metacity, waimea

FVWM Modules
基于FVWM窗口管理器模块。只有正在运行的窗口管理器的相关模块得以显示,不要建立子section。

Examples: fvwm, fvwm-gnome, fvwm95

Window Maker
为wmake保留的特殊情况section。所有的windowmaker条目都汇集到这里。
回复