将安装包标记为自动安装

将安装包标记为自动安装

apt-mark和类似的软件可以将包标记为自动安装,但这可以在安装过程中完成吗,类似于apt install --mark-auto packages [...]

答案1

不,您必须作为单独的命令调用来运行apt-mark auto ..。甚至其操作也已从中删除apt-get

$ sudo apt-get markauto
Reading package lists... Done
Building dependency tree       
Reading state information... Done
N: This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' instead.
E: Handler silently failed

解决方法是,您可以将软件包列表存储在变量中,然后将其用于两个命令。另一种选择是创建一个 shell 函数,该函数可针对任何输入运行两个命令。

答案2

该功能已添加到 apt 中,--mark-auto选项为 [1]。

https://salsa.debian.org/apt-team/apt/-/commit/c19a3276fe7ecfc132e95b0277e9e68ff364dd92

答案3

看起来确实没有内置方法可以做到这一点。所以我写了一个小脚本来完成这项工作。

#!/bin/bash -e

NEW_DEPS=$(comm -23 <(xargs -n1 <<< "$@" | sort) <(apt-mark showmanual | sort))

apt install $NEW_DEPS
apt-mark auto $NEW_DEPS

它首先过滤掉任何已经手动安装的软件包,然后安装其余的软件包,并将它们设置为自动安装。

我通常使用它来临时安装构建依赖项。假设我需要软件包ABC来构建某些东西,并将上述脚本用作autoinstall。然后,我可以使用以下步骤来防止构建依赖项在构建后保留在我的系统中。

sudo autoinstall A B C
# build stuff...
sudo apt autoremove

答案4

我使用 aptitude(抱歉,我不喜欢这些类型的答案)。这是我使用它的主要原因之一。此外,它包含的依赖管理和冲突解决工具对我来说非常有用。您仍然可以通过发出以下命令直接使用它:

aptitude install okular

它会将所有新的依赖项标记为自动安装。

相关内容