我已经使用 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
,则表示该软件包当前已安装。
希望这个对你有帮助。