如何获取已安装软件包的列表以及安装日期?

如何获取已安装软件包的列表以及安装日期?

如何输出所有已安装软件包的列表以及安装日期和附加信息?

答案1

打开终端并运行:

zgrep 'install ' /var/log/dpkg.log* | sort | cut -f1,2,4 -d' '

示例输出:

2018-09-02 16:10:59 python3-psutil:amd64
2018-09-02 16:11:00 menulibre:all
2018-09-07 14:58:58 indicator-stickynotes:all
2018-09-08 00:17:41 libdumbnet1:amd64
2018-09-08 00:17:41 libxmlsec1-openssl:amd64
...

由于此命令将查找所有日志,因此输出可能非常大。因此,最好使用以下方法将其保存到文件中:

zgrep 'install ' /var/log/dpkg.log* | sort | cut -f1,2,4 -d' ' > test.txt

答案2

这是一个脚本,它使用这些文件/var/log/dpkg.log*构建当前安装的软件包以及最近的安装日期的列表。

#!/bin/bash

LOGDIR=$(mktemp -d)
cd $LOGDIR
cp /var/log/dpkg.log* .

# grep the relevant lines from the log files
for file in dpkg.log*
do
  zgrep ' install ' "$file" > ins.${file%.gz}
done

# Merge all the install lines chronologically into a single file
cat $(ls -rv ins.*) > install.log

# Construct a list of all installed packages in the format packagename:arch
dpkg -l | grep '^.i' | tr -s ' ' | cut -d' ' -f2,4 | tr ' ' : | cut -d: -f1,2 > installed.list

OUTFILE=$(mktemp -p .)

for package in $(< installed.list)
do
  # Get only the most recent installation of the respective package
  grep " $package" install.log | tail -n1 >> "$OUTFILE"
done

sort "$OUTFILE" > newest-installs.log
echo "List of installed packages written to ${LOGDIR}/newest-installs.log"

答案3

使用

tail -f /var/log/dpkg.log

或者

less /var/log/dpkg.log

或者

grep " install " /var/log/dpkg.log*
zgrep " install " /var/log/dpkg.log.*.gz

可以使用 grep 查找特定的包(示例)

grep -E 'install .*<package-name>' /var/log/dpkg.log*

相关内容