当前位置: 首页>>技术教程>>正文


如何通过命令行显示apt-get包管理历史记录?

, ,

问题描述

有没有办法显示apt-get通过命令行更改的包的历史记录?

最佳解决思路

使用apt(apt-get)的所有操作都被记录下来。这些文件可在/var /log /apt /中找到。要查看最近的历史记录,请执行:

less /var/log/apt/history.log

这些日志得到旋转(每个月我猜),旧文件将后缀数字和压缩。所以要查看下一个历史记录,请使用:

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

查看可用的日志:

ls -la /var/log/apt/

次佳解决思路

您也可以制作一个简短的命令来显示有趣的内容。

  • 将此自定义函数添加到您的~/.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
    }
    
  • 并在像这样的终端中调用它:

    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
    

取自here

第三种解决思路

您还可以使用以下命令列出最近安装的软件包

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

第四种思路

如果你想要安装这些软件包而不是随后卸载,请尝试以下操作:

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) 

这是安装减去任何匹配删除。

参考文献:

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/503.html,未经允许,请勿转载。