如何使用apt-get删除“手动安装”标志并恢复为“自动安装”?

Ste*_*epp 121 ubuntu debian apt

为了编译一些东西,我需要zlib1g-dev安装这个包,所以我启动了一个apt-get install zlib1g-dev.

apt-get 很好地告诉我,由于另一个软件包,该软件包已经自动安装,并且它知道我现在要明确安装它:

# apt-get install zlib1g-dev
zlib1g-dev is already the newest version.
zlib1g-dev set to manually installed.
Run Code Online (Sandbox Code Playgroud)

我的编译完成了,我不再需要它了,所以我想把它的状态恢复到以前的状态:自动安装。这样,当不再需要它时,它将使用简单的apt-get autoremove.

我不能做,apt-get remove zlib1g-dev因为有些包仍然依赖它。

那么如何将包zlib1g-dev安装状态恢复为自动安装

我知道我可能会/var/lib/apt/extended_states手动编辑

Package: zlib1g-dev
Auto-Installed: 0
Run Code Online (Sandbox Code Playgroud)

Package: zlib1g-dev
Auto-Installed: 1
Run Code Online (Sandbox Code Playgroud)

……但就是感觉不太对劲。

小智 126

apt-mark 可以帮助您:

apt-mark auto zlib1g-dev
Run Code Online (Sandbox Code Playgroud)

对于 11.04 或更早版本,请使用“markauto”而不是“auto”


Mik*_*l S 102

最初安装软件包时,Aptitude 可以为您提供帮助:

aptitude install "zlib1g-dev&M"
Run Code Online (Sandbox Code Playgroud)

或者,在您安装软件包后:

aptitude markauto "zlib1g"
Run Code Online (Sandbox Code Playgroud)

编辑:如果你没有能力,你可以使用

apt-mark auto zlib1g-dev
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但我使用 `apt-mark` 对 @ArvindSing 的回答进行了 +1,因为它不需要您安装 `aptitude`。`apt-mark` 带有每个人都应该已经拥有的 `apt` 包。 (8认同)

小智 8

这就是你要找的。

sudo apt-get markauto first-package second-package etc-package
Run Code Online (Sandbox Code Playgroud)

来源:

apt-get --help
Run Code Online (Sandbox Code Playgroud)

  • 请注意,现在不推荐使用 apt-mark (13认同)