我可以为一组包指定一个名称以便于删除吗?

我可以为一组包指定一个名称以便于删除吗?

当阅读应用程序的构建说明时,我经常被告知要使用apt.

稍后,当我不再需要这些软件包时,我想在安装时为这组软件包指定一个名称或标签,这为我提供了某种有关安装它们的原因的上下文,并方便只需引用集合名称即可卸载该批次。

那可能吗?

目前,我的印象是我必须管理有关安装各个软件包的原因的单独注释。

答案1

一种方法是在安装时向 apt 传递一些任意选项。

例如

apt -o foo=bar install when

..结果在此条目内/var/log/history.log

root@ans4:~# tail -4 /var/log/apt/history.log
Start-Date: 2022-10-27  12:53:12
Commandline: apt -o foo=bar install when
Install: libsigsegv2:amd64 (2.13-1, automatic), when:amd64 (1.1.38-2), m4:amd64 (1.4.18-5, automatic)
End-Date: 2022-10-27  12:53:14
root@ans4:~#

所以你可以开始使用某种-o andreas-reason=needed-for-db构造。

请注意,您需要进行调整logrotate以避免不受欢迎的旋转/删除。

root@ans4:~# cat /etc/logrotate.d/apt
/var/log/apt/term.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

/var/log/apt/history.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

root@ans4:~#

答案2

三个文件:

<packages.txt>
list
of
packages

安装问题是......问题中没有要求,我懒得写了。此外,下面的代码不起作用,因为我确实懒得使用apt基于 - 的机器。至少说明了这一点。

#!/usr/bin/env bash    

# <remove.sh>: Uninstall all packages lised in ./packages.txt.

while read PACK
do
    sudo apt remove "$PACK"
done < 'packages.txt'

sudo apt autoremove
sudo apt clean

假设两个“包集合”相交,例如它们都需要 gcc — 仅删除其中一个会发生什么?

当然是一片混乱。如何安全地格式化packages.txt......超出了我的知识范围。

想法:让安装脚本packages.txt足够智能地生成以避免卸载gcc

相关内容