Debfoster – 仅保留 Debian 和 Ubuntu 中的基本软件包

今天,我们将了解一个鲜为人知但有用的实用程序,适用于 Debian 及其衍生产品,如 Ubuntu 和 Linux Mint 等 Ubuntu 变体。 打招呼 “德布福斯特” – 一个命令行实用程序,仅保留基本软件包并删除不再需要的其他软件包。 因此,您可以始终保持清洁和最小化系统。 debfoster 应用程序是 apt 和 dpkg 包管理器的包装程序。 它维护了一个已安装包的列表,这些包是明确请求的,而不是作为依赖项安装的。

当你第一次运行它时,它会创建一个已安装包的列表并将它保存在一个名为 饲养员/var/lib/debfoster/ 目录。 Debfoster 将使用此列表来检测仅因为其他软件包依赖于它们而安装的软件包。 如果这些依赖项之一发生更改,debfoster 会注意到并询问您是否要删除旧包。 通过这种方式,它可以帮助您使用您选择的基本软件包来维护一个干净的系统。

使用 Debfoster 在 Debian 和 Ubuntu 中只保留基本软件包

Debfoster 在默认存储库中可用。 因此,安装不会有什么大不了的。 运行以下命令在任何基于 Debian 的系统上安装 Debfoster:

$ sudo apt install debfoster

安装后,我们需要通过运行以下命令来创建已安装包的列表:

$ sudo debfoster -q

上面的命令会将当前安装的包添加到 饲养员 文件在 /var/lib/debfoster/ 目录。 您可以编辑此文件以删除您不再希望安装在系统中的软件包。

这是我的守护者文件的内容。

$ cat /var/lib/debfoster/keepers

您不应从该文件中删除系统相关的重要软件包,例如 Linux 内核、grub、Ubuntu-base、Ubuntu-desktop 等。另外,请备份您手动编辑的重要配置文件。

现在,强制 debfoster 实用程序删除未在keepers 文件中列出的包。 为此,请运行:

$ sudo debfoster -f

Debfoster 将删除所有在 Keepers 文件中不可用的包及其依赖项。

它还会安装任何似乎丢失的软件包,从而强制您的系统遵守 debfoster 数据库。

然后,您可以在每次添加/删除包后不时运行以下命令,以检查是否有任何孤立包或不需要的依赖项需要删除。

$ sudo debfoster

如果您已安装/删除任何软件包,您将看到如下所示的输出。 正如您在输出中看到的,Screen 包未列在我的守护者列表中。 因为,我是在创建管理员列表后安装它的。 所以,debfoster 问我是否要保留这个。 如果您不确定该怎么做,请输入 H 显示帮助部分。

Keep screen? [Ynpsiuqx?], [H]elp: H

 Yes Keep screen. [default]
 No Delete screen.
 Prune Delete screen and the packages it is keeping installed.
 Skip Skip this question.
 Help Print this message.
 Info or ? Show information about screen.
 Undo Undo last response.
 Quit Exit without removing packages.
 Exit Remove unwanted packages and exit.

Keep screen? [Ynpsiuqx?], [H]elp:

Debfoster 将显示所有可能的选项。 类型 如果您不想删除软件包。 screen 包现在将被添加到 Keepers 文件中,并且 Debfoster 不会在以后的事务中将其删除,除非您使用“apt-get remove screen”命令手动删除它。 类型 ñ 删除屏幕包。 类型 删除屏幕及其保持安装的软件包。 类型 信息 或者 ? 显示包的详细信息。 退出而不删除包。 并且,键入 删除包并退出。

查看 Keepers 列表中的包

要查看 debfoster 数据库中的软件包列表,请运行:

$ debfoster -a

这是我的 Ubuntu 16.04 LTS 桌面中的软件包列表。

The following packages are on the keeper list:
 account-plugin-aim brasero debfoster deja-dup-backend-gvfs dialog firefox-locale-en gdebi gir1.2-webkit-3.0 git hyphen-en-us indicator-multiload
 language-pack-gnome-en libarchive-extract-perl libcpan-meta-perl libmodule-build-perl libmodule-pluggable-perl libpackage-constants-perl libpod-latex-perl
 libreoffice-help-en-us libreoffice-style-human libterm-ui-perl libtext-soundex-perl libvisual-0.4-plugins linux-generic linux-headers-4.4.0-15-generic
 linux-image-extra-4.4.0-15-generic myspell-en-au myspell-en-gb myspell-en-za mythes-en-us oneconf openoffice.org-hyphenation openssh-server python-pip python3-smbc
 rhythmbox-plugin-cdrecorder rhythmbox-plugin-magnatune samba-common screen shutter ssh-askpass-gnome telepathy-idle thunderbird-locale-en-us ubuntu-desktop
 ubuntu-minimal ubuntu-sso-client-qt ubuntu-standard ubuntu-wallpapers-wily wbritish xserver-xorg-video-cirrus xserver-xorg-video-mach64 xserver-xorg-video-mga
 xserver-xorg-video-neomagic xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-savage xserver-xorg-video-siliconmotion
 xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident

使用不同的keeper文件

默认情况下,debfoster 将在 /var/lib/debfoster/keepers 文件。 但是,您可以使用指定不同的 debfoster 数据库(当然是keepers 文件) -k 像下面这样的标志。

$ debfoster -k <path-to-keeper-file>

查看孤立的包

你并不总是需要运行“sudo debfoster”命令来检查孤立的包。你可以简单地使用 -s 像下面这样标记以查看是否有任何孤立的包。

$ debfoster -s
The following packages have been orphaned:
 tmux

正如您在上面的输出中看到的,我有一个孤立的包。 如果它是必要的包并且不想让 debfoster 删除它,我们可以通过运行以下命令将它简单地添加到 Keepers 文件中:

$ sudo debfoster

它会要求您是否保留 tmux。 如果您将 tmux 保存在 Keepers 文件中,只需键入 .

Keep tmux? [Ynpsiuqx?], [H]elp:Y

或者,您可以手动编辑 Keepers 文件并在列表中添加 tmux。

$ sudo vi /var/lib/debfoster/keepers

在其中添加 tmux。

[...]
tmux

类型 :wq 保存退出文件。 现在,运行“debfoster -s”命令时,您不会看到任何孤立的包。

请注意这里的孤立包是指在 debfoster 数据库中未提及的包。 这并不意味着该软件包完全没有必要。 为了 example, screen 和 tmux 实用程序非常有用。 因此,我们可以将它们添加到 debfoster 数据库中。

添加/删除包

由于 debfoster 是 apt-get 和 dpkg 包管理器的包装器,因此您也可以使用它来添加或删除包。

要安装软件包,请运行:

$ sudo debfoster screen

现在 debfoster 将为您运行 apt-get 并安装指定的软件包。

要删除一个包,只需在其名称后直接放置一个减号 (-),如下所示。

$ sudo debfoster screen-
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following packages will be REMOVED:
 screen*
0 upgraded, 0 newly installed, 1 to remove and 608 not upgraded.
After this operation, 972 kB disk space will be freed.
Do you want to continue? [Y/n]

查找依赖项

要列出一个包所依赖的所有包,请使用 -d 旗帜。

$ debfoster -d screen

并且,要列出 debfoster 数据库中依赖于给定包的所有包,请使用 -e 像下面这样的标志。

$ debfoster -e screen

有关更多详细信息,请参阅手册页。

$ man debfoster

如您所见,Debfoster 可帮助您跟踪已安装的内容并删除所有其他不需要的软件包。 再次,我警告你 – 你必须非常小心地使用这个应用程序。 不要删除重要的与系统相关的软件包,如 Ubuntu-base、grub、current Kernel 等。如果这样做,您最终可能会得到一个无法使用的系统。

建议阅读:

  • 在基于 Debian 的系统上删除不必要的配置文件
  • 如何在 Linux 中查找和删除未使用的软件包

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!