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
它首先过滤掉任何已经手动安装的软件包,然后安装其余的软件包,并将它们设置为自动安装。
我通常使用它来临时安装构建依赖项。假设我需要软件包A
、B
和C
来构建某些东西,并将上述脚本用作autoinstall
。然后,我可以使用以下步骤来防止构建依赖项在构建后保留在我的系统中。
sudo autoinstall A B C
# build stuff...
sudo apt autoremove
答案4
我使用 aptitude(抱歉,我不喜欢这些类型的答案)。这是我使用它的主要原因之一。此外,它包含的依赖管理和冲突解决工具对我来说非常有用。您仍然可以通过发出以下命令直接使用它:
aptitude install okular
它会将所有新的依赖项标记为自动安装。