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?

  • Oh, I haven't read the whole question before answering. Can you just repackage the metapackage?
    – int_ua
    Commented Jun 21, 2012 at 10:27
  • 2
    @int_ua I don't understand what would repackaging the metapackage do.
    – tmaj
    Commented Jun 22, 2012 at 7:03
  • @belacqua - i'm with you, but we need a solid answer that covers what happens when there are reversions and broken dependencies etc etc Commented Aug 9, 2012 at 0:42
  • Does your metapackage's control file include explicit version no of depend packages, such as (a=2), (b=2)?
    – Anwar
    Commented Aug 9, 2012 at 8:11

2 Answers 2


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.

  • I believe this is the correct answer, putting the = and then the package name with version
    – LnxSlck
    Commented Aug 9, 2012 at 21:40
  • 1
    I am Tymek's colleague and this actually solves the problem. Too bad we have to reverse engineer the metapackage to make it happen. Some creative Python is in order. Thanks heaps for the answer. Commented Sep 4, 2012 at 6:46
  • 1
    I wonder if any better solution appeared since the time passed?
    – ygrek
    Commented Dec 4, 2018 at 21:03

You can try installing dependencies first with

sudo apt-get install package=2 where 2 is the version

You can find out what packages depend on the package with

apt-cache rdepends package

  • 1
    rdepends doesn't provide a details info about versions, right?
    – tmaj
    Commented Jun 21, 2012 at 11:45
  • 2
    Installing dependencies first would defy having the metapackage. It is a solution, but not the one I'm looking for.
    – tmaj
    Commented Jun 21, 2012 at 11:47
  • 1
    Note that for this to work the repositories need to have an available version of that version you specified, if they don't it will error out.
    – Thomas Ward
    Commented Jun 21, 2012 at 13:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .