How to install the previous version of a .deb package and pin it?

You can tell apt-get to install a specific version of a package. For your example:

apt-get install subversion

you would append the version to the package name, e.g.,

apt-get install subversion=1.9.2-1

To find a package version, the Debian wiki page RollbackUpdate shows an example where that information is found in

http://www.debian.org/distrib/packages, i.e.,
https://www.debian.org/distrib/packages#search_packages

or (older versions) via

http://snapshot.debian.org/
http://snapshot.debian.org/package/subversion/

shows
http://snapshot.debian.org/package/subversion/1.9.2-2/
http://snapshot.debian.org/package/subversion/1.9.2-1/
http://snapshot.debian.org/package/subversion/1.9.1-1/

and so forth.

Finally, the Debian page shows (for its example) the change to make to /etc/apt/preferences to pin the package.


This is the eventual solution to the problem. The important thing is that the URL for the repository in the sources.list should be the full one containing the repo for the required package, in this case http://snapshot.debian.org/archive/debian/20150924T154447Z/. There is a good write up at http://mindref.blogspot.co.uk/2012/02/apt-revert-upgrade.html and also explained in a related question - What is the proper syntax for pinning a debian package to a repository and a version?

/etc/apt/sources.list.d/snapshots.list

# snapshot.debian.org
# added for subversion 1.9.2 subversion bug #803725
deb http://snapshot.debian.org/archive/debian/20150924T154447Z/ unstable main

/etc/apt/preferences.d/subversion

Package: subversion libsvn1
Pin: version 1.9.2-1
Pin-Priority: 700

apt-cache policy subversion

subversion:
  Installed: 1.9.2-1
  Candidate: 1.9.2-1
  Package pin: 1.9.2-1
  Version table:
     1.9.2-3+b1 700
        500 http://http.debian.net/debian/ unstable/main amd64 Packages
 *** 1.9.2-1 700
        500 http://snapshot.debian.org/archive/debian/20150924T154447Z/ unstable/main amd64 Packages
        100 /var/lib/dpkg/status

Tags:

Apt