如何构建一个比我的稳定版本更新版本的软件包?
我想在我的稳定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
包,这是构建之前清理源所必需的,但是pbuilder
和debuild
错过了这个事实并且无法恢复。 在主机系统上安装dh-autoreconf
允许构建源包,签名并上传它,即使没有pbuilder
构建。
cd - debuild -S cd .. dput ppa:techtonik/backports __source.changes
完成。