从旧安装生成应用程序列表以在新安装上运行它

我想在我的上网本上从ubuntu-desktop 10.10转到ubuntu上网本10.10版。 目前,当我从ad-hoc网络进入ubuntu时,ubuntu会冻结。 它总是需要冷关机。 所以希望上网本版可能没有这个问题。 我在桌面版上自定义安装了许多应用程序。 因此,我希望将应用列表保存到脚本中并在新安装上运行脚本,以便下载并安装所有应用。 我需要有关实现这一目标的最佳方法的建议。

在现有安装上运行此怪物,用体系结构(i386或amd64)替换12.04您的Ubuntu版本和i386

 release_num='12.04' arch='i386' comm -23 \ <(sort <(aptitude search '~i!~E' --disable-columns | grep -v "i A " | cut -d " " -f 3)) \ <(sort <(wget -q -O- http://releases.ubuntu.com/maverick/ubuntu-${release_num}-desktop-${arch}.manifest | grep -E -o '^[^ ]+')) \ | sed 's/$/ install/g' > packages 

它将生成一个名为packages的文件。 将其复制到新安装中的某个位置,然后运行:

 sudo apt-get update sudo bash -c "cat packages | xargs apt-get -y install" 

注意:这会将LiveCD上使用的软件包与当前软件包进行比较。 目前,CD上有一些未安装的软件包(gparted,btrfs-tools等)。 如果您手动安装gparted,则还需要手动在新机器上重新安装。 值得庆幸的是,这只适用于一些软件包,如果/当您意识到需要它们时,所有这些软件包都很容易安装。

此外,如果您使用任何PPA或其他存储库,请确保在运行此计算机之前在新计算机上进行设置。

我建议使用oneconf 安装oneconf

它很好地与软件中心集成,并做你想要的。

我认为其他人已经回答了你的问题的技术部分,我想回答隐含的问题 – “将转向Unity修复这个ssh问题”,答案是我害怕我怀疑它。 远程shell会话通常不会运行Unity或桌面。 如果您可以通过有线网络而不是ad-hoc网络轻松地进入桌面,则冻结可能与您的无线驱动程序有关,而与桌面shell无关。

在CD上的“casper”文件夹中有一个名为“filesystem.manifest-desktop”的文件(或从ISO文件中提取)。 它包含安装的所有软件包,减去安装期间下载的软件包(更新,langpacks?)。

所以这样的东西应该给你添加和删除包的列表:

 dpkg --get-selections | awk '{print $1}' > now.txt awk '{print $1}' filesystem.manifest-desktop > then.txt diff -u then.txt now.txt | grep '^+' | sed 's/^+//' | grep -v '^+' > add.txt diff -u then.txt now.txt | grep '^-' | sed 's/^-//' | grep -v '^-' > rem.txt 

然后你可以安装:

cat added.log | xargs sudo apt-get install

(您需要确保所有这些包都可用,否则该命令将失败。)

  • 来自ubuntu-10.10-desktop-i386.iso的filesystem.manifest-desktop
  • 来自ubuntu-10.10-desktop-amd64.iso的filesystem.manifest-desktop