当阅读应用程序的构建说明时,我经常被告知要使用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
。