相关疑难解决方法(0)

通过使用 dpkg --set-selections 导入列表来安装软件包

我已经使用两个运行 Lubutu 的虚拟机对此进行了测试。

首先,我安装了几个程序(VIM 和 cowsay)然后运行:

sudo apt-get update
sudo apt-get upgrade
sudo dpkg --get-selections > /home/klak/my_package_list.txt
Run Code Online (Sandbox Code Playgroud)

这是 my_package_list.txt 的样子

然后我启动到另一个虚拟机,它是 VIM 和 cowsay 安装之前的前一个虚拟机的克隆,并运行以下命令:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install dselect
sudo apt-get dselect update

sudo dpkg --set-selections < ./my_package_list.txt && sudo apt-get -u dselect-upgrade
Run Code Online (Sandbox Code Playgroud)

但是,我现在希望能够加载 VIM 或使用 cowsay,但我得到:

klak@klakBox:/media/share$ vim
The program 'vim' can be found in the following packages:
 * vim
 * vim-gnome
 * vim-tiny
 * vim-athena
 * vim-gtk
 * vim-nox
Try: sudo apt-get …
Run Code Online (Sandbox Code Playgroud)

dpkg apt software-installation

6
推荐指数
1
解决办法
1万
查看次数

如何对 Debian 软件包进行版本特定的备份/恢复?

概括

请注意version-specific问题标题!这个问题不是,如何

  1. 在一台 Debian 主机上,捕获所有已安装软件包的列表。
  2. 在另一台 Debian 主机上,安装列出的软件包的最新版本。

这个问题更确切地说是如何

  1. 在某个时间点的 Debian 主机上,
    1. 捕获包含以下内容的 映射
      • 每个已安装包的名称
      • 当前安装的每个软件包的版本
    2. ... 所需的任何附加数据
  2. 稍后在同一主机上恢复包映射,以便随后
    1. 仅安装包映射中的包
    2. 对于地图中的每个包,仅安装适当的版本

细节

动机

最近,我对我的一个 Debian 机器进行了一次“大更新”(即涉及大量软件包或内核等主要软件包,或两者兼而有之),但它没有“干净地”更新(即没有重大问题)。将来,当我对 Debian 机器应用错误更新时,我希望能够将(a)同一机器上设置的软件包(b)回滚到以前的版本。(之前没有进行图像备份,这很慢。)不幸的是我不知道该怎么做。我知道如何

  1. 在一个 Debian 机器上,捕获其已安装软件包集中的每个软件包名称的列表。
  2. 在另一个框中,安装列表中每个软件包的最新版本。

感谢许多讨论如何做到这一点的网页,包括几个 SE。大多数(包括这个这个这个)都会或多或少地进行复杂的变化

  1. 备份: dpkg --get-selections > ${PACKAGE_LIST_FILEPATH}
  2. 恢复: dpkg --set-selections < ${PACKAGE_LIST_FILEPATH}

可能是关于这个主题的最全面的(也是最脚本化的,我更喜欢的)SE 是这个:它是少数几个推荐备份存储库列表(使用cp -R /etc/apt/sources.list*)和存储库密钥(使用apt-key exportall)的 SE 之一,但它也使用dpkg上面的方法。此 SE建议使用aptitude …

backup debian package-management restore

5
推荐指数
1
解决办法
2355
查看次数