Skip to content

禁用 Ubuntu "Daemons using outdated libraries" 弹窗提示

问题描述

在 Ubuntu 22.04 LTS 系统中使用 apt 安装或更新软件包时,经常会遇到一个提示框询问"Which service should be restarted?"(应该重启哪些服务?)。这个问题在新安装的 Ubuntu 22.04 中特别常见,对于不想在操作时中断服务的用户来说非常烦人。

Daemons using outdated libraries 提示截图

解决方案

这个弹窗是由 Ubuntu 22.04 新增的 needrestart 工具引起的,它会在系统更新后检查哪些服务使用了过时的库文件,并提示用户重启这些服务。

注意

禁用这些提示可能会带来安全风险。建议仅在开发环境或您明确知道风险的情况下使用以下方法。

方法一:配置 needrestart 行为(推荐)

编辑 /etc/needrestart/needrestart.conf 配置文件:

bash
sudo nano /etc/needrestart/needrestart.conf

找到以下配置行:

perl
#$nrconf{restart} = 'i';

取消注释并根据需求修改为:

  • 自动重启服务(安全但可能会中断服务)

    perl
    $nrconf{restart} = 'a';
  • 仅列出需要重启的服务(推荐)

    perl
    $nrconf{restart} = 'l';
  • 完全禁用检查(不推荐)

    perl
    $nrconf{restart} = '';

保存文件后,后续的 apt 操作将按照新的配置执行。

方法二:临时禁用提示

如果只是想在单次操作中禁用提示,可以使用环境变量:

bash
export NEEDRESTART_MODE=a  # 自动重启
sudo apt update && sudo apt upgrade

或者:

bash
export NEEDRESTART_MODE=l  # 仅列出
sudo apt update && sudo apt upgrade

方法三:移除 needrestart 包(不推荐)

警告

此方法会完全移除安全检查功能,可能带来安全隐患。

bash
sudo apt remove needrestart

配置选项详解

以下是 needrestart 的主要配置选项:

选项值含义适用场景
i交互模式(默认)需要用户手动确认
a自动重启生产服务器,希望自动处理
l仅列出服务开发环境,仅查看信息
空值禁用检查不推荐,可能存在安全隐患

最佳实践建议

  1. 生产环境:建议使用 $nrconf{restart} = 'a' 自动重启服务,确保安全更新
  2. 开发环境:可以使用 $nrconf{restart} = 'l' 仅查看需要重启的服务
  3. 临时操作:使用环境变量临时修改行为,不影响系统配置

提示

即使选择禁用提示,仍建议定期手动检查并重启使用旧库的服务,以保持系统安全性。

验证配置

修改配置后,可以通过以下命令验证:

bash
sudo needrestart -v

这将显示当前配置和需要重启的服务列表,而不会执行任何操作。

通过以上配置,您可以有效管理 Ubuntu 22.04 中的服务重启提示,根据实际需求平衡便利性和安全性。