是否可以获得最近安装的软件包的列表?

Oli*_*nde 206 package-management apt

是否可以通过 apt-get 获取最近安装的软件包列表?

Isa*_*iah 230

列出通过任何方法(apt-get、软件中心等)安装的最近安装的软件包的命令:

grep " install " /var/log/dpkg.log
Run Code Online (Sandbox Code Playgroud)

示例输出:

2010-12-08 15:48:14 install python-testtools <none> 0.9.2-1
2010-12-08 15:48:16 install quickly-widgets <none> 10.09
2010-12-08 22:21:31 install libobasis3.3-sdk <none> 3.3.0-17
2010-12-09 12:00:24 install mc <none> 3:4.7.0.6-1
2010-12-09 23:32:06 install oggconvert <none> 0.3.3-1ubuntu1
2010-12-09 23:34:50 install mpg123 <none> 1.12.1-3ubuntu1
2010-12-09 23:34:52 install dir2ogg <none> 0.11.8-1
2010-12-09 23:34:53 install faad <none> 2.7-4
2010-12-09 23:34:54 install wavpack <none> 4.60.1-1
2010-12-10 11:53:00 install playonlinux <none> 3.8.6
Run Code Online (Sandbox Code Playgroud)

您可以运行此命令以仅列出最近安装的软件包名称,

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log
Run Code Online (Sandbox Code Playgroud)

列出历史的命令apt-get(注意:这不列出安装的依赖项,它只是列出以前apt-get运行的命令):

grep " install " /var/log/apt/history.log
Run Code Online (Sandbox Code Playgroud)

示例输出:

Commandline: apt-get install libindicate-doc
Commandline: apt-get install googlecl
Commandline: apt-get --reinstall install ttf-mscorefonts-installer
Commandline: apt-get install valac libvala-0.10-dev
Commandline: apt-get install libgtksourceview-dev
Commandline: apt-get install python-sphinx
Commandline: apt-get install python-epydoc
Commandline: apt-get install quickly-widgets
Commandline: apt-get install libreoffice3* libobasis3.3*
Commandline: apt-get install mc
Run Code Online (Sandbox Code Playgroud)

  • `grep " install " /var/log/dpkg.log` 就足够了。没有必要使用`cat`。另见[此](http://en.wikipedia.org/wiki/Cat_%28Unix%29#Useless_use_of_cat)。 (5认同)
  • 请注意,这似乎只能找到新安装的软件包。安装了新版本的软件包在 `dpkg.log` 中显示为 `upgrade` (2认同)

Raf*_*lak 16

Ubuntu 的软件中心显示安装/升级/删除的所有软件包的完整历史记录。只需单击左侧列表底部的“历史记录”。

  • 这个历史按钮现在位于 GUI 的顶部,可以显示已安装的包和更新。这应该是该问题的公认答案,因为它是唯一适用于更新的答案。 (4认同)
  • 最近版本的软件中心似乎没有历史记录选项。 (3认同)

Val*_*tas 13

还要查看按安装时间排序的旧包:

grep " install " /var/log/dpkg.log.1 /var/log/dpkg.log
Run Code Online (Sandbox Code Playgroud)

对于很久以前安装的软件包:

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "
Run Code Online (Sandbox Code Playgroud)


Ser*_*ndt 6

全部在一条线上;命令使用

选择并打印最近安装的包名,全部在一行上。

为此,请将投票最多的答案更改为:

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'
Run Code Online (Sandbox Code Playgroud)

这导致一行包名称。这样的行可以很容易地添加到sudo apt-get purge命令中。

示例输出

libgnome-media-profiles-3.0-0 gstreamer0.10-gconf gnome-media gnome-menus librest-0.7-0 libgoa-1.0-common libgoa-1.0-0 libwacom-common libwacom2 ubuntu-docs apg libgnome-control-center1 libgnomekbd-common libgnomekbd7 gnome-control-center-data gnome-icon-theme-symbolic gnome-settings-daemon ubuntu-system-service gnome-control-center gnome-online-accounts gnome-session-bin indicator-power mousetweaks
Run Code Online (Sandbox Code Playgroud)

列出一个在另一个下面的包

根据大众的需求,这里有一个稍微调整的版本,用于列出一个在另一个下面的软件包:

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'
Run Code Online (Sandbox Code Playgroud)


GKF*_*KFX 6

以下技巧回答了 Aleksandr Dubinsky 将其限制为手动安装的软件包的请求:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
Run Code Online (Sandbox Code Playgroud)
  • comm -12 列出两个排序文件共有的行。
  • <(command)扩展为包含输出的文件的名称command
  • apt-mark showmanual列出手动安装的软件包;IE。那些永远不应该被自动删除的。
  • grep " install " /var/log/dpkg.log 取自已接受的答案。

另一种按时间顺序显示更多信息并访问所有可用日志的替代方法是:

zcat -f /var/log/dpkg.log* | grep " install " | sort > /tmp/dpkg.log
grep -F "`comm -12 <(apt-mark showmanual | sort) <(cat /tmp/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)`" /tmp/dpkg.log | grep \<none\>
Run Code Online (Sandbox Code Playgroud)

grep \<none\>将结果限制为新安装。例如,您可以使用 grep 通过添加grep 2016-0[567]到第一个管道来将搜索限制为三个月;它非常灵活。