Is it possible to list all of the installed package versions in such a way that they could then be installed on another system?

I know that it's possible to list the versions with

dpkg -l > versions.txt

but is there a simple way to use the output on another system?

dpkg --get-selections

doesn't list the versions.

(If the OS version is important, I'm using 14.04)


One way that you could do it would be to create a list file with the install commands. The following command will create a file containing the commands telling apt-get what version of the application to install:

dpkg -l | tail -n +6 | awk '{print $2"="$3}' | while read pkg; do echo "sudo apt-get install $pkg" >> install_pkg; done

I put a command above to skip the first 6 lines of dpkg -l as those are information lines that turn into garbage lines. I also didn't add the -y to the apt-get command so that it didn't automatically install an application that you didn't want installed. I can leave that up to you. When I tested if this would work or not, I added in -s for simulate the install after the apt-get in the command and it seemed to have worked.

The command will create a file with lines that look like this that contains the package name and version to install (I truncated for a long list):

sudo apt-get install y-ppa-manager=2017.06.13-1~webupd8~0
sudo apt-get install yad=0.39.0-1~webupd8~xenial0
sudo apt-get install yelp=3.20.1-1ubuntu1~xenial1
sudo apt-get install yelp-xsl=3.20.1-1~ubuntu16.04.1~xenial1
sudo apt-get install youtube-screenlet=0.3.2+++~trusty1
sudo apt-get install zeitgeist=0.9.16-0ubuntu4
sudo apt-get install zeitgeist-core=0.9.16-0ubuntu4
sudo apt-get install zeitgeist-datahub=0.9.16-0ubuntu4
sudo apt-get install zenity=3.20.0-1~ubuntu16.04.1
sudo apt-get install zenity-common=3.20.0-1~ubuntu16.04.1
sudo apt-get install zip=3.0-11
sudo apt-get install zlib1g:amd64=1:1.2.8.dfsg-2ubuntu4.1
sudo apt-get install zlib1g:i386=1:1.2.8.dfsg-2ubuntu4.1
sudo apt-get install zlib1g-dev:amd64=1:1.2.8.dfsg-2ubuntu4.1
sudo apt-get install zsync=0.6.2-1ubuntu1

Then all you should have to do is to copy the file install_pkg that was created to the other system, given that all the PPAs on the other system match the system you are on, and run the following command to start the installation:

sh ./install_pkg

Hope this helps!

  • I just tested one where you put all the applications names in a text file then call with apt-get but the problem with that is that there are too many applications listed so the buffer for apt-get fills up and fails. – Terrance Dec 22 '17 at 17:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.