apt-mark和类似的软件可以将软件包标记为自动安装,但是可以在安装过程中完成,类似于apt install --mark-auto packages [...]?
不,您必须作为单独的命令调用运行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 函数,为任何输入运行这两个命令。
看起来确实没有内置的方法可以做到这一点。所以我写了一个小脚本来完成这项工作。
#!/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)
它首先过滤掉所有已经手动安装的软件包,然后安装其余的软件包,然后将它们设置为自动安装。
我通常用它来临时安装构建依赖项。假设我需要包A,B并C构建一些东西并将上述脚本用作autoinstall. 然后,我可以使用以下过程来防止构建依赖项在构建后保留在我的系统上。
sudo autoinstall A B C
# build stuff...
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6942 次 |
| 最近记录: |