从较新版本安装软件包而无需构建(apt固定)


34

我需要这些软件包,并将最新的上游版本反向移植到ubuntu / natty

  • libccid_1.4.5-0ubuntu1_amd64.deb
  • libpcsclite1_1.8.1-0ubuntu1_amd64.deb
  • libpcsclite-dev_1.8.1-0ubuntu1_amd64.deb
  • libusb-1.0-0_1.0.9-0ubuntu1_amd64.deb
  • libusb-1.0-0-dev_1.0.9-0ubuntu1_amd64.deb
  • opensc_0.12.2-1ubuntu1ppa1〜natty1_amd64.deb
  • pcscd_1.8.1-0ubuntu1_amd64.deb pcsc-tools_1.4.18-0ubuntu1_amd64.deb

我试图通过更新从源代码构建它们,但是失败了。我不是包装专家,那里有很多教程和食谱。

您知道用于反向移植Ubuntu软件包的优秀且最新的教程吗?

我如何从其他版本中获取软件包而不必自己构建它们?

Answers:


36

探索apt固定会更好,请参阅man apt_preferences

假设您使用的是Oneiric,并且想从Precise获得这些软件包。

如果您阅读,man您会看到我复制/粘贴了相关部分,并修改了发行名称

/etc/apt/preferences

Package: libccid
Pin: release n=precise
Pin-Priority: 990

Package: libpcsclite*
Pin: release n=precise
Pin-Priority: 990

Package: libusb*
Pin: release n=precise
Pin-Priority: 990

Package: opensc
Pin: release n=precise
Pin-Priority: 990

Package: pcscd
Pin: release n=precise
Pin-Priority: 990


Explanation: Uninstall or do not install any Ubuntu-originated
Explanation: package versions other than those in the oneiric release
Package: *
Pin: release n=oneiric
Pin-Priority: 900

Package: *
Pin: release o=Ubuntu
Pin-Priority: -10

然后,我将我的复制/etc/apt/sources.list到,/etc/apt/sources.list.d/precise.list并用精确替换所有出现的oneiric。然后跑了apt-get update,最后apt-get upgrade

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  libpcsclite1 libusb-0.1-4 libusb-1.0-0 libusbmuxd1
4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 86.0 kB of archives.
After this operation, 88.1 kB disk space will be freed.
Do you want to continue [Y/n]? y
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main libusb-0.1-4 amd64 2:0.1.12-20 [17.6 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise/main libusb-1.0-0 amd64 2:1.0.9~rc3-2 [30.9 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ precise/main libpcsclite1 amd64 1.7.4-2ubuntu1 [23.5 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ precise/main libusbmuxd1 amd64 1.0.7-2 [14.1 kB]
 Fetched 86.0 kB in 0s (124 kB/s) 

由于某些原因,没有安装pcscd和opensc,可能是因为它最初没有安装,所以没有什么要升级的,没什么大不了的,我可以像这样精确地安装该版本作为参考。

apt-get install opensc pcscd -t precise

注意使用-tpackagename/precise也可以。

从最新版本开始,还有您想要的软件包,并且只有那些软件包,它们也会自动更新。如果您不再想要它们,只需从中删除这些条目,/etc/apt/preferences下次运行apt-get upgrade它们就会被删除。如果您要删除整个prefs文件,请务必同时删除该precise.list源文件,我们的系统将尝试更新到最新的软件包集。另外,如果您决定稍后进行dist-upgrade,则需要删除整个prefs文件,删除其他源可能是一个好主意。没有要更新的软件包。

Apt固定并不难,您只需要稍微进行试验即可。n=etc的所有动词都是通过检查找到的apt-cache policy

这就是为什么经验丰富的管理员对apt vs yum赞不绝口。您可以简洁地更新服务,并以干净,确定性和可维护的方式使它们保持最新。

也不再有编译包。

我强烈建议您阅读整个手册页并熟悉该概念,并在继续此建议之前阅读有关apt pinning的其他指南。祝好运并玩得开心点!

https://help.ubuntu.com/community/PinningHowto


这是一个很好的答案,但不适合我。我已经知道固定了,但是有些软件包不是精确的最新版本,有些有bug(opensc)。所以我真的很想拥有最新消息。
2012年

然后,您真正处于开发模式,请参阅UDD指南。请参阅developer.ubuntu.com/packaging/html/getting-set-up.html。一旦构建了软件包,就可以提交补丁,并最终删除本地构建的补丁。使用PPA有点帮助,但您确实确实需要先了解包装的基本知识,否则,您只需要等待10分钟才能发现自己犯了一个错误,请从PPA中删除deb,然后重复冲洗。您仍然可以将先前的答案与新的PPA结合使用,以确保这些软件包优先于基线,直到它们进入-updates为止。
ppetraki'2


使用这种方法,您如何同时选择同一软件包的amd64和i386版本?
2013年
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.