当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于deb包制作的几个疑问
帖子发表于 : 2008-12-03 17:04 
头像

注册: 2008-07-21 9:44
帖子: 2371
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
下面的deb包的制作方法摘自full circle 的第12期

制作一个.deb软件包的第一步通常是下载这个程序,接着编译(如有必要)并进行安装。这通常涉及到./configure,make,sudo make install.然后找出这个程序的安装路径。(用文本编辑器打开那个Makefile文件,查看里面的install部分,如果你找不到这个文件,去/usr看看)
现在是时候生成control(控制)文件。简单的说,这是.deb包的描述文件。下面是一个control文件的示例(把下面的内容粘贴到一个名为"control"的文件,不要任何扩展名):

代码:
Package:fungame
Version:1.0
Section:games
Priority:optional
Architecture:i386
Essential:no
Depends:libfungame,gamelibrary(>=1.4.0)
Recommends:fungamesaves1|fungamesaves2
Suggests:optionalfungame
Installed-Size:1024
Maintainer:Game Maker[gamer@gamers.net]
Conflicts:stupidfungamethatbreaksthisone
Replaces:oldfungame
Description:A short description of the program
...
A long description


需要注意的有一下几点:首先,你需要在文件最后留下一空白行。这是至关重要的,如果没有…你的.deb包无法运行。
这些语句本身是简洁易懂的。Package部分指该软件包的名字。如果你的软件包名称有两个词,用一个连字符(-)把它们连起来。软件包的名称只能有小写的英文字母,数字(不管你相信不相信)以及"+"和"-"。Version部分显然是程序的版本。确保这里的值不包括连字符。Section部分列出了你的软件属于的类别,可能的值包括admin(管理),games(游戏),gnome,kde,mail(电子邮件),misc(杂项)<译者注:misc是miscellaneous的简称>,net(网络),sound(声音),text(文本),utils(实用工具)和web(万维网)。Priority部分声明这个包的优先级(大部分的时候使用optional(可选的))。Architecture是该程序可运行的CPU架构(可能的值为i386,amd64和powerpc)<译者注:此处虽然是专有名词,但是由于linux是大小写敏感的,所以文件内还是应该小写>。Eseential指该软件包是否是必须的(大部分的时候不是)。Depends,Recommends和Suggests都很相似。Depends意味着要使用这个程序必须拥有的程序,Recommends指除了极特殊情况下的安装之外,大多数时候都需要的依赖关系,而Suggests意味可能给这个软件带来更多功能的,但是没有完全没有问题的依赖关系<译者注:同Recommands>。你可以用英文的半角逗号分开不同的依赖关系(,)。如果两个软件中的任何一个可以工作,用竖线"|"分开它们。你也可以指定特定的版本,用在括号里用<<(小于),<=(小于或等于),=(等于),>=(大于或等于),或>>(大于)来表示。Install-Size是程序安装后的大小,按KB算。Maintainer就是你(写上你的名字,后面的方括号"[ ]"里留下你的电子邮件地址)。Conflicts表示跟这个程序冲突的软件。Replaces表明哪些软件包将被这个程序取代。最后,Description显示你的描述。
这样你的control文件就完成了,把它保存到一个名为"/DEBIAN"的文件夹里(注意必须大写)。例如,如果你正在建立一个软件包,并且你的要打包的软件是在~/fungame/,那么你应该把你的control文件放在~/fungame/DEBIAN/下面。
现在是时候添加实际程序了。复制要打包的程序到你的工作文件夹(上文中的~/fungame)。比如说,如果软件X位于/usr/local/X/,可执行文件在/usr/bin/X,你的.deb文件夹是~/fungame/,把/usr/local/X/的所有东西复制到~/fungame/usr/local/X/,同时复制文件夹/usr/bin/fungame/下的所有东西到~/fungame/usr/bin。你也可以建一个菜单条目(一个.desktop文件),这里的例子位于~/fungame/usr/share/applications/fungame.desktop。这个文件的内容如下:

代码:
[Desktop Entry]
Type=Application
Version=1.0
Encoding=UTF-8
Name=Fun Game
Exec=fungame
Comment=
Icon=/usr/local/fungame/fungame.png
Terminal=false
Categories=Application;Game;
StartupNotify=false
MimeType=


你可以忽略"Icon"那一行
现在是生成你的软件包的时候了。cd进你的工作文件夹(例如~/fungame/)并在终端运行命令dpkg -b [derectory] [packagename.deb]。将[derectory]替换成你的工作目录(这里是~/fungame/),·[packagename.deb]替换成将要生成的软件包的名字。软件包的名字也是有规定的。正确的命名规则为:program-name_version_architeture.deb。所有的值应该与它们在control文件里对应的语句相同。

现在的问题是:
1、打包一个 程序一定得在本机上先编译安装这个程序吗?可否直接根据Makefile文件直接打包?(觉得貌似不行)
2、在一台i386的机器上可否打包一个64位的deb包?

目前就只有这么两个问题,花了点时间把full circle上的文章摘录下来与大家交流分享,希望能抛砖引玉,各位路过的大侠分享一下打包的方法和经验。
ps:小生菜菜的,还没有打包的经验


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于deb包制作的几个疑问
帖子发表于 : 2008-12-03 19:19 
头像

注册: 2006-09-10 14:48
帖子: 115
送出感谢: 0 次
接收感谢: 0 次
fhc2007 写道:
下面的deb包的制作方法摘自full circle 的第12期

制作一个.deb软件包的第一步通常是下载这个程序,接着编译(如有必要)并进行安装。这通常涉及到./configure,make,sudo make install.然后找出这个程序的安装路径。(用文本编辑器打开那个Makefile文件,查看里面的install部分,如果你找不到这个文件,去/usr看看)
现在是时候生成control(控制)文件。简单的说,这是.deb包的描述文件。下面是一个control文件的示例(把下面的内容粘贴到一个名为"control"的文件,不要任何扩展名):

代码:
Package:fungame
Version:1.0
Section:games
Priority:optional
Architecture:i386
Essential:no
Depends:libfungame,gamelibrary(>=1.4.0)
Recommends:fungamesaves1|fungamesaves2
Suggests:optionalfungame
Installed-Size:1024
Maintainer:Game Maker[gamer@gamers.net]
Conflicts:stupidfungamethatbreaksthisone
Replaces:oldfungame
Description:A short description of the program
...
A long description


需要注意的有一下几点:首先,你需要在文件最后留下一空白行。这是至关重要的,如果没有…你的.deb包无法运行。
这些语句本身是简洁易懂的。Package部分指该软件包的名字。如果你的软件包名称有两个词,用一个连字符(-)把它们连起来。软件包的名称只能有小写的英文字母,数字(不管你相信不相信)以及"+"和"-"。Version部分显然是程序的版本。确保这里的值不包括连字符。Section部分列出了你的软件属于的类别,可能的值包括admin(管理),games(游戏),gnome,kde,mail(电子邮件),misc(杂项)<译者注:misc是miscellaneous的简称>,net(网络),sound(声音),text(文本),utils(实用工具)和web(万维网)。Priority部分声明这个包的优先级(大部分的时候使用optional(可选的))。Architecture是该程序可运行的CPU架构(可能的值为i386,amd64和powerpc)<译者注:此处虽然是专有名词,但是由于linux是大小写敏感的,所以文件内还是应该小写>。Eseential指该软件包是否是必须的(大部分的时候不是)。Depends,Recommends和Suggests都很相似。Depends意味着要使用这个程序必须拥有的程序,Recommends指除了极特殊情况下的安装之外,大多数时候都需要的依赖关系,而Suggests意味可能给这个软件带来更多功能的,但是没有完全没有问题的依赖关系<译者注:同Recommands>。你可以用英文的半角逗号分开不同的依赖关系(,)。如果两个软件中的任何一个可以工作,用竖线"|"分开它们。你也可以指定特定的版本,用在括号里用<<(小于),<=(小于或等于),=(等于),>=(大于或等于),或>>(大于)来表示。Install-Size是程序安装后的大小,按KB算。Maintainer就是你(写上你的名字,后面的方括号"[ ]"里留下你的电子邮件地址)。Conflicts表示跟这个程序冲突的软件。Replaces表明哪些软件包将被这个程序取代。最后,Description显示你的描述。
这样你的control文件就完成了,把它保存到一个名为"/DEBIAN"的文件夹里(注意必须大写)。例如,如果你正在建立一个软件包,并且你的要打包的软件是在~/fungame/,那么你应该把你的control文件放在~/fungame/DEBIAN/下面。
现在是时候添加实际程序了。复制要打包的程序到你的工作文件夹(上文中的~/fungame)。比如说,如果软件X位于/usr/local/X/,可执行文件在/usr/bin/X,你的.deb文件夹是~/fungame/,把/usr/local/X/的所有东西复制到~/fungame/usr/local/X/,同时复制文件夹/usr/bin/fungame/下的所有东西到~/fungame/usr/bin。你也可以建一个菜单条目(一个.desktop文件),这里的例子位于~/fungame/usr/share/applications/fungame.desktop。这个文件的内容如下:

代码:
[Desktop Entry]
Type=Application
Version=1.0
Encoding=UTF-8
Name=Fun Game
Exec=fungame
Comment=
Icon=/usr/local/fungame/fungame.png
Terminal=false
Categories=Application;Game;
StartupNotify=false
MimeType=


你可以忽略"Icon"那一行
现在是生成你的软件包的时候了。cd进你的工作文件夹(例如~/fungame/)并在终端运行命令dpkg -b [derectory] [packagename.deb]。将[derectory]替换成你的工作目录(这里是~/fungame/),·[packagename.deb]替换成将要生成的软件包的名字。软件包的名字也是有规定的。正确的命名规则为:program-name_version_architeture.deb。所有的值应该与它们在control文件里对应的语句相同。

现在的问题是:
1、打包一个 程序一定得在本机上先编译安装这个程序吗?可否直接根据Makefile文件直接打包?(觉得貌似不行)
2、在一台i386的机器上可否打包一个64位的deb包?

目前就只有这么两个问题,花了点时间把full circle上的文章摘录下来与大家交流分享,希望能抛砖引玉,各位路过的大侠分享一下打包的方法和经验。
ps:小生菜菜的,还没有打包的经验


程序打包都是把编译好的二进制文件放进一个盒子里,相当于Windows把exe、dll之类的做成zip压缩包,所以肯定需要预先编译好。除非你做得是源码包或者普通资源包(图片、普通数据文件等)。显然你的两个问题都是否定的。 :em06


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于deb包制作的几个疑问
帖子发表于 : 2008-12-03 20:12 
头像

注册: 2008-07-21 9:44
帖子: 2371
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
谢谢楼上的回复。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译