You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Ubuntu 22.04.2 LTS旧机生成软件包与仓库列表,实现新机环境克隆

如何基于Ubuntu 22.04.2 LTS旧机生成软件包与仓库列表,实现新机环境克隆

刚好我也处理过类似的环境克隆需求,针对Ubuntu 22.04.2 LTS,完全可以通过命令行快速导出旧机的软件包和仓库配置,然后在新机上一键恢复,不用一个个手动装。结合你已经把旧SSD挂载到新机的情况,下面分步骤来操作:

一、从旧机(或挂载的旧SSD)导出关键信息

1. 备份仓库源配置

Ubuntu的软件源配置主要存放在两个地方:主配置文件sources.list和sources.list.d目录下的第三方源配置。直接复制这些文件到新机即可:

# 假设旧SSD挂载在/mnt/old-drive,执行以下命令
sudo cp -ra /mnt/old-drive/etc/apt/sources.list /etc/apt/
sudo cp -ra /mnt/old-drive/etc/apt/sources.list.d/ /etc/apt/

另外,第三方源需要GPG密钥验证,建议同时备份密钥目录:

sudo cp -ra /mnt/old-drive/etc/apt/trusted.gpg.d/ /etc/apt/

2. 导出已安装的Deb软件包列表

要获取旧机所有已安装的Deb包,有两种方式:

  • 如果旧机还能正常开机,直接在旧机上运行:
    dpkg --get-selections | grep -v deinstall > installed-packages.list
    
  • 如果只有挂载的旧SSD,直接读取旧机的dpkg状态文件生成列表:
    awk '/^Package:/ {print $2 " install"}' /mnt/old-drive/var/lib/dpkg/status | grep -v deinstall > installed-packages.list
    

这个命令会过滤掉已卸载的包,只保留当前安装的软件包信息。

3. 导出Snap软件包列表

Ubuntu 22.04里很多默认应用(比如Firefox、VS Code)是用Snap分发的,别忘了备份这部分:

  • 旧机开机状态下导出(带版本号,方便恢复到相同版本):
    snap list | awk 'NR>1 {print $3 " " $1}' > installed-snaps.list
    
  • 挂载旧SSD时,直接读取Snap的安装目录提取包名:
    ls /mnt/old-drive/var/lib/snapd/snaps/ | grep -v "^partial" | sed 's/_.*//' | uniq > installed-snaps.list
    

二、在新机上恢复环境

1. 更新仓库缓存

先让新机识别刚复制的源配置:

sudo apt update

2. 恢复Deb软件包

用之前导出的列表批量安装:

sudo dpkg --set-selections < installed-packages.list
sudo apt-get dselect-upgrade -y

dselect-upgrade会自动处理依赖关系,安装所有缺失的包,同时移除不需要的旧包(如果有冲突的话会提示你处理)。

3. 恢复Snap软件包

根据导出的列表安装Snap应用:

  • 如果列表带版本号,执行:
    while read rev name; do
        sudo snap install "$name" --revision "$rev"
    done < installed-snaps.list
    
  • 如果只有包名,直接安装最新版:
    while read name; do
        sudo snap install "$name"
    done < installed-snaps.list
    

4. 验证恢复结果

可以用以下命令检查是否和旧机一致:

# 对比Deb包列表
dpkg --get-selections | diff installed-packages.list -
# 检查Snap包
snap list

一些注意事项

  • 硬件适配:Ubuntu 22.04会自动识别新硬件并安装对应驱动,旧机的硬件专属包(比如NVIDIA驱动)如果和新机不兼容,apt会自动提示冲突,你只需要根据提示选择合适的驱动即可。
  • 用户配置:你已经复制了/home目录,大部分应用的个性化配置都在~/.config、~/.local这些子目录里,恢复软件后直接就能用之前的配置。
  • 清理冗余:恢复完成后,可以用sudo apt autoremove清理不需要的依赖包。

备注:内容来源于stack exchange,提问作者Yasha Karant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:58:08