如何管理 Ubuntu 16.04 上已安装的软件?

如何管理 Ubuntu 16.04 上已安装的软件?

我已经使用 Ubuntu 16.04 几个星期了。唯一让我不太明白的是如何管理我安装的软件(以及软件附带的依赖项)。

因此,在过去的几周里,我一直通过软件中心和终端安装程序(主要是在基本安装不起作用时按照互联网指南进行安装)

这些指南通常会说“在您的终端上输入此代码,然后输入此代码等”来安装。

一旦我安装了软件和任何依赖项,我如何知道它们是否正在使用中,如果不再需要它们,如何删除它们?

我已经安装了 Synaptic 软件包管理器,我认为它可以回答我的问题,我看到它显示了所有可用的软件包,我可以通过“已安装”进行过滤 - 但我不知道其中 99% 是什么或做什么。

如果我按“已安装(本地或过时)”进行过滤,我会看到一些(但肯定不是全部)我自己安装的内容。

示例:我已经安装了 Oracle Virtual Box,但它并未出现在软件中心,而且我在 Synaptic 中也看不到它。

基本上,我要做的就是确保我拥有已安装的软件列表,并在不再需要时删除该软件。

从 Windows 的角度来看,我可以通过控制面板 > 程序来执行此操作。

我知道 Linux 是完全不同的物种——任何关于这方面的帮助都非常感谢,除了这个问题之外,我希望全职转向 Ubuntu(尽管使用虚拟 Windows 机器来运行 Photoshop)

答案1

我编写了一个简单的 python 脚本,可以向您显示手动安装的包。

应该已经安装了 Python,您可以通过python --version在终端中输入来验证。

在您的主文件夹中的某个位置创建一个新文件,命名它checkpack.py或任何您想要的名称,只要它以 结尾即可.py

将其粘贴到其中并保存:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import subprocess

proc=subprocess.Popen('cat /var/log/apt/history.log | grep Install:', shell=True, stdout=subprocess.PIPE, )
output=proc.communicate()[0]

pck=[]
manpck=[]

# Break the output into a list of items called lsts
lsts = output.split(")")

# Filter lines to skip empty ones, and remove strings that 
#  start with "Install: " or ", ", then remove those parts.
#  Place the list into a new list called pck.
for el in lsts:
    if el.startswith("Install: "):
        pck.append(el[9:])

    if el.startswith(", "):
        pck.append(el[2:])

# Place list of packages that were not dependencies into manpck.
for el in pck:
    if not el.endswith("automatic"):
        manpck.append(el)

# Print the list of manually installed packages.
for el in manpck:
    print(el)

现在打开一个终端进入该文件所在的文件夹,然后运行python ./checkpack.py或用文件名称替换 checkpack。

这将显示所有手动安装的软件包,并忽略作为依赖项安装的软件包。它们按从最旧到最新的顺序排列。

它看起来像这样(您可以向上滚动以查看较旧的包): 在此处输入图片描述

通过查看您最近安装的内容,这将对您有所帮助。

注意!请记住,这是显示您安装软件包时的日志。因此,如果您卸载软件包,此脚本仍会显示您曾经安装过它。如果您安装了 3 次软件包,它将显示 3 次。我只是想让您知道,这并不显示当前安装的软件包,而是显示过去某个时间点安装的软件包。

要查看特定软件包是否仍处于安装状态,您可以运行apt show <packagename>。 如果结果文本包含一行内容:APT-Manual-Installed: yes,则表示该软件包当前已安装。

希望这个对你有帮助。

相关内容