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


157

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



1
现在,如果只有一个人告诉我如何列出尚未删除手动安装的软件包感叹,Linux。
Aleksandr Dubinsky

1
@AleksandrDubinsky apt-mark showmanual | less不这样做吗?
GKFX

@GKFX我的意思是在最近安装的软件包中。
Aleksandr Dubinsky

@AleksandrDubinsky你必须使用comm -12 a b具有a的排序副本apt-mark showmanual,并b从下面的答案之一排序列表。
GKFX

Answers:


180

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

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

输出示例:

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

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

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log

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

grep " install " /var/log/apt/history.log

输出示例:

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

突触的问题在于它不会显示您如何使用aptitude,apt-get和dpkg,因此为此选项+1了
hhlp 2010年

此命令将不显示更新。使用软件中心查看所有内容。
HDave 2012年

1
保存这样的文本文件可能会更好cat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS 2013年

4
grep " install " /var/log/dpkg.log就足够了。无需使用cat。另请参见
augurar 2014年

1
请注意,这似乎只能找到新安装的软件包。在安装了新版本的软件包出现upgradedpkg.log
安德烈Holzner的

14

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


4
现在,此历史记录按钮位于GUI的顶部,可以显示已安装的软件包和更新。这应该是该问题的公认答案,因为它是唯一适用于更新的答案。
HDave 2012年

该问题未指定桌面(GUI)环境,但是接受的答案在GUI和非GUI方案中均有效。
msanford

@HDave绝对不正确,dpkg.log将记录更新。
GKFX

10

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

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

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

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "

我发现2天前安装了一个软件包/var/log/dpkg.log,但没有安装/var/log/apt/history.log。仍不知道为什么...
Samuel Li

5

以下技巧可解决Aleksandr Dubinsky将其限制为手动安装的软件包的请求:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 列出两个已排序文件共有的行。
  • <(command)扩展为包含的输出的文件名command
  • apt-mark showmanual列出手动安装的软件包;即。那些绝对不能自动删除的文件。
  • 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\>

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


这越来越近了。可以改进的内容:1)按时间顺序显示软件包,2)显示更多详细信息,例如安装日期/时间,版本,甚至大小3)显示自操作系统安装以来安装的所有软件包。
Aleksandr Dubinsky

惊人!您是否介意我整理您的答案,以使每个命令的更多解释更加简洁?
Aleksandr Dubinsky

@AleksandrDubinsky感谢您的编辑;我已经更正了说明,使其与您所做的更改匹配。
GKFX'7

您是否介意消除“以下提示回答Aleksandr Dubinsky的请求”的杂讯,即第一个无用的命令,加上一个好的标题,将main命令放在顶部,添加示例输出,并尝试描述所有命令参与?
Aleksandr Dubinsky

1
最后一条命令中有一个错误,因为grep -F找到部分匹配项。例如,如果python3已安装,它将与所有python3库(python3-click-package)匹配,包括不再安装的库。而且,grep -Fw因为-是单词边界,所以没有帮助。
Aleksandr Dubinsky

5

全部一行;供命令使用

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

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

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'

这将导致一行包名称。这样的行可以轻松地添加到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

列出一个接一个的包装

根据大众的需求,以下是稍作修改的版本,用于将软件包依次列出:

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'

不要解析cat命令的输出。那awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log呢?
阿维纳什·拉吉

@AvinashRaj您的awk命令另一个下面打印软件包;一次一个地雷。这就是为什么输出示例有时会有用的原因。
Serge Stroobandt,2014年

2

有一个名为wajig的软件包请在命令行中检出它,这是我现在安装的第一件事。像aptitude一样,除了它的工作方式与您期望命令分派器正常工作一样。所以说真的,这不像能力。下面的命令只是一小部分。

wajig help
Common JIG commands:

 update         Update the list of downloadable packages

 new            List packages that became available since last update
 newupgrades    List packages newly available for upgrading

 install        Install (or upgrade) one or more packages or .deb files
 remove         Remove one or more packages (see also purge)

 toupgrade      List packages with newer versions available for upgrading
 upgrade        Upgrade all of the installed packages or just those listed

 listfiles      List the files that are supplied by the named package
 listnames      List all known packages or those containing supplied string
 whatis         For each package named obtain a one line description
 whichpkg       Find the package that supplies the given command or file

Run 'wajig -v commands' for a complete list of commands.

5
我不确定wajig列出最新软件包有什么帮助。在粗略浏览命令后,我看不到该命令。你知道命令是什么吗?
Ehtesh Choudhury 2014年

1

除了DoR的答案外,对于喜欢GUI的用户,Synaptic中还有一个File-> History菜单项。


2
正如rafalcieslak所指出的,该功能在Software Center中也可用。
belacqua

3
Synaptic历史记录仅显示通过Synaptic安装的内容……完全没有用。
HDave 2012年

1

这是一些列出dpkg已安装文件的shell。(其中应包括所有apt / aptitude /软件中心/安装了Synaptic的软件包)

grep -A 1 "Package: " /var/lib/dpkg/status | \
grep -B 1 -Ee "ok installed|half-installed|unpacked|half-configured|config-files" -Ee "^Essential:yes" | \
grep "Package:" | cut -d\  -f2

这不包括安装时间/日期信息。但是在确定从os install到最新安装的软件包中的任何差异时可能很有用。


-1

在Software Center或Synaptic中查看安装历史记录的问题在于,很难将内容复制/粘贴到电子邮件中(例如,与技术支持联系时!)。另一种方法是以/var/log/aptroot用户身份查看日志文件的内容。


2
只是为了澄清一下,仅查看中的内容/var/log/apt,您不需要是root用户,也无需具有任何管理员权限。
Samuel Li
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.