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


8

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


任何想建议的人dpkg --get-selections:请记住,系统安装了一组不同的软件包。您需要根据基本系统之后安装的应用程序进行过滤。
奥利(Oli)

1
冻结很可能与内核/ xorg / X驱动程序有关,更改Windows管理器不太可能修复该冻结。
若奥·平托

而且,10.10中的统一比其他任何事情都更“冻结”
Extender

1
如果您不想再次下载,也可以在CD上查看apt
杰里米

Answers:


9

在您现有的安装上运行此怪物12.04i386用架构(i386或amd64)替换您的Ubuntu版本:

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或其他存储库,请确保在运行新PPA或其他存储库之前对其进行设置。


只需使用.manifest-desktop即可。例如。gparted和btrfs-tools不是默认安装的一部分(它们仅在CD上)。如果您手动安装了这些软件包,它们将不会显示在“软件包”中。
htorque

您可能想通过排序对这两个部分进行管道传输,因为“ comm”抱怨这两个文件均未排序。IIUC对于默认安装的软件包应该具有相同的“问题”,这些软件包被手动标记为“手动安装”(我想这将是“ comm”的第三列?)。
htorque 2010年

哪里.manifest-desktop住?我要进行编辑以添加排序。他们看起来很整齐,所以我认为我不必这样做,但似乎没有。接得好。为了公平起见,我使用讨厌的15mm * 100mm小键盘从床上在手机上键入了此帖子。;)
Oli

这是不利的一面-它似乎并没有像.manifest文件那样在线可用。:-/ CD上的“ casper”文件夹中。
htorque 2010年

我四处寻找,找不到最新版本。我认为使用旧版本就像破坏ISO并下载ISO只是提取它一样浪费能源。我认为这只是该过程的一个警告。您可能需要手动安装一些以前安装过的软件包,但这将完成大多数安装。
奥利(Oli)

7

我建议使用oneconf 安装oneconf

它与Software Center很好地集成在一起,并且可以满足您的需求。


oneconf准备好供普通用户使用吗?
Decio Lira 2010年

普通用户可能会使用它,但还不会喜欢它。在这种情况下,需要很多的爱。尽管如此,它还是有用的。
Chipaca

6

我认为其他人已经回答了您的技术问题,我想回答一个隐含的问题-“将转向Unity来解决此ssh问题”,答案是我很怀疑。远程Shell会话通常不行使Unity或桌面功能。如果您可以通过有线网络而不是临时网络将其插入桌面,则冻结可能与您的无线驱动程序有关,而与桌面外壳无关。


我第二个理由是-由于上网本和台式机版本几乎使用所有相同的驱动程序/软件包,因此重新安装不太可能解决任何问题。更好地诊断网络问题。
ImaginaryRobots,2010年

马克,是的,这似乎是驱动程序问题。但是在极少数情况下,它也发生在有线网络上。我应该同时关闭两个卡并尝试。
nixnotwin 2010年

1

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

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


1
这将使当前自动安装的软件包手动安装在新系统上吗?
奥利(Oli)

看起来我的“ add.txt”包含与“ packages”相同的软件包,所以我想没有。但是,如果您在当前系统上执行此操作,则无法将软件包从安装设置为“手动安装”。
htorque 2010年

2
我窃取了您的重新安装方法,但是您应该注意,如果有很多参数,xargs可以将事情分解为多个命令。如果下载第一批和第二批之间有多少时间,sudo可能会过期。这就是为什么我把我的包裹在一个sudo bash -c "..."
奥利(Oli)

嘿,实际上我认为您的安装模式更好,因为dselect会显式显示无法安装的软件包(未知的PPA,第三方.debs),因此您可以取消标记它们。有了apt,便全有或全无。
htorque 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.