为什么 apt-get 认为“不再需要软件包”

Mil*_*ays 10 apt

我在apt-get install raspberrypi-net-mods运行 Raspbian 的 Raspberry Pi 上运行并收到以下消息:-

The following packages were automatically installed and are no longer required:
  git git-man liberror-perl rsync
Use 'apt-get autoremove' to remove them.
Run Code Online (Sandbox Code Playgroud)

我很迷惑。为什么apt-get认为这些“不再需要”?我rsync经常和git不时使用。

这会删除这些,还是在其他地方提供了它们 - 如果是这样,我将如何检查?

Ste*_*itt 12

每当一个包被自动安装时,apt-get因为它是某个其他包的依赖项,请apt-get注意这个事实;那么如果它注意到没有任何东西再依赖于这样的包,它会建议删除该包。这对图书馆特别有用。

这就是“不再需要”的全部含义:apt-get不知道您是否正在使用这些软件包,但它知道它们是自动安装的,不再依赖于它们。

要说明apt-get不应将软件包视为自动安装,请运行apt-mark并将其标记为手动[已安装]:

apt-mark manual git rsync
Run Code Online (Sandbox Code Playgroud)

或者显式安装它(如果已经安装了最新版本的包,这不会做任何事情,除了将其标记为手动安装):

apt-get install git rsync
Run Code Online (Sandbox Code Playgroud)

由于这些包已经安装,apt-get不会再次安装它们,但它会将它们标记为显式安装并且不会建议将它们移除。(如果软件包不是可用的最新版本,apt-get将升级它们。)