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

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

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

答案1

在您现有的安装上运行这个怪物,用架构(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 或其他存储库,请确保在运行此程序之前在新机器上设置它们。

答案2

我建议使用一个会议 安装 oneconf

它与软件中心集成得很好,可以满足您的要求。

答案3

我认为其他人已经回答了你问题的技术部分,我想回答隐含的问题 - “迁移到 Unity 是否会解决这个 ssh 问题”,答案是,恐怕我对此表示怀疑。远程 shell 会话通常不会使用 Unity 或桌面。如果你可以从有线网络顺利 ssh 进入桌面,但不能从临时网络进入,那么冻结可能与你的无线驱动程序有关,而不是桌面 shell。

答案4

CD 上的“casper”文件夹中有一个名为“filesystem.manifest-desktop”的文件(或从 ISO 文件中提取)。它包含所有要安装的软件包,但不包括安装过程中下载的软件包(更新、语言包?)。

因此像这样的内容应该会给你添加和删除的软件包的列表:

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

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

相关内容