apt clean/remove/purge 等命令之间有什么区别?

ACs*_*ACs 7 linux apt docker

我对 Linux 和 Apt 包管理器还很陌生。我尝试基于同事为其他项目编写的其他 Dockerfile 构建我的第一个 docker 映像(编写我的第一个 Dockerfile)。我遇到过这些命令,但是我尝试将它们一一单独搜索,作为一名 Linux 新手,我仍然不太明白它们之间有什么区别,或者我应该使用哪一个还是应该一起使用它们?

这是 Dockerfile 中的一部分:

RUN rm -rf /var/lib/apt/lists/*; \
    apt-get purge -y --auto-remove; \
    apt-get autoremove; \
    apt-get clean;
Run Code Online (Sandbox Code Playgroud)

您能简单解释一下有什么区别吗?

小智 11

您提到的命令之间的差异描述如下。希望这些可以给你带来一点帮助。

\n

易于删除

\n

remove与 相同,install只是删除而不是安装软件包。

\n

它将删除二进制文件,但保留安装时随其安装的配置文件、数据文件和依赖项不变。

\n

易于清除

\n

purge与 相同,remove只是删除并清除了包(所有配置文件也被删除)。

\n

它将删除有关该包的所有内容,但不会删除安装时随其一起安装的依赖项,当您因为搞乱了配置而想要使用应用程序开始 \xe2\x80\x9c 时,这特别有用。

\n

但是,purge不会\xe2\x80\x99t 触摸用户\xe2\x80\x99s 主文件夹(例如/home/User/hiddenFolders)内的配置或数据文件。也没有简单的方法可以将它们删除。

\n

请注意,其他工具(例如 aptitude)只会记住已安装的软件包的依赖关系信息。

\n

自动删除

\n

autoremove用于删除为满足其他包的依赖关系而自动安装但现在不再需要的包。

\n

换句话说,它只会遍历目录并删除任何未直接安装的剩余软件包以及已安装的软件包不需要的软件包。比如说你安装apache,它会安装很多库。如果删除 apache,所有这些库都将被保留,直到您运行autoremove.

\n

您应该注意的唯一一件事是,如果您开始使用依赖项之一,例如 \xe2\x80\x9cPython\xe2\x80\x9d 但从未亲自安装过它;然后它将被删除。

\n

易于清洁

\n

clean清除检索到的包文件的本地存储库。它会从 /var/cache/apt/archives/ 和 /var/cache/apt/archieves/partial/ 中删除除锁定文件之外的所有内容。

\n

自动清洁

\n

与 一样cleanautoclean清除检索到的包文件的本地存储库。不同之处在于,它仅删除无法再下载的包文件,并且基本上没有用处。这使得缓存能够长期维护而不会失控。

\n

额外的

\n

这部分内容与问题关联不大,但我觉得有必要给大家一些额外的建议。

\n

如果不使用包管理器,请勿删除属于包的文件!它会让人感到困惑,并且是错误的做事方式。

\n

如果您不知道文件属于哪个包,请尝试以下操作:

\n
dpkg -S /path/to/file\n
Run Code Online (Sandbox Code Playgroud)\n

对于某些从源代码编译的应用程序,最好的方法是参考其 README,然后手动删除它。

\n