当您运行“apt install”时,如何阻止 Apt 将软件包标记为手动“ 命令?

当您运行“apt install”时,如何阻止 Apt 将软件包标记为手动“ 命令?

当您运行“apt install”命令时,如何阻止 Apt 将包标记为手动?

例如,当我意外地运行apt install <package-which-is-already-there>已经存在的包),它将包标记为manually installed

我非常讨厌这个。我怎样才能阻止 apt 这样做?它有时甚至会把事情搞得一团糟。

答案1

apt 默认会标记一个包您指定的就像manual。您指定了它 —— 这就是‘手册’的定义。

您可以使用--mark-autoapt 命令中的选项来覆盖此行为。(Ubuntu 22.04 及更新版本)

sudo apt install --mark-auto <package-name-1> <package-name-2> ... <package-name-n>

如果你忘记使用--mark-auto,并且你的某些软件包被更改为,那么将 apt-marking从manual改回 很简单:manualauto

sudo apt-mark auto <package-name-1> <package-name-2> ... <package-name-n>

答案2

除了@user535733 提供的补救措施之外,您还可以在安装之前通过使用标志模拟安装来检查 apt 将执行的操作-s

apt install -s <package-which-is-already-there>

如果该包已经安装,你会看到如下一行:

<package-which-is-already-there> 已经是最新版本 (<version>)。

来自手册页man apt-get

-s、--模拟、--just-print、--dry-run、--recon、--no-act
   不采取任何行动;根据以下内容模拟将要发生的事件
   当前系统状态,但实际上不改变系统。锁定将
   已禁用(Debug::NoLocking),因此系统状态可以在 apt-get 时改变
   正在运行。非 root 用户也可以执行模拟,这可能
   无法读取所有 apt 配置,从而扭曲模拟。
   注意,此警告也会默认显示给非 root 用户
   (APT::Get::Show-User-Simulation-Note)。配置项:
   APT::获取::模拟。

   模拟运行打印出一系列行,每行代表一个 dpkg
   操作:配置(Conf)、删除(Remv)或解包(Inst)。方括号
   表示包装破损,空方括号表示包装破损
   没有任何后果(罕见)。

相关内容