Ubuntu 解决 apt 锁占用 + 安装 net-tools + 搭建 SSH 远程连接(保姆级实操)

前言

在 Ubuntu 虚拟机嵌入式开发(地平线 X5 SDK 编译、烧录环境搭建)过程中,经常遇到两个高频问题:

  1. Ubuntu 自动更新占用 apt 锁,导致所有 apt install 卡死无法安装软件。
  2. 新版 Ubuntu 默认没有 ifconfig 网络命令,无法查看虚拟机 IP。
  3. 没有 SSH 服务,无法 Windows 远程连接虚拟机开发。

本文基于真实实操排错命令,彻底解决 apt 锁冲突、安装网络工具、搭建 SSH 远程服务,全程可直接复制执行。

一、问题一:apt 缓存锁占用报错

1.1 报错现象

执行任意 apt 安装命令,一直卡住:

复制代码
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. 
It is held by process xxx (unattended-upgr)

原因:Ubuntu 自带自动更新服务 unattended-upgrades 后台占用 dpkg 锁,导致用户无法安装软件。

1.2 终极解决方法(实测有效)

依次执行全套解锁、停服务、清锁、修复依赖命令:

bash 复制代码
# 1. 杀死自动更新进程
sudo killall -9 unattended-upgr

# 2. 删除前端锁、dpkg 主锁
sudo rm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock

# 3. 彻底停止自动更新服务
sudo systemctl stop unattended-upgrades

# 4. 清空所有残留锁文件
sudo rm -rf /var/lib/dpkg/lock* /var/cache/apt/archives/lock

# 5. 修复损坏的 dpkg 依赖状态
sudo dpkg --configure -a

二、问题二:Ubuntu 找不到 ifconfig 命令

2.1 报错原因

Ubuntu 20.04/22.04 新版本默认舍弃 net-tools,不再预装 ifconfigroutenetstat 等经典网络工具。

2.2 安装 net-tools 完整命令

bash 复制代码
# 更新源并安装
sudo apt update && sudo apt install -y net-tools

# 单独安装(解锁后直接执行)
sudo apt install -y net-tools

2.3 验证是否安装成功

bash 复制代码
ifconfig

正常输出网卡 IP、MAC 地址、子网掩码即为成功。

三、搭建 SSH 远程连接服务(Windows 远程连虚拟机)

开发必备:开启 SSH 后,可使用 Xshell、FinalShell、MobaXterm 远程连接 Ubuntu 虚拟机,无需虚拟机内操作。

3.1 安装并启动 openssh-server

bash 复制代码
# 安装 ssh 服务
sudo apt install openssh-server -y

# 启动 ssh 服务
sudo systemctl start ssh

3.2 查看虚拟机 IP(用于远程连接)

bash 复制代码
ifconfig

获取 ens33 网卡的 inet 地址,例如:192.168.x.x

3.3 远程连接方式

  • 主机:虚拟机 IP
  • 端口:22
  • 用户名/密码:Ubuntu 登录账号密码

四、全套整合一键修复命令(懒人版)

直接复制整段执行,一次性解决锁问题 + 装网络工具 + 开 SSH:

bash 复制代码
sudo killall -9 unattended-upgr
sudo rm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock
sudo systemctl stop unattended-upgrades
sudo rm -rf /var/lib/dpkg/lock* /var/cache/apt/archives/lock
sudo dpkg --configure -a
sudo apt update && sudo apt install -y net-tools openssh-server
sudo systemctl start ssh
ifconfig

五、实操总结(排错核心)

  1. apt 锁卡死 99% 都是自动更新服务导致,不要重启虚拟机,直接杀进程清锁即可解决。
  2. 新版 Ubuntu 必须手动安装 net-tools 才能使用 ifconfig
  3. 开发环境必装 SSH,极大提升虚拟机开发效率。
  4. 所有命令为项目实操有效命令,适配地平线 X5 SDK 编译、嵌入式 Ubuntu 开发环境。

六、附:本次实操有效历史指令

bash 复制代码
sudo apt install net-tools
sudo killall -9 unattended-upgr
sudo rm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock
sudo apt update && sudo apt install -y net-tools
sudo kill -9 509951
sudo systemctl stop unattended-upgrades
sudo rm -rf /var/lib/dpkg/lock* /var/cache/apt/archives/lock
sudo dpkg --configure -a
sudo apt install -y net-tools
ifconfig 
sudo apt install openssh-server
sudo systemctl start ssh
ifconfig 

七、进阶配置与注意事项

7.1 永久禁用自动更新(可选)

为防止 unattended-upgrades 服务再次启动占用锁,可将其永久禁用:

bash 复制代码
# 禁用自动更新服务
sudo systemctl disable unattended-upgrades

# 确认服务状态
sudo systemctl status unattended-upgrades

注意 :禁用自动更新后,需定期手动执行 sudo apt update && sudo apt upgrade 来保持系统安全更新。

7.2 配置 SSH 开机自启

确保 SSH 服务在虚拟机重启后自动启动:

bash 复制代码
# 启用 SSH 开机自启
sudo systemctl enable ssh

# 验证是否已启用
sudo systemctl is-enabled ssh

7.3 使用 ip 命令替代 ifconfig(现代推荐)

Ubuntu 推荐使用更强大的 ip 命令,它默认已安装:

bash 复制代码
# 查看所有网络接口信息
ip addr show

# 查看路由表
ip route show

# 查看网络统计信息
ss -tuln

7.4 防火墙配置(如启用)

如果系统启用了 ufw 防火墙,需放行 SSH 端口:

bash 复制代码
# 查看防火墙状态
sudo ufw status

# 允许 SSH(如果防火墙已启用)
sudo ufw allow ssh

# 或直接放行 22 端口
sudo ufw allow 22/tcp

7.5 安全建议

  1. SSH 密钥登录:建议配置 SSH 密钥登录替代密码,更安全。
  2. 修改默认端口:可将 SSH 默认端口 22 改为其他端口,减少扫描攻击。
  3. 定期更新:在开发环境稳定后,可重新启用定时安全更新。

八、常见问题排查(Q&A)

Q1:执行 sudo killall -9 unattended-upgr 提示无此进程?

A:可能进程名不同或已结束。可直接执行后续的清锁命令。

Q2:ifconfig 显示 ens33 没有 IP 地址?

A:检查虚拟机网络设置是否为 NAT 或桥接模式,并尝试重启网络:

bash 复制代码
sudo systemctl restart systemd-networkd
# 或
sudo netplan apply

Q3:SSH 连接被拒绝?

A:确认 SSH 服务正在运行:sudo systemctl status ssh,并检查防火墙设置。

Q4:执行一键修复命令后,apt update 仍失败?

A:可能是源问题或网络不通。可尝试更换国内镜像源。

相关推荐
用户9718356334661 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 小时前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠18 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush419 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
开发者联盟league19 小时前
安装pnpm
ssh
载数而行52019 小时前
Linux 11 动态监控指令top
linux
不会C语言的男孩20 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈20 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
凡人叶枫21 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
2601_961875241 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant