软件包“设置为手动安装”? 这是什么意思?

如果您使用 apt 命令在终端中安装软件包,您将看到各种输出。

如果您注意并阅读输出,有时您会注意到一条消息:

package_name 设置为手动安装

你有没有想过这条消息意味着什么以及为什么你没有在所有包中看到它? 让我在这个解释器中分享一些细节。

了解“包设置为手动安装”

当您尝试安装已安装的库或开发包时,您会看到此消息。 此依赖包是与另一个包一起自动安装的。 如果删除了主包,则使用 apt autoremove 命令删除依赖包。

但是由于你试图显式安装依赖包,你的 Ubuntu 系统认为你需要这个包独立于主包。 因此,该软件包被标记为手动安装,因此不会自动删除。

不是很清楚,对吧? 采取 example 在 Ubuntu 上安装 VLC。

由于主 vlc 包依赖于许多其他包,因此这些包会自动安装。

使用 VLC 时安装了几个依赖项

如果您检查名称中包含 vlc 的已安装软件包的列表,您会看到除了 vlc,其余的都标记为“自动”。 这表明这些软件包是自动安装的(使用 vlc),它们将使用 apt autoremove 命令自动删除(当 vlc 被卸载时)。

除了 vlc (最后),其余的包都标记为“自动”

现在假设您出于某种原因考虑安装“vlc-plugin-base”。 如果您在其上运行 apt install 命令,系统会告诉您该软件包已安装。 同时,它将标记从自动更改为手动,因为系统认为您在尝试手动安装时明确需要此 vlc-plugin-base。

包设置为手动安装

可以看到它的状态变成了 [installed] 从 [installed,automatic].

手动安装包的状态更改

现在,让我删除 VLC 并运行 auoremove 命令。 您可以看到“vlc-plugin-base”不在要删除的软件包列表中。

再次检查已安装软件包的列表。 vlc-plugin-base 仍然安装在系统上。

你可以在这里看到另外两个与 vlc 相关的包。 这些是 vlc-plugin-base 包的依赖项,这就是为什么它们也存在于系统上但标记为“自动”的原因。

我相信现在有了这些例子,事情就更清楚了。 让我为您添加一个奖励提示。

将包重置为自动

如果包的状态从自动更改为手动,您可以通过以下方式将其设置回自动:

sudo apt-mark auto package_name

结论

这不是一个重大错误,也不会阻止您在系统中进行工作。 但是,了解这些小事会增加您的知识。

好奇心可能杀死了猫,但它使企鹅更聪明. 这是为这篇原本乏味的文章增添幽默感的原始引述:)

如果您想阅读更多这样的文章,这些文章可能看起来微不足道,但可以帮助您更好地了解您的 Linux 系统,请告诉我。