【问题标题】:How do I preserve installed applications when migrating Ubuntu to another platform?将 Ubuntu 迁移到另一个平台时如何保留已安装的应用程序?
【发布时间】:2010-09-16 07:15:16
【问题描述】:

我正在考虑从旧的 AMD64 迁移到新的 32 位 Intel 双核。安装不是问题,但我可以转移所有已安装的应用程序吗?我没去过 到目前为止,除了迁移到类似平台和文件系统的地方之外,能够在 Google 上找到任何东西。我不会更改文件系统,但平台会有所不同。 Gentoo 中“世界”文件的行中有什么东西吗?

【问题讨论】:

    标签: ubuntu migrate apt dpkg


    【解决方案1】:

    您可以轻松保存软件包列表:查看“man dpkg”并搜索 --set-selections 和 --get-selections。

    它的基本原理是保存包列表:

    dpkg --get-selections > package_list

    要在另一个系统上恢复该列表:

    cat package_list | sudo dpkg --set-selections && sudo apt-get dselect-upgrade

    跨架构移动意味着会有一些包不可用。它们将被忽略;例如,ia32-libs 将无法安装在 32 位系统上。如果您从 x86-64 迁移到 x86,该选择将被忽略。

    【讨论】:

    • 需要做的:$ sudo apt-get install dselect $ sudo dselect -> 更新-> 安装。然后 sudo apt-get dselect-upgrade 工作
    • sudo dselect update 也可能是必需的。没有,我在运行apt-get dselect-upgrade 时遇到这些错误:dpkg: warning: package not in database at line ... 请参阅askubuntu.com/questions/727067/…
    【解决方案2】:

    有趣的是,我在这里使用 SO 作为 howto 存储库(写一个问题,然后选择我自己的答案),但是在我写自己的答案的时候,我被打了三次!

    无论如何,这是我的记录:

    使用 dpkg 的 --get-selections 和 --set-selections 选项来捕获和选择您当前安装的包。

    首先,在旧系统上导出当前的包列表:

    sudo dpkg --get-selections > mypackages.txt
    

    然后选择此列表作为要在新系统上安装的软件包:

    sudo dpkg --set-selections < mypackages.txt
    

    (为了获得额外奖励,请将您的 apt 缓存目录复制到以尽量减少下载:/var/cache/apt)

    最后,告诉 apt 下载并安装选定的包:

    sudo apt-get dselect-upgrade
    

    【讨论】:

      【解决方案3】:

      对于您使用 apt-get 安装的所有内容,如果您想创建已安装内容的记录,请运行以下命令:

      dpkg -l|awk '/^ii\s*(.*)\s*/ {print $2}'|packages.txt
      

      这将创建一个包含您已安装的所有软件包的文本文件。然后在您完成安装后,使用以下内容创建并运行一个脚本:

      #!/bin/sh
      for p in $(cat packages.txt); do apt-get install $p; done
      

      注意事项:
      1) 由于您正在从 64 位迁移到 32 位,因此某些软件包可能不兼容。在运行上面的脚本之前,我会为 '64' grep packages.txt 并在需要时找到替代方案。
      2) 您从源代码安装的任何内容,您都必须记下并再次从源代码安装。

      祝你好运!

      【讨论】:

        【解决方案4】:

        我不确定这是否是一个答案,但我刚刚发现命令 aptitude-create-state-bundle 的存在。是的,这是一个命令。查看手册页。

        【讨论】:

          【解决方案5】:

          如果(像我一样)您在搞砸系统之前没有这样做,您可以启动到 live-cd 或其他安装,然后使用 chroot 获取此信息。

          sudo chroot /path/to/old/system /bin/bash
          

          然后跳dpkg --get-selections 跳舞,您可以使用生成的文件来设置您的新系统。

          【讨论】:

            【解决方案6】:

            这是我通常用来解决类似问题的方法(多次迁移到新笔记本电脑)。

            除了这个问题的其他答案还有两个,这也会移动你的update-alternativesdebconf设置,这总是需要很长时间才能意识到那些没有被转移。

            在旧系统上备份:

            sudo apt-get install dselect debconf-utils
            mkdir system-selections
            update-alternatives --get-selections > system-selections/alternatives-selections
            dpkg --get-selections '*' > system-selections/dpkg-selections
            sudo debconf-get-selections > system-selections/debconf-selections
            

            将配置目录复制到新系统(“scp -r oldsystem:system-selections ~”):

            sudo apt-get install dselect debconf-utils
            sudo dselect update
            sudo dpkg --set-selections  < system-selections/dpkg-selections
            sudo debconf-set-selections < system-selections/debconf-selections
            sudo apt-get -u dselect-upgrade
            sudo update-alternatives --set-selections < system-selections/alternatives-selections
            

            此外,您可以使用相同的方法定期将您的主目录和system-selections(如上所述)备份到远程存储。因此,如果您的笔记本电脑损坏/被盗,构建类似系统的速度非常快。

            【讨论】:

              【解决方案7】:

              我能想到的最佳方法是备份当前系统上已安装软件包的列表,然后使用该列表设置要在新系统上安装的软件包。关于如何备份和恢复您的包选择的一般说明:

              安装工具

              sudo apt-get install dselect
              

              备份包列表

              dpkg --get-selections | grep -v deinstall > ubuntu-files
              

              恢复包选择

              sudo apt-get update
              sudo apt-get dist-upgrade
              dpkg --set-selections < ubuntu-files
              sudo dselect
              

              这将打开一个 dselect 会话。输入“I”并允许 dselect 安装 ubuntu-files 文档中列出的软件包。 完成后,输入“Q”并按 ENTER 键退出 dselect。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2023-01-10
                • 1970-01-01
                • 2015-04-14
                • 2019-12-29
                • 2018-02-02
                • 2014-12-09
                • 1970-01-01
                相关资源
                最近更新 更多