设为主页
收藏本站
当前位置: >
首页
->
Linux技术
->
发行版专区
->
Debian
->
在Debian中打造属于自己的deb包
相关分类:
CentOS
ubuntu
turbolinux
Suse
slackware
Redhat
Mepis
mandriva
Mandrake
knoppix
Gentoo
Fedora
Debian
红旗
站内搜索:
智能模糊搜索
仅搜索标题
Debian4(Etch)系统简要安装详细介
(04-27)
使用apt-mirror构建本地Debian镜像
(04-22)
Debian/Ubuntu Linux下内核编程者必
(04-11)
debian配置PHP5+MYSQL+Apache
(04-16)
Kubuntu 6.10 安装指南(图)
(04-22)
《Debian服务器设置入门》系列教程
(05-05)
Debian GNU/Linux 完全安装手册
(05-05)
Debian On Slug的安装笔记
(05-05)
在 debian 上玩 dos 游戏
(05-05)
菜鸟乐园 Debian GNU/Linux的安装过
(05-01)
在Debian中打造属于自己的deb包
作者:
linuxsir
来源:
linuxsir
点击:
日期:
2007-04-22 [
收藏
] [
投稿
]
IE是否经常中毒?推荐您
问题:如果你要在Debian系统中发布一款软件或者一个包,该怎么样做呢?如果你的项目中有各种二进制包,该怎么样维护呢?如果你自己做了一款小小的实用软件,该怎么样与朋友分享呢?…….
案例:假如我从网上下载了eclipse-SDK-3.1-linux-gtk.tar.gz压缩文件,我想把他安装到/opt/eclipse目录下,且菜单Apps-->Programming中有Eclipse菜单项。并且在命令终端中输入eclipse中可以运行Eclipse程序,而且还要象其他的软件包一样,可以方便的进行安装(install )和卸载(remove)。
如果你还不知道怎么样做,请跟我来,我将告诉你解决方案。
熟悉Debian(Linux的发行版之一)的用户,应该对他的包管理机制记忆犹新。便捷的包管理机制是Debian易用的一个主要特性。Debian包管理机制可分为两个层面:对软件包文件操作以及对包中文件的操作。apt和dselect完成前者,dpkg完成后者。
接下来,我们将借助Debian的包管理机制,打造属于自己的deb包。
首先,介绍其目录结构(超级郁闷,放进来的图都变了,所以只好这样描述)
在任何一个目录下新建一个eclipse目录
eclipse/DEBIAN
eclipse/DEBIAN/control
eclipse/DEBIAN/md5sums
eclipse/DEBIAN/postinst
eclipse/DEBIAN/postrm
eclipse/opt
eclipse/opt/eclipse (是eclipse的安装文件目录)
eclipse/usr
eclipse/usr/bin
eclipse/usr/bin/eclipse(是命令脚本)
eclipse/lib
eclipse/lib/menu
eclipse/lib/menu/eclipse(是菜单配置)
图一 目录结构
其中,eclipse文件夹表示待发布的软件,也是我们的工作目录。 DEBIAN文件夹下包含control和md5sums等文本文件。opt目录表示待发布的包将要安装(放置)的地方。usr/bin/目录提供了运行该程序命令的脚本。usr/lib/menu目录提供了将Eclipse加入菜单的脚本。
DEBIAN必须大写,且必须为该名。根据不同的情况,该目录将包含不同的文件,其中control和md5sums文件是最小(基本)要求。如果待发布包在安装和卸载,需要运行某些命令或脚本进行初始化和配置时,则会包含下列文件:
preinst
在Debian包文件解包之前,将会运行该脚本。许多“preinst”脚本的任务是停止作用于待升级软件包的服务,直到软件包安装或升级完成。
postinst
该脚本的主要任务是完成安装包时的配置工作。通常,“postinst”脚本等待用户输入,或提醒用户,如果他接受当前默认值,要记得软件包安装完后返回重新配置。许多“postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。
prerm
该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。
postrm
该脚本负责修改软件包链接或文件关联,或删除由它创建的文件
因为本案例需要将Eclipse加入到菜单中,所以应该包含postinst and postrm这两个文件。
control文件内容如下:
Package: eclipse
Version: 3.1
Section: utils
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.3.2.ds1-4),jdk
Installed-Size: 14062
Maintainer: xxxxxx<xxx@xxxxxx.xxx>
Description: Develop tools
md5sums是基于md5sum命令生成的文件。
因为在安装本包时,只需要更新菜单项,所以postinst脚本只需要包含update-menus命令,卸载时也是同样的操作。其postinst脚本内容为:
程序清单一
#!/bin/sh
# filename : postinst/postrm
if test -x /usr/bin/update-menus; then
update-menus
fi
postrm脚本内容跟postinst内容相同。如果你还要做其他的操作,则可以在这两个文件中加入其他内容。
/opt/eclipse/目录就是待发布(安装)的软件目录。对于本例只需要在/opt目录下执行该操作:$ tar xzvf eclipse-SDK-3.1-linux-gtk.tar.gz.
要在命令终端中输入eclipse,也能运行Eclipse。通常有三种解决方案:
1) 把/opt/eclipse/加入到PATH变量中。
2) 在/usr/bin目录建立一个指向/opt/eclipse/eclipse的链接
3) 在/usr/bin目录下新建一个脚本,在脚本中运行该程序
综合考虑,第一种方案不可行。第二种方案比较好,但失败了。因为eclipse在运行时,需要starup.jar文件,并且是相对路径下的 starup.jar文件,当你在其他任何路径下运行eclipse时,都将会失败。只有采用第三种方案,建立一个脚本。只需要在该脚本中写入:exec /opt/eclipse/eclipse。
程序清单二:
#!/bin/sh
# filename : eclipse
exec /opt/eclipse/eclipse
接下来,解决最后一个问题,怎么样把eclipse加入到Apps-->Programming的菜单中去?基本上每一个Debian系统的应用程序都会有一个菜单配置文件,用以定义该程序的菜单项名称、位置和命令行选项等参数。该配置文件一般位于/usr/lib/menus、/etc/menu或 ~/.menu目录下。
我们新建一个文件eclipse ,程序安装后,将置于/usr/lib/menu/路径下
该eclipse配置文件格式示例如下:
?package(eclipse): \ #定义软件包名
needs="X11" \ #定义该菜单项需在X11环境中使用
section="Apps/Programming"\ #定义菜单项的路径位置
title="Eclipse" \ #定义菜单项的标题
command="/usr/bin/eclipse" \ #定义命令和选项
hints="Eclipse" \ #定义一些提示信息
icon="/opt/eclipse/icon.xpm" #定义菜单项的图标
目录结构框架介绍完毕后,就开始打地基,准备文件吧,需要准备的文件有:
1) control(必须要)
2) eclipse.sh(用于终端,因为与菜单的eclispe重名,所有加了.sh后缀)
3) eclipse.menu (用于菜单)
4) eclipse-SDK-3.1-linux-gtk.tar.gz (下载的eclipse包)
5) postinst (用于安装和卸载时调用的脚本)
将上述所有文件放置一目录中,并在该目录下新建mkeclipse脚本,主要用于完成上面的工作,其内容如下:
#!/bin/sh
ROOT=$PWD
ECLIPSE=$ROOT/eclipse-SDK-3.1-linux-gtk.tar.gz
CONTROL=$ROOT/control
POST=$ROOT/postinst
BINECP=$ROOT/eclipse.sh
MENUS=$ROOT/eclipse.menu
if [ -w "$ROOT" ];then
mkdir eclipse
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>> 论坛入口 <<
上一页
1
2
下一页
上一篇:
在Debian上安装配置XAMPP
下一篇:
在Debian Etch上安装使用OpenVZ
【
文章评论
】 【
收藏本文
】 【
推荐好友
】 【
打印本文
】 【
我要投稿
】 【
论坛讨论
】
相关文章:
·
《Debian服务器设置入门》系列教程 前言
·
Debian GNU/Linux 完全安装手册
·
Debian On Slug的安装笔记
·
在 debian 上玩 dos 游戏
·
菜鸟乐园 Debian GNU/Linux的安装过程
·
Debian GNU/Linux Rssh安全绕过漏洞
·
Debian4(Etch)系统简要安装详细介绍
·
使用apt-mirror构建本地Debian镜像
·
Debian On Slug的安装笔记
·
Debian+vsftpd+MySQL实现虚拟用户
文章评论:
(1条)
请留名:
匿名评论
点击查看所有评论
论坛讨论
声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。