You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何从旧硬盘迁移已安装软件包至新Ubuntu系统?

如何从旧硬盘迁移已安装软件包至新Ubuntu系统?

兄弟我太懂你这种糟心处境了——老Ubuntu用得好好的,突然根分区罢工,重装系统后之前装的一堆软件全没了,手动拷可执行文件又怕搞出各种兼容问题对吧?别慌,你提到的dpkg --root=/mountpoint -l就是关键突破口,咱们可以用这个命令导出旧系统的已安装包列表,然后在新系统里批量安装,具体步骤如下:

  • 第一步:挂载旧系统的分区
    先找到旧系统分区的设备名(可以用lsblk或者fdisk -l命令查看),然后把它挂载到一个临时目录,比如/mnt/oldroot

    sudo mount /dev/sdXn /mnt/oldroot
    

    注意把/dev/sdXn替换成你实际的旧分区设备名,比如/dev/sda2之类的。

  • 第二步:导出旧系统的已安装包列表
    直接用dpkg --root=/mnt/oldroot -l会输出很多冗余信息,咱们可以过滤出真正已安装的包名,生成一个干净的列表文件:

    dpkg --root=/mnt/oldroot -l | grep '^ii' | awk '{print $2}' > /tmp/old_packages.txt
    

    这个命令里,grep '^ii'是筛选出已安装的包(dpkg输出里ii开头的就是已安装状态),awk '{print $2}'是提取包名,最后把结果存到/tmp/old_packages.txt里。

  • 第三步:在新系统批量安装软件包
    先更新一下新系统的软件源(如果你的旧Ubuntu版本已经停止支持,记得把新系统的sources.list换成旧版本归档源,比如把源地址改成http://old-releases.ubuntu.com/ubuntu/,不然apt会找不到包),然后用下面的命令批量安装:

    sudo xargs apt-get install -y < /tmp/old_packages.txt
    

    这个命令会自动读取列表里的所有包名,批量下载安装,省得你一个个手动输入。

额外提醒

如果旧系统里有一些第三方源的包或者你自己编译安装的软件,这种方法可能没法直接迁移——第三方源的包需要你在新系统里先添加对应的源,自己编译的软件可能得重新编译或者拷对应的文件。但大部分官方仓库里的软件都能通过这种方法快速恢复。

备注:内容来源于stack exchange,提问作者Edward Falk

火山引擎 最新活动