如何临时安装一些软件包,并在几个月/几年后不需要时轻松删除它们?这样做的原因是我喜欢在决定是保留还是删除软件之前对其进行广泛的测试。
例如,我可能会安装图形设计包:
apt-get install inkscape gimp
和数学包:
apt-get install texlive-full gnuplot
我可以为每组包使用虚拟机(math
或design
),但这似乎有点矫枉过正(我不需要增加安全/计算成本)。
我还可以使用apt list --installed
和删除我不需要的软件包(例如)apt-get purge texlive-full gnuplot
(但这要求我记住我安装了哪一组软件包 - 我总是一次删除整套软件包,而不是一组中的单个软件包)。
答案1
这取决于“删除”软件包的原因是什么。您可能想要:(1)干净的环境,(2)节省空间(,(3)等等?)
如果您对(1)感兴趣,我列出了一些我在不同程度上使用过的替代方案(包括没有任何):
这环境模块包提供通过模块文件动态修改用户环境的功能。
模块对于管理不同版本的应用程序很有用。模块还可以捆绑到元模块中,元模块将加载整套不同的应用程序。
有许多基于模块的工具,也在下面列出。口味是一个构建在 Modules C 版本之上的包装器,用于简化需要针对不同编译器、MPI 库、处理器架构等进行多次构建的软件的组织和表示。
软件合集是一个 Red Hat 项目,使您能够在系统上构建并同时安装相同组件的多个 RPM 版本,而不会影响从您的发行版安装的 RPM 软件包的系统版本。安装后,将使用 scl 命令启用软件集合,该命令依赖于用户环境设置的模块。
既然你提到了apt
,这可能对你没有用。我google了一下,好像Debian不可用。 https://lists.debian.org/debian-user/2017/02/msg00461.html这OSCAR集群项目使用模块和名为 switcher 的工具。
我不确定目前的开发和维护状况如何。也可以看看https://github.com/oscar-cluster
如果您对(2)感兴趣,我想情况并非如此,因为您反对虚拟机是因为它是一种过度杀伤而不是占用的空间,我想您一定会安装/删除。我不知道有任何软件包可以管理软件包中的安装/删除。
答案2
apt-get autoremove
如果没有安装依赖于另一个包的包,将删除自动安装的包以满足另一个包的依赖关系。
例如:
# apt-get install inkscape gimp
Depends:
将安装 inkscape 和 gimp 以及它们在或Recommends:
(*) 行中列出的所有库和其他包。
# apt-get remove inkscape gimp
# apt-get autoremove
将删除这两个软件包以及所有自动安装的依赖项(除非您稍后安装的其他软件包也依赖于它们)。它将删除全部不再需要满足依赖关系的自动安装的软件包,而不仅仅是为 inkscape 或 gimp 自动安装的软件包。
或者,清除它们而不是仅仅删除它们:
# apt-get purge inkscape gimp
# apt-get --purge autoremove
如果您想保留自动安装的软件包,可以将apt-mark
其标记为手动安装。例如
# apt-mark manual some-package(s)
您还可以使用以下命令将手动安装的包标记为自动安装:
# apt-mark auto some-package(s)
Depends:
(*) 默认情况下,apt 将自动安装在一行或一行中列出的软件包,但可以通过设置或 中的文件Recommends:
来禁用推荐软件包的自动安装。APT { Install-Recommends "False";};
/etc/apt/apt.conf
/etc/apt/apt.conf.d/