Ubuntu – Installing particular versions when repo has newer versions


Let's have a metapackage which depends on the following packages

Depends: A (=2),
 B (=2),
 C (=2)

Note the '=' – I want to install these particular versions, not the most recent ones.


B depends on A(>=1)

C depends on B(>=1) and A(>=1)

If the most recent versions of A,B,C in the repository are 2 then this works.

Since I have put version 3 of A and version 3 of B in the repo sudo apt-get install my-meta-package refuses to finish with the following info:

The following packages have unmet dependencies:
  my-meta-package: Depends: B (= 2) but 3 is to be installed
                   Depends: A (= 2) but 3 is to be installed

If I manually install versions 2 of A and B then the metapackage installs correctly, which strongly suggests that there is no hidden dependency on A3 or B3. This is not a solution for the problem as the metapackage is installed automatically on many machines.

QUESTION: What to do to make sudo apt-get install my-meta-package install versions 2,2,2?

Additionally, is there a way I could get an extended info what actually creates the need for version 3 of A and version 3 of B?

Best Answer

You have to select the particular versions to install, and install them all at the same time that you install the meta-package.

sudo apt-get install meta-package package1=2 package2=2 package3=2

Like int_ua's answer says, you can find out reverse dependencies with this:

apt-cache rdepends package

If you want to know more information about any of those packages (available versions, dependencies, and lots more), use this:

apt-cache show package

After you finish installing them, and want to keep them at those versions while doing system upgrades, you will need to use apt-pinning as suggested by belacqua.

APT pinning

The APT pinning feature allows administrators to force APT to choose particular versions of packages which may be available in different versions from different repositories. This allows administrators to ensure that packages are not upgraded to versions which may conflict with other packages on the system, or that have not been sufficiently tested for unwelcome changes. In order to do this, the pins in APT's preferences file (/etc/apt/preferences) must be modified.