今天我来上班,发现工作服务器上的一些 perl 脚本无法运行。问题是脚本找不到一些需要运行的库。然而,就在昨天,这些库已经安装完毕,脚本也能运行了!似乎软件包已从系统中删除!查看日志后,我在 /var/log/apt/history.log 中找到了此记录
开始日期:2014-09-26 06:10:33 删除:libclass-load-perl:amd64 (0.17-1)、rrdtool:amd64 (1.4.7-2)、libyaml-syck-perl:amd64 (1.20-1)…… 跳过其他主要 PERL 包 结束日期:2014-09-26 06:10:41
但!
1 此时服务器上没有人,也没有人会移除这些包。
2.也许服务器被黑客入侵了,但首先没有明显的黑客迹象,其次,攻击者决定删除这些软件包,这很奇怪
3 /var/log/apt/history.log 中的所有其他条目也都有另一个字符串 CommandLine: - 在这种情况下它不存在。
会发生什么事呢?
更新:
一周前(2014-09-19)我清除了 munin(但没有清除 munin-node!)。也许这个删除的软件包是 munin 的自动删除建议?但据我所知,“自动删除”并不是真正的“自动”,在删除某些内容之前需要手动验证
更新2:
- 无人值守升级-未安装
- /etc/apt/apt.conf.d/01autoremove
易于 { 永不自动移除 { “^固件-linux.*”; "^linux-固件$"; “^linux-image.*”; “^kfreebsd-图像。*”; “^linux-restricted-模块。*”; “^linux-ubuntu-模块-.*”; "^gnumach$"; "^gnumach-图像.*"; }; 永不标记自动部分 { “元包”; “受限/元包”; “宇宙/元包”; “多元宇宙/元包”; “旧库”; “受限/旧库”; “宇宙/oldlibs”; “多元宇宙/oldlibs”; }; };
答案1
您可能已经使用了某种自动更新解决方案,它可以删除“未使用的”软件包。
当 apt 发现某个软件包没有被其他软件包使用时,那么它就会被视为“未使用”并将其删除。
如果您使用unattended-upgrade
程序进行自动更新,请尝试设置Remove-Unused-Dependencies
为true
。