14

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

4

7 回答 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

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

于 2008-10-09T15:19:51.680 回答
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
于 2008-10-09T16:19:55.023 回答
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 位,因此某些软件包可能不兼容。在运行上面的脚本之前,我会为 '64' grep packages.txt 并在需要时找到替代方案。
2)任何你从源代码安装的东西,你都必须记下并再次从源代码安装。

祝你好运!

于 2008-10-09T15:16:20.783 回答
2

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

于 2010-03-15T22:34:30.387 回答
2

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

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

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

于 2010-11-03T22:40:17.273 回答
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

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

于 2014-08-30T13:10:35.363 回答
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。

于 2008-10-09T15:17:56.100 回答