三重启动获取不同分区上缺失软件包的列表

三重启动获取不同分区上缺失软件包的列表

背景

我有一个双启动的 Windows 10/Ubuntu 16.04 系统。然后我使用 18.04 对其进行了三重启动。然后我在 Ubuntu 16.04 系统内的 Vitualbox VM 中添加了 Lubuntu 16.04。

在此过程中的某个地方,我迷路了,删除了/usr而不是usr。然后以为18.04是新同步到16.04我复制了这些文件/usr并最终得到了 Frankenstein 16.04/18.04。

所以我创建了一个实时的 USB 16.04.4,并从中复制了/usr目录。幸运的是,我最终得到了一个 16.04.4/16.04.5 混合版本,其中还混入了一些 18.04。

我的apt坏了但dpkg还能用,所以我用它重新安装,apt但它却是不同的版本。

我清除了 18.04 分区并安装了 16.04.5 的新副本。我安装了一些随机应用程序,例如、、、,conky可能dialog还有其他几个。gimpvnstatyad

因为我仍然可以挂载我的旧 16.04 分区,如何获取仍需要安装在我的新 16.04 分区上的软件包列表(不包括库和 Linux 内核)?

答案1

的力量dpkgdiffgrep

我的回答基于以下问答:设置两台机器上安装的软件包的差异. 不同之处在于:

  • 有两个不同的分区,而不是两个不同的服务器
  • apt在我的旧 16.04 分区中损坏了,因此dpkg改用

我挂载了旧的 16.04 分区/mnt/old并输入了以下内容:

/mnt/old$ dpkg --admindir=var/lib/dpkg --get-selections|sort > ~/installed-old
/mnt/old$ dpkg --admindir=/var/lib/dpkg --get-selections|sort > ~/installed-new
/mnt/old$ diff -u ~/installed-old ~/installed-new > ~/compare-old-new
/mnt/old$ cat ~/compare-old-new | grep '^-' | grep -v -e '^-lib' -e '^-linux' | wc -l
257

因此可能有 257 个包需要重新安装,但其中许多包将由依赖于它们的包自动安装。

清单内容

cat ~/compare-old-new | grep '^-' | grep -v -e '^-lib' -e '^-linux'以下是使用该命令时的列表片段:

-mesa-utils                 install
-mesa-vdpau-drivers:amd64   install
-milou                      install
-mkusb-common               install
-mkusb                      install
-mkusb-nox                  install
-module-init-tools          install
-mutter-common              install
-mutter                     install
-mysql-common               install
-nasm                       install
-nautilus-hide              install
-nautilus-image-converter   install
-ntrack-module-libnl-0      deinstall
-nvidia-384                 deinstall
-nvidia-390                 deinstall
-nvidia-opencl-icd-384      deinstall
-nvidia-opencl-icd-390      deinstall
-nvidia-prime               deinstall
-nvidia-settings            deinstall
-nvme-cli                   install
-ocl-icd-libopencl1:amd64   install
-oracle-java8-installer     install
-oracle-java8-set-default   install
-oxideqt-codecs:amd64       install
-oxygen5-icon-theme         deinstall
-pavucontrol                install
-peek                       install

大部分截图都是为了回答问题而安装的软件包询问 Ubuntu。从此代码片段我只需要重新安装:mesa-utils,,,和。mutternvme-clipavucontrolpeek

带有品牌标识的软件包deinstall可以被忽略:dpkg --get-selections 显示标记为“deinstall”的软件包

相关内容