当您运行“apt install <已经存在的软件包>”命令时,如何阻止 Apt 将软件包标记为手动?

Exa*_*son 6 package-management apt dpkg

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

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

我非常讨厌这一点。我怎样才能阻止 apt 这样做呢?有时甚至会把事情搞砸。

use*_*733 7

apt 的默认设置是将您指定的包标记为manual. 你指定了它——这就是“手册”的定义。

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

sudo apt install --mark-auto <package-name-1> <package-name-2> ... <package-name-n>
Run Code Online (Sandbox Code Playgroud)

如果您忘记使用--mark-auto,并且某些软件包已更改为manual,则将 apt-marking 从 更改回 是很简单manualauto

sudo apt-mark auto <package-name-1> <package-name-2> ... <package-name-n>
Run Code Online (Sandbox Code Playgroud)


小智 6

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

apt install -s <package-which-is-already-there>
Run Code Online (Sandbox Code Playgroud)

如果该软件包已经安装,您将得到如下行:

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

从手册页man apt-get

-s、--simulate、--just-print、--dry-run、--recon、--no-act
   没有行动;执行基于将发生的事件的模拟
   当前系统状态但实际上并不改变系统。锁定将是
   禁用(Debug::NoLocking),因此系统状态可能会在 apt-get 时发生变化
   在跑。模拟也可以由非 root 用户执行,这可能
   没有对所有 apt 配置的读取权限,从而扭曲了模拟。A
   默认情况下也会向非 root 用户显示表达此警告的通知
   (APT::Get::显示用户模拟注释)。配置项:
   APT::获取::模拟。

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