Recently I needed to setup three almost identical web boxes. First of all I installed all three boxes with a base install of Ubuntu 10.04 server. I then installed all the required packages on one box and started looking for a way to replicate the installed packages on the other boxes.
I had a Google around and did not manage to find a way to do it so I decided to come up with a method by myself.

On the box where you have all your installed packages do

dpkg --list | grep "^ii" | cut -f3 -d ' ' | sed ':a;N;$!ba;s/\n/ /g' > installedOnSystem01

if you check the outputted file it should look something like this

adduser apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common apg apt apt-utils aptitude base-files base-passwd bash bash-completion ...

once you know the file is ok, copy it to your second system using your preferred method for example scp

scp installedOnSystem01 username@system02:

then on the second system run the apt-get command in simulation mode

sudo apt-get -s install `cat installedOnSystem01`

this should give you output like this

...
0 upgraded, 30 newly installed, 0 to remove and 6 not upgraded.
...

if this looks ok remove the `-s` and run the command again to install your packages.

That’s it job done, the systems should now have the same installed packages. If anyone has any questions or can offer a way to shorten the process please leave a comment.

Share this post

2 Comments

  1. Evo2

    The traditional way of doing this is:

    machine1% dpkg –get-selections > pkgs.txt
    machine1% scp pkgs.txt machine2:
    machine2% ssh machine2
    machine2% sudo dpkg –set-selections < pkgs.txt
    machine2% sudo apt-get dselect-upgrade

    Cheers,

    Evo2.

Leave a Reply

CAPTCHA (required) Time limit is exhausted. Please reload CAPTCHA.