如何列出用户安装的应用程序(而不是包)?

不是包而不是所有应用程序。 只是自己从任何来源安装的应用程序用户(软件中心,手动添加PPA等)。

如果上述情况不可能 – 所有已安装应用程序的列表或至少列出应用程序的GUI,以便我可以截取它的屏幕截图。

我已经阅读了十几个类似的问题,发布答案的人通常甚至不接近OP问题的优点。 请注意,我的问题包括“用户安装”。

答:Ubuntu Linux目前无法实现。 (选择tijybba的答案为最接近的答案)

您实际上可以使用Ubuntu软件中心 ,如下面的屏幕截图所示:

Ubuntu软件中心:“已安装” - 菜单

您也可以在Synaptic Bottom左侧列表选项中看到它。

通过cd /etc/apt/sources.list.d/ && cat *.list您将获得系统中所有存储库的列表。

您也可以通过Y PPA经理备份和更新您的存储库。


第二种方法

[由于此方法涉及安装所有软件包,但如果我们认为新安装的操作系统已经拥有这些90%的软件包,那么它将忽略当前的软件包并安装新的手动添加的软件包,这将只是您手动安装的应用程序]

这个方法来自这里 。

 sudo dpkg --get-selections > installed-applications.txt 

它将在主文件夹的txt文件中生成已安装应用程序的列表。

要使用此文件来安装相同的应用程序,您必须执行此操作(但在此之前,请同时添加旧版本中存在的所有第三方存储库

 sudo dpkg --set-selections < installed-applications.txt sudo apt-get -y update sudo apt-get dselect-upgrade 

这也可以通过Gui方式实现

 sudo add-apt-repository ppa:webupd8team/mintbackup && sudo apt-get update sudo apt-get install mintbackup 

在此处输入图像描述

我猜图像几乎说不出来,备份你的选择,然后在新安装中恢复它。

apt-mark showmanual将为您提供“手动安装”包的列表。 这包括安装程序安装的软件包,其中大部分都是安装程序。 但是如果你在安装后运行它并稍后再次比较输出,你将获得用户特别请求的包列表,不包括自动安装的依赖项。

例如:

 $ # Save the current list of manually installed packages $ apt-mark showmanual | sort > original-package-list # ...time passes... $ # Compare the old list with the current list $ # (this will output a list of packages that have been installed by the user since the last command) $ apt-mark showmanual | sort | comm -13 - original-package-list 

请注意,应用程序软件中心的软件包,并且涉及手动添加的PPA。 区分特定请求的包和引入以满足依赖性的包是我认为你能做的最好的。

或者只是查看已安装的所有软件包的列表,运行dpkg-query -W -f'${PackageSpec}\n'

只有root可以在Ubuntu下安装软件包,可以做到这一点的用户只有1,sudoers只是具有同等权限的用户。

但是,您可以查看日志中的大量信息,您可以查看

/var/log/apt/下的apt日志/var/log/apt/下的dpkg日志

并且您只需使用命令即可获取已安装软件包的列表:

 dpkg -l | grep ii 

实际上,根据您的问题,我看到以下命令可以满足您的需要dpkg -l | grep ii。 这列出了我应该安装的每个软件包。 现在它没有说用户A或用户B,但这又是一个限制,不是sudo而是软件中心日志。 即使使用sudo,调用sudo的用户也会被传递,因此您仍然可以使用任何调用sudo来运行命令的应用程序日志。 当然,你可以相当容易地解决这个问题,因为sudo的一部分是能够以任何用户[有权访问sudo]登录,如果你知道他们的密码,破解它,或者如果你拥有系统的权限就改变它。

如果您担心用户安装的内容可能会使您或您的系统面临风险,您可能需要查看为什么要为他们提供sudo访问权限以及安装软件包的能力,但这只是一个侧面说明。

我有一种感觉,你问自己自系统安装以来安装了哪些软件包,这样你就可以清理或镜像设置到新机器。 这里的答案已经涵盖备份/恢复,所以我们将跳过它。

由于没有简单的直接方法来查找哪个用户称为安装包,更好的方法可能是使用上面列出的命令和另一个用户列出所有已安装的包并向Google打开浏览器窗口并运行Google搜索了解哪些软件包可以保持系统正常运行,哪些套餐不运行。

跳到这里跳过大部分的绒毛,更直接地得到答案……

您还可以查看您的sudoers日志,以查看谁要求安装什么让我给出一个示例行

 May 15 11:26:30  sudo:  : TTY=unknown ; PWD=/home/pariah (pwd file or auth method used to verify user) ; USER=root (User they were running as) ; COMMAND=/usr/bin/thunar (the command they ran) 

所以这告诉我,在这个时间和日期,这个用户调用了一个sudo [实际上在这种情况下gksu使用了btw],用户sudo让他们拥有权限,而他们运行的命令是大的!

现在,如果你在sudo日志[/var/log/auth.log]中grep for apt-get或者类似的东西,那么旧的那些将在末尾添加.0 .1等。

您可以拼凑在一起安装在命令行上调用的用户。 如果他们使用软件中心我不确定相关的终端命令是否会在这里获得一个auth行,但你可以使用在以下位置找到的软件中心日志:

/var/log/apt/history.log和旧日志都在.gz压缩档案中

现在,软件中心日志不会提供在该日志中我所见过的用户执行安装的用户,但它列出了每次添加,修改或删除软件中心执行的操作。 同样,这个日志还有时间和日期标记,以便在基本系统安装后找到最旧的日志返回顶部或者如果你还记得基本安装完成的时间和日期并且你很高兴。

提到的这两个日志文件都是纯文本的,您可以使用任何gedit,mousepad,leafpad,无论Ubuntu风格使用哪种文本编辑器,默认情况下都可以查看和打印它们。