Ubuntu: How do I show apt-get package management history via command line?



Question:

Is there a way to show the history of packages that were changed by apt-get via command line?


Solution:1

All actions with apt (apt-get) are logged. These files are available in /var/log/apt/. To view the most recent history log, execute:

less /var/log/apt/history.log  

These logs gets rotated (every month I guess), old files will be suffixed with a number and compressed. So to view the next history log, use:

zless /var/log/apt/history.log.1.gz  

To view the logs available:

ls -la /var/log/apt/  


Solution:2

You can also make a short command to display the interesting content.

  • Add this custom function to your ~/.bashrc:

    ### pars for fun: install | remove | rollback  function apt-history(){          case "$1" in          install)                grep 'install ' /var/log/dpkg.log                ;;          upgrade|remove)                grep $1 /var/log/dpkg.log                ;;          rollback)                grep upgrade /var/log/dpkg.log | \                    grep "$2" -A10000000 | \                    grep "$3" -B10000000 | \                    awk '{print $4"="$5}'                ;;          *)                cat /var/log/dpkg.log                ;;        esac  }  
  • And call it in a terminal like this:

    kreso@h17:~$ apt-history install  2013-08-06 14:42:36 install gir1.2-nautilus-3.0:amd64 <none> 1:3.8.2-0ubuntu1~ubuntu13.04.1  2013-08-06 14:42:36 install python-nautilus:amd64 <none> 1.1-3ubuntu1  2013-08-06 14:42:37 install insync-nautilus:all <none> 1.0.20  2013-08-07 14:41:37 install powertop:amd64 <none> 2.1-0ubuntu1  2013-08-07 18:44:10 install libdiscid0:amd64 <none> 0.2.2-3build1  2013-08-07 18:44:11 install sound-juicer:amd64 <none> 3.5.0-0ubuntu1  

Taken from here


Solution:3

You can also use the following command to list recently installed packages

grep "\ install\ " /var/log/dpkg.log  


Solution:4

If you want those packages that were installed and not subsequently uninstalled, try this:

comm -23 <(grep "apt-get install" /var/log/apt/history.log | sed 's/.* //' | sort) \   <(grep "apt-get remove" /var/log/apt/history.log | sed 's/.* //' | sort)   

This is the installs minus any matching removes.

References:


Solution:5

Here is how you actually do it, say package mutter:

_P=mutter &&  (cat /var/log/dpkg.log{,.1};zcat /var/log/dpkg.log.*.gz) |  egrep --text "^[^ ]* [^ ]* (configure|install|remove|status [^ ]*|trigproc|upgrade) $_P[: ]" |  sort --reverse | less  

Using dpkg.log captures operations that apt-get does not see.

Output:

2016-12-20 09:47:35 status unpacked mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1  2016-12-20 09:47:35 status installed mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1  …  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »