如何构建一个比我的稳定版本更新版本的软件包?

我想在我的稳定Ubuntu版本中使用更新的软件包版本。 要求后退需要太长时间没有明显的结果,所以我想也许我可以自己构建更新的版本。

任何人都可以告诉我目前构建Ubuntu上已有的新版本软件包的最佳实践是什么?

更新 :我发现我需要pbuilder来保持我的系统不受构建依赖性的影响。 所以我做到了:

 sudo apt-get install pbuilder sudo pbuilder create # create isolated environment for building packages 

UPD2 :我试图检查是否可以构建当前版本,因此我获取了当前源代码:

 mkdir delme cd delme apt-get source  

UPD3 :现在我尝试从源代码构建包,但找不到结果:

 sudo pbuilder build *.dsc 

日志说:

 ... 0 packages upgraded, 94 newly installed, 0 to remove and 0 not upgraded. Need to get 30.2 MB of archives. After unpacking 89.4 MB will be used. The following packages have unmet dependencies: pbuilder-satisfydepends-dummy : Depends: libjansson-dev which is a virtual package. Depends: libudev-dev but it is not going to be installed. Depends: ocl-icd-opencl-dev which is a virtual package. or opencl-dev which is a virtual package. Unable to resolve dependencies! Giving up... The following NEW packages will be installed: ... Need to get 30.2 MB of archives. After unpacking 89.4 MB will be used. Abort. E: pbuilder-satisfydepends failed. I: Copying back the cached apt archive contents ... 

UPD4 :似乎这些未满足的依赖项来自universe包存储库,所以我必须启用它:

 sudo pbuilder update --components "main universe" --override-config 

没有--override-config pbuilder会抱怨它没有设置。 一切都建成了:

 ls -la /var/cache/pbuilder/result/ 

UP5 :找出可用的软件包版本并获取所需的源代码:

 uscan --report --verbose uscan --download-version  

UP6 :找到uupdate实用程序并用它来为新包创建目录并更新debian/changelog ,这是生成新版本所需的:

 cd - uupdate ../_.orig.tar.gz cd ../- vim debian/changelog 

UP7 :要使用pbuilder构建源代码,我需要生成.dsc文件。 它通常用debuild -S命令完成,或者用`pbuilder中的pdebuild -S

 pdebuild -S 

出错了:

 ... fakeroot debian/rules clean dh clean --with autoreconf dh: unable to load addon autoreconf: .. BEGIN failed--compilation aborted at (eval 19) line 2. make: *** [clean] Error 2 dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 2 

看起来没有autoreconf包,但是pbiulder应该自动获取它,并且好像它使用.dsc文件来执行此操作。 catch22。

UPD8 :构建.dsc文件的命令是dpkg-source

 cd .. dpkg-source -b - 

现在可以在它上面运行pbuilder

 sudo pbuilder build _.dsc ls -la /var/cache/pbuilder/result/ 

UP9 :上传到PPA就像运行一样简单:

 dput ppa:techtonik/backports /var/cache/pbuilder/result/_.changes 

但它不起作用:

 Checking signature on .changes gpg: no valid OpenPGP data found. gpg: the signature could not be verified. ... No signature on /var/cache/pbuilder/result/_.changes 

UP10 :我不记得我是如何生成GPG密钥的,但我有一个。 找到了签署包裹的方法。 Edited Maintaner: .dsc文件中的字段,并使用了debsign

 sudo vim /var/cache/pbuilder/result/_.dsc sudo debsign /var/cache/pbuilder/result/_.changes 

尝试上传失败:

 Error: uploading files for distribution UNRELEASED to ppa not allowed. 

UP11 :重做第6步中的所有内容。我怎么知道我需要编辑debian/changes来替换更换UNRELEASED ,并在Maintainer: debian/control字段中设置我的电子邮件?

 vim -/debian/changelog vim -/debian/control dpkg-source -b - sudo pbuilder build _.dsc sudo debsign /var/cache/pbuilder/result/_.changes sudo dput ppa:techtonik/backports /var/cache/pbuilder/result/_.changes 

UPD12 :我仍然无法上传到PPA。 首先它是Unable to find distroseries: unstable ,因为我指定unstable而不是saucy作为UNRELEASED替换。 在重复步骤11之后,它抱怨Already uploaded to ...-f键进行了dput 。 现在有一个上传被拒绝的邮件,因为Source/binary (ie mixed) uploads are not allowed.

在新的地方据说我需要使用debuild -S构建我的包,但我不知道如何告诉pbuilder

UPD14 :看起来罪魁祸首是dh-autoreconf包,这是构建之前清理源所必需的,但是pbuilderdebuild错过了这个事实并且无法恢复。 在主机系统上安装dh-autoreconf允许构建源包,签名并上传它,即使没有pbuilder构建。

 cd - debuild -S cd .. dput ppa:techtonik/backports __source.changes 

完成。