43

I need these packages with the latest upstream version backported for 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

I tried to build them from source with update but it failed. I am not an expert at packaging and there are so many tutorials and recipes out there.

Do you know a good and up to date tutorial for backporting Ubuntu packages?

How do I get packages from other releases without having to build them myself?

1 Answer 1

41

You would be much better off exploring apt pinning, see man apt_preferences.

Let's assume you're on Oneiric and you want to get those packages from Precise.

If you read the man you'll see that I copy/pasted the relevant sections and just modified the release name

/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

Then, I copied my /etc/apt/sources.list to /etc/apt/sources.list.d/precise.list and replaced all occurrences of oneiric with precise. Then ran apt-get update and finally 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) 

For some reason, pcscd and opensc didn't get installed, probably because it wasn't installed to begin with so there was nothing to upgrade, no big deal, I can install exactly that version using precise as the reference like this.

apt-get install opensc pcscd -t precise

Take note of the use of -t, packagename/precise would also work.

and there are the packages you want, from the latest release, and only those packages, they will also be updated automatically. If you don't want them anymore, just delete the entries from /etc/apt/preferences and the next time you run apt-get upgrade they'll be removed. Should you remove the entire prefs file be sure to delete that precise.list sources file as well our your system will try to update to the latest set of packages. Also if you decide to dist-upgrade later, you'll need to remove the entire prefs file and it would probably be a good idea to remove the other sources.list less the upgrade will find, thanks to the higher priority, that there are no packages to update.

Apt pinning isn't that hard, you just need to dig in a little and experiment. All the verbs for n= etc are found by examining apt-cache policy.

This is why seasoned admins rant and rave about apt vs yum. You can concisely update services and keep them up-to-date in a clean, deterministic, and maintainable manner.

No more compiling packages either.

I strongly suggest you read the entire man page and get comfortable with the concept and read other guides on apt pinning before continuing with this proposal. Good luck and have fun!

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

4
  • this is a great answer, but not for me. I already know pinning but some packages are not latest version in precise and some have bugs (opensc). so i really want to have the latest source.
    – Janning
    Feb 11, 2012 at 18:14
  • Then you're really in development mode, see UDD guide. See developer.ubuntu.com/packaging/html/getting-set-up.html. Once you have the packages built you can submit the patches and eventually do away with your locally built ones. Using a PPA kinda helps but you really need to get the packaging basics down first or you'll just be waiting 10 mins to find out you've made a build mistake, delete the deb from the PPA, rinse repeat. You can still use the previous answer co-op with a new PPA to ensure those packages get priority over the baseline until they find their way into -updates.
    – ppetraki
    Feb 11, 2012 at 20:06
  • The Ubuntu packaging guide: developer.ubuntu.com/packaging/html/index.html
    – ppetraki
    Feb 11, 2012 at 20:07
  • With this method how do you prefer both the amd64 and i386 versions of the same package?
    – qed
    Nov 8, 2013 at 19:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.