如何将软件包从Debian复制到我的PPA?


10

我想将Debian sid 的最新美食包添加到我们团队的PPA中,以便希望运行最新版Gourmet的Ubuntu用户可以将该PPA添加到他们的软件源中。(在依赖方面,这不应该是一个大问题,因为我们当前所有的依赖几乎都已经在当前支持的所有Ubuntu版本中提供了。)

我已经下载了*.dsc文件以及debian和orig tarball,甚至发现我可以将用于软件包的source.changes文件。我还下载了Debian维护者的公钥,以便dput可以验证软件包。然后,我尝试使用来将软件包上传到我们的PPA dput ppa:~gourmet/ppa gourmet_0.17.3-1_source.changes(我也尝试不使用tilda。)这似乎成功了,但是我没有收到确认电子邮件,并且我们的PPA上现在没有显示软件包,这使我相信该软件包被拒绝,因为Debian维护者的钥匙显然不在我们团队成员的钥匙之列。

那么,将软件包从Debian(sid)“复制”到Launchpad PPA的最简单方法是什么?上传之前,我真的需要在本地重建整个软件包吗?


顺便说一句,由于Ubuntu开发版本会自动从Debian同步其软件包(即在DebianImportFreeze之前),所以我很乐意接受一个答案,告诉我如何从Utopic复制软件包。
Bernhard Reiter 2014年

Answers:


12

在上载之前,您确实需要在本地重建软件包,以便调整更改日志并重新生成更改文件。尽管由于向后移植软件包是一项很常见的任务,所以已经编写了脚本。签出backportpackage 联机帮助页图标命令ubuntu-dev-tools安装ubuntu-dev-tools软件包。

要从Debian向后移植软件包,只需提供目标发行版系列,PPA和该软件包的dsc文件:

backportpackage -d trusty -u ppa:gourmet/ppa http://ftp.de.debian.org/debian/pool/main/g/gourmet/gourmet_0.17.3-1.dsc

将软件包从一个Ubuntu版本反向移植到另一个版本甚至更简单,因为您不需要找到dsc文件。假设我们要从utopic移植到trusty:

backportpackage -s utopic -d trusty -u ppa:gourmet/ppa gourmet

太棒了!在我看来,唯一看起来像个错误的事情是,即使我~gourmet/ppa-u参数作为参数传递给了我,该程序包最终还是以我的个人PPA(〜ockham-razor / ppa)结束了。(但幸运的是,我能够通过Launchpad将其从我的PPA复制到美食家团队。)
Bernhard Reiter 2014年

1

有几种方法可以做到这一点。

当我为Rhythmbox执行此操作时,我遵循以下记录:

一种。获取源文件和debian文件

在此处输入图片说明

b。解压缩源(.orig.tar.xz)

C。重命名源文件夹,例如rhythmbox-3.0.3

C。解压缩debian文件(.debian.tar.xz)

d。将debian文件夹移至源目录下

e。 dch -i更改变更日志文件

F。将“不稳定”的软件包名称更改为ubuntu目标的名称-在这里,我将精确用于12.04。根据您的应用程序更改版本。这里的rhythmbox是3.0.3-所以我刚刚添加了-1~ppafossfreedom

rhythmbox (3.0.3-1~ppafossfreedom) precise; urgency=low

  * rebuild

 -- fossfreedom <fossfreedom@somewheremail.com>  Thur, 07 Jun 2012 13:19:18 +0100

G。创建一个新的源包:dh_build --createorig

H。刚刚建立的来源与您的关键:debuild -S -k0xABCDEFG哪里ABCDEFG是你的钥匙

一世。上传您的软件包以进行构建:

cd ..
dput ppa:fossfreedom/rhythmbox rhythmbox_3.0.3-1_sources.changes    

好吧,这基本上是在重建软件包。那好吧。我希望有一种更简单的方法,但我想没有。
Bernhard Reiter 2014年

查看包中的dget命令devscripts。它将大大简化此过程。
andrewsomething 2014年

@andrewsomething-用一个例子将其转化为答案:)-我很想知道这是否也可以简化我的包装。
fossfreedom

好吧,我有一个完全不同的答案,但您仍然应该了解dget=)dsc文件包含有关源包其他部分的所有信息。因此dget,如果您提供了指向dsc文件的链接,则将抓取所有内容并正确提取它。dget -ux http://http.debian.net/debian/pool/main/r/rhythmbox/rhythmbox_3.0.3-1.dsc
andrewsomething 2014年

简洁的答案-做得好+1
自由自由
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.