在将Ubuntu迁移到其他平台时,如何保留已安装的应用程序?

时间:2008-10-09 14:57:09

标签: ubuntu migrate apt dpkg

我正在考虑将旧版AMD64转换为32位新的英特尔双核。安装不是问题,但我可以转移所有已安装的应用程序吗?我没去过 能够在谷歌上找到任何东西,除非迁移到类似的平台和文件系统。我不会改变文件系统,但平台会有所不同。 Gentoo中的“World”文件有什么内容吗?

7 个答案:

答案 0 :(得分:34)

您可以轻松保存您的包列表:请参阅“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,那么该选择将被忽略。

答案 1 :(得分:4)

有趣的是,我在这里使用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

答案 2 :(得分:2)

对于您使用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位,因此某些软件包可能不兼容。在运行上面的脚本之前,我会将packages.txt grep为'64',如果需要,我会找到替代品 2)您从源代码安装的任何内容,您必须再次记录并从源代码安装。

祝你好运!

答案 3 :(得分:2)

如果(像我一样)在你弄乱你的系统之前你没有这样做,你可以启动到live-cd或其他安装,并使用chroot来获取这些信息。

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

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

答案 4 :(得分:2)

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

此问题的其他答案还有两个补充,这也会移动您的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

将config目录复制到新闻系统(“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(如上所述)的备份备份到远程存储。因此,如果您的笔记本电脑坏了/被盗,建立一个类似的系统非常快。

答案 5 :(得分:1)

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

安装工具

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”并允许选择 安装ubuntu-files文件中列出的软件包。 完成后,键入“Q”并按ENTER键退出dselect。

答案 6 :(得分:1)

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

相关问题