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


28

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

如果上述操作不可行-所有已安装应用程序的列表,或者至少是列出应用程序的GUI,以便我可以对其进行截图。

我读过许多类似的问题,发布答案的人通常甚至都无法接近OP问题的价值。请注意,我的问题包括“用户安装”。

答:目前在Ubuntu Linux中是不可能的。(尽管选择tijybba的答案是最接近的答案)

Answers:


30

实际上,您可以使用Ubuntu Software Center,如以下屏幕截图所示:

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

您也可以在Synaptic左下方列表选择中看到它。

通过cd /etc/apt/sources.list.d/ && cat *.list你会得到系统中的所有库的列表。

您也可以是PPA管理员,以备份和更新存储库。


第二种方法

[由于此方法涉及安装所有软件包,但是如果我们认为新安装的OS将已经拥有这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

在此处输入图片说明

我想图像几乎可以说明一切,备份您的选择,然后在“新安装”中将其还原。


无法添加PPA:“ ppa:〜webupd8team / ubuntu / mintbackup”。名为'〜webupd8team'的团队没有名为'ubuntu / mintbackup'的PPA
alhelal

dpkg:警告:软件包不在状态或第1574行的可用数据库中:wireshark等所有应用程序。
alhelal

11

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'


2

只有root可以在Ubuntu下安装软件包,可以执行此操作的用户只有1个,sudoers只是具有同等权限的用户。

但是,您可以在日志中获取很多信息,也可以查看

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

您可以通过以下命令获取已安装软件包的列表:

dpkg -l | grep ii

除非保留原意,否则您可以随时改一下我的问题。如果它被称为“安装了sudoers安装的应用程序”,那么就这样吧:)当然,我可以将问题改写为“如何列出系统安装后安装的应用程序”。“然后您可以获取已安装软件包的列表”-用于什么目的?
2012年

+1表示/ var / log / apt。如果您已使用apt-get安装了所有内容,则在此日志中搜索“命令行:”将为您提供手动安装的内容的不错列表。
drevicko

1

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

如果您担心用户所安装的内容可能会使您或您的系统处于危险之中,则可能需要查看为什么您授予他们sudo访问权限以及安装软件包的能力,但这只是一个说明。

我感觉您正在自问自系统安装以来已安装了哪些软件包,因此您可以清理设置或将设置镜像到新计算机。此处的答案已经涵盖了备份/还原,因此我们将跳过。

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

跳到这里跳过大多数的绒毛,更直接地找到答案...

您也可以查看您的sudoers日志,以了解谁要求安装什么,让我举一个例子。

May 15 11:26:30 <COMPUTERNAME> sudo:   <user who called 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顺便说一句],sudo哪个用户让他们拥有权限,而大用户则是他们运行的命令!

现在,如果您要在sudo日志[/var/log/auth.log]中使用apt-get或类似版本进行grep,则较旧的将在末尾附加.0 .1等。

您可以拼凑,这将在命令行本身上安装所需的用户。如果他们使用软件中心,则不确定相关的终端命令是否会在此处获得验证行,但是您可以使用位于以下位置的软件中心日志:

/var/log/apt/history.log和较旧的日志位于.gz压缩档案中

现在,据我所知,软件中心日志不提供对安装进行身份验证的用户,而是列出了软件中心执行的所有添加,修改或删除的操作。同样,此日志还具有时间和日期戳,也很容易,以便在基本系统安装后找到最旧的日志,然后转到最旧的日志,或者如果您还记得基本安装完成的时间和日期,那么就可以了。

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

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.