将安装包标记为自动安装

Oxw*_*ivi 11 apt

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

use*_*.dz 8

不,您必须作为单独的命令调用运行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
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,您可以将包列表存储在一个变量中,然后将它与两个命令一起使用。另一种选择是创建一个单独的 shell 函数,为任何输入运行这两个命令。


rap*_*sse 5

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

#!/bin/bash -e

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

apt install $NEW_DEPS
apt-mark auto $NEW_DEPS
Run Code Online (Sandbox Code Playgroud)

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

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

sudo autoinstall A B C
# build stuff...
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)