当我将Ubuntu迁移到另一个平台时,如何保留已安装的应用程序?

14

我正在考虑从旧的 AMD64 转移到一款新的 Intel 双核处理器,该处理器是 32 位的。安装不是问题,但我能否转移所有已安装的应用程序?到目前为止,在谷歌上我没有找到任何关于迁移至不同平台和文件系统的信息,只有类似平台和文件系统的迁移信息。我不会更改文件系统,但平台将是不同的。在 Gentoo 中是否有类似 "World" 文件的东西?

7个回答

34

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

基本上,要保存软件包列表:

dpkg --get-selections > package_list

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

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

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


1
需要做的事情: $ sudo apt-get install dselect $ sudo dselect -> 更新 -> 安装 然后执行 sudo apt-get dselect-upgrade - Dror
可能还需要执行 sudo dselect update。如果没有执行此命令,在运行 apt-get dselect-upgrade 时会出现以下错误: dpkg: warning: package not in database at line ... 详见 http://askubuntu.com/questions/727067/package-not-in-database-when-restoring-with-dpkg-set-selections - Bathz

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

如果你(像我一样)在系统出问题之前没有做过这个操作,那么你可以使用live-cd或其他安装介质引导系统,并使用chroot命令来获取此信息。

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

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


2

我不确定这是否是一个答案,但我刚刚发现了aptitude-create-state-bundle命令的存在。没错,就是一个命令。请查看man页面。


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

将配置目录复制到新系统 ("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

此外,您可以使用相同的方法定期备份您的主目录和上面提到的系统选择到远程存储。因此,在笔记本电脑损坏/丢失的情况下,构建类似的系统非常快速。


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)您安装的任何源代码,都需要记录下来并再次从源代码安装。

祝好运!


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接