So I can run on one machine:

dpkg --get-selections '*' > selection.txt

On another machine:

dpkg --set-selections < selection.txt

... followed by either of the following:

aptitude install
apt-get -u dselect-upgrade

... to install the packages that.

However, it appears that some information gets lost in the process, such as whether a package (say xyz) got installed automatically as dependency of another package (abc). You can see that whenever you do something like apt-get --purge remove abc. On the original machine you would be notified that package xyz was installed as dependency of abc and that you may use apt-get autoremove to get rid of it.

Now I am aware of deborphan and debfoster, but they're cumbersome to use given the (simple) task at hand.

It seems saving and restoring the selections as shown above is not sufficient to restore the subtle dependencies of installed packages.

Is there a way to back up the complete set of metadata for package management and restore it then in its entirety?

  • I've often wondered the same thing I generate a big shell script with a 'sudo apt-get install' with all my packages (minus libs). Of course, I run into the same problem you're having.
    – Chuck R
    Commented Feb 20, 2012 at 18:17
  • I would guess that the best place to start looking would be to check if dpkg is in fact responsible for that information. If it isn't then maybe that is apt's job.
    – Huckle
    Commented Feb 20, 2012 at 19:03
  • 3
    If you're going the manual way, you may be interested in apt-mark for saving/restoring information about automatic vs manually installed packages
    – Lekensteyn
    Commented Feb 24, 2012 at 18:37
  • It's not in the 10.04 package repo, is it? Is this part of the Canonical repos or third-party? Commented Feb 24, 2012 at 19:59
  • 2
    No, that's just a "for your information" comment. I'd use apt-mark (it's part of apt, so it should already be installed) to get and set the marks for the packages (see its manpage for details).
    – htorque
    Commented Feb 27, 2012 at 12:07

2 Answers 2



apt-mark showauto > pkgs_auto.lst
apt-mark showmanual > pkgs_manual.lst


sudo apt-mark auto $(cat pkgs_auto.lst)
sudo apt-mark manual $(cat pkgs_manual.lst)
  • Thanks, was about to ask that you or Lekensteyn write that up as an answer. Commented Feb 29, 2012 at 17:51
  • Does these commands allow you to reinstall the programs from that list? Commented Dec 30, 2013 at 14:35
  • can this remove packages that are installed extra, at restoration?
    – n611x007
    Commented May 22, 2014 at 11:56
  • 1
    Can you explain the difference between auto and manual ? Thanks.
    – Anto
    Commented Jan 7, 2015 at 16:33
  • I accidentally marked as manual a bunch of other packages... is there a way to revert? Thanks
    – dentex
    Commented Oct 5, 2016 at 10:49

The selected answer to this question is incomplete and does not (or no longer) works. The painful fix is to use a bash for-loop to parse the output *.lst files and feed them to apt install. Bad choice, though, so will not be illustrated here.

A better choice is to use apt-clone, as seen in this answer on the Unix & Linux Stackexchange. This creates a small file (around 100K or less for my system). Allegedly, it will clone the packages with little effort or pain.

So, in short, on the original machine:

apt-clone clone `uname -n`

Then, on the machine to clone to, copy the clone file and run:

apt-clone restore original-machine-name.apt-clone.tar.gz

I include this answer here since this page turned up in initial web searches, but the other answer did not. This method looks way easier.

You must log in to answer this question.

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