查看“Debian-maint-guide/9”的源代码
来自Ubuntu中文
←
Debian-maint-guide/9
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
= Debian新维护人员手册 = == 第 9 章 - 更新软件包 == === 9.1 新的Debian修订版 === 现在我们假设有人提交了一个关于你的软件包的bug报告,第#54321号,它描述了一个你可以解决的问题。要为你的软件包创建一个新的Debian修订版,你需要: *当然,必需更正软件包的源代码中的问题。 *在Debian changelog文件中增加一个新的修订版,比如通过命令“dch -i”或者是“dch -v <version>-<revision>”。然后用你喜欢的文本编辑器插入新的关于修改的注释信息。 小技巧:如何才能方便地以希望的格式得到日期呢?使用“822-date”或者是“date -R”。<br> *在changelog的项目上包含一份对bug的简短描述以及解决方法,并将它附加 在“Closes: #54321”之后。这样,当你的软件包被Debian文档库接受的时候,这个bug报告将会被文档维护软件自动关闭。 *重复你在完整的rebuild, 第 6.1 节、检查软件包中的错误, 第 7 章和上传软件包, 第 8 章中所做的。不同的是这一次,原始的源代码将不会被包括,因为它们并没有被修改并且已经存在于Debian的文档库中了。 === 9.2 新的上游版本(基本) === 现在我们来考虑另外一种情况,一种稍微复杂一点的情况——一个上游的版本发布了,当然你会希望它能够被打包。你需要做下面的事情: *下载新版本的源代码,并将它的压缩包(比如“gentoo-0.9.13.tar.gz”)放到原先的源代码目录树的上层目录中(比如~/gentoo/)。 *进入旧的源代码目录,并且运行下面的命令: uupdate -u gentoo-0.9.13.tar.gz 当然用你的新程序的文档名称替换掉这里的文件名。uupdate(1)将会修改这个压缩包的名字,还会试着将原先.diff.gz文件中的所有的修改应用到它上面,并且会更新新的debian/changelog文件。<br> *更换到目录“../gentoo-0.9.13”中,它是新的软件包源码目录树,重复你在完整的rebuild, 第 6.1 节、检查软件包中的错误, 第 7 章和上传软件包, 第 8 章中所做的。 注意如果你已经如watch.ex, 第 5.10 节所述建立了一个“debian/watch”文件,那么你就可以通过运行uscan(1)来自动检测新版本的源代码并下载它们,然后运行uupdate。 === 9.3 新的上游版本 (实际的) === 当为Debain档案库准备软件包时,你必须仔细检查最终的软件包。下面是一个更加实际的过程。 #校验上游修改 #*阅读上游的changelog、NEWS及其它可能和新版本一起发布的文档。 #*用“diff -urN”比较新旧上游软件包的差别,从而对修改的范围有个概略性的了解,哪些工作已经完成了(同时因此在哪里可能会有新的bug),而且还要留心观察任何值得怀疑的东西。 #把旧Debian软件包升级为新版本。 #*解压源码包,并修改源码树的根目录为<packagename>-<upstream_version>/并“cd”到此目录中。 #*复制父目录中的源码包并将其更名为<packagename>_<upstream_version>.orig.tar.gz。 #*对新的源码树也进行与旧源码树一样的修改。可能的方法有: #*#“zcat /path/to/<packagename>_<old-version>.diff.gz | patch -p1”命令, #*#“uupdate”命令 #*#“svn merge”命令,如果你使用Subversion仓库来管理源码,或者 #*#直接将debian/目录从旧源码树复制到新的源码树中,如果它是用dpatch打包的。 #*保留旧的修改日志项目(看上去不重要,但其实随时会有意外...) #*新软件包的版本应该由上游版本号加上Debian修订号-1构成,例如“0.9.13-1”。 #*在debian/changele文件的顶部为此新版本添加修改日志项目 ——“新的上游版本”。例如“dch -v 0.9.13-1”. #*简要地说明新上游版本中修复的已报bug并在修改日志中关闭这些bug。 #*简要地说明维护者为修复已报bug对新上游版本所做的修改并且在修改日志中关闭这些bug。 #*如果补丁或者合并的过程并不顺利,就要仔细地查出哪些地方有错误(在.rej文件中会留下线索。)多数情况下是因为你使用的补丁已经整合到上游版本中,这样就不再需要那补丁了。 #*向新版本的升级应当是安静地且不会打扰到用户(除非是发现旧的bug已经被修复或者增加了新的功能,已有的用户应当不会注意到升级。) [4] #*如果你处于某种原因需要已经删除的模板文件,你可以在同一个已经“debian化” 的目录中再次运行dh_make,运行时加上-o选项。然后就可以修改它了。 #*应当对已经存在的Debian修改进行重新评估;除非有什么不得已的原因,都应当删除掉上游作者已经合并的(无论何种形式)并继续保留上游作者并未合并的。 #*If any changes were made to the build system (hopefully you'd know from the step 1 and update the debian/rules and debian/control build dependencies if necessary. #如debuild命令, 第 6.3 节或pbuilder包, 第 7.6 节所述构建新的软件包。最好是使 用pbuilder。 #核对新软件包是否构造正确。 #*执行 检查软件包中的错误, 第 7 章. #*执行 校验软件包的升级, 第 9.6 节. #*在此检查是否有已经修复但在Debian Bug跟踪系统(BTS)仍然为开启状态的bug。 #*检查.changes文件的内容以确认你把软件包上传到了正确的发行版中、已经关闭的bug已经列出在“Closes:”域中,而“Maintainer:Check”和“Changed-By:”域可以匹配,以及文件已经用GPG签署等等。 #如果为修正任何内容而修改了软件包,请返回到第2步直到满意。 #如果你需要别人帮助才可以上传,请一定要注意在构造软件包的时候使用特殊的选项(如“dpkg-buildpackage -sa -v ...”),同时请通知帮助你上传的人以便他/她能够正确构造软件包。 #如果你自己上传,执行上传软件包, 第 8 章. === 9.4 orig.tar.gz文件 === 如果你构造软件时使用的源码树只有debian/目录而没有orig.tar.gz文件在其父目录中,最后你将得到一个Debian专用源码包,而没有diff.gz文件。这种包装方式应当仅对那些Debian专用的软件适用,这些软件包在其它发行版中应当是完全没有用处的。 [5] 要获得由orig.tar.gz和diff.gz两个文件构成的非Debian专用的源码包,你必须手工复制上游软件包到父目录中,并将其名称改为<packagename>_<upstream_version>.orig.tar.gz,如首次“Debian化”, 第 2.4 节所述由dh_make所做的那样。 === 9.5 cvs-buildpackage命令和similes === 你应当考虑使用一些源码关系系统来管理软件包。有几个脚本已经被定制用于和多数流行的系统一起工作。 *CVS **cvs-buildpackage *Subversion **svn-buildpackage *Arch (tla) **tla-buildpackage **arch-buildpackage 这些命令也可以使对新版上游软件的打包自动化。 === 9.6 校验软件包的升级 === 当你创建了一个软件包的新版本,你必需做下面的事情来确认所有的人都可以安全的升级: *从原先的版本升级, *降级到原先的版本并删除它, *安装新的软件包, *删除它然后重新安装它一遍, *彻底清楚它。 注意如果你以前的软件包已经被发布到Debian,人们会通常会更新到Debian最新的发布中的那个版本上,所以要记得测试从那个版本升级的情况。
返回
Debian-maint-guide/9
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息