有没有什么软件可以帮助我在全新安装后重新安装软件

Off*_*ics 19 linux software-installation

我时不时地需要重新安装 Linux 系统(主要是基于 Ubuntu 的发行版)。重新安装我需要的每一个软件的过程真的很无聊而且很耗时。有什么软件可以帮助我吗?Windows 有 Ninite,Linux 有其他东西吗?

编辑:感谢所有的答案!我选择了 Ansible,它是一个了不起的工具。

Mar*_*rad 41

保存和恢复所有包

在基于 Debian/Ubuntu 的系统上,您可以将已安装的软件包列表转储到文件中

dpkg --get-selections > my_package_list.txt
Run Code Online (Sandbox Code Playgroud)

并通过运行再次安装它们

apt-cache dumpavail | sudo dpkg --merge-avail
sudo dpkg --set-selections < my_package_list.txt
sudo apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)

第一行确保dpkg的数据库是最新的(现在大多数人使用apt安装维护自己数据库的软件包),第二行导入您保存的选择,第三个命令安装选定的软件包。有关详细信息,请参阅Debian 管理员手册

如果您已经安装了来自第三方存储库的软件包,您需要在执行上述恢复步骤之前添加这些存储库。

仅保存和恢复明确安装的软件包

Aptitude 会自动安装依赖项(例如应用程序所需的库)。这些包被标记为“自动”,可以在不再需要时自动删除。如果您想保留这些“自动”标志,我们将无法使用,dpkg因为它不会跟踪自动安装的软件包。相反,我们必须使用稍微更神秘的

LC_ALL=C aptitude search -F '%p %C' '~i!~M' > my_package_list.txt
Run Code Online (Sandbox Code Playgroud)

这将搜索所有已安装 ( ~i) 而非 ( !) 标记为自动 ( ~M) 的软件包。对于每个匹配的包,包名称 ( %p) 和状态 ( %C) 将被打印出来(这模仿了 的输出dpkg --get-selections)。LC_ALL=C确保所有输出均以英语完成,无需翻译成母语。使用上面提到的命令安装此列表中的软件包。有关详细信息,请参阅aptitude 用户手册


Ale*_*ies 10

Ansible 是一种开源软件供应、配置管理和应用程序部署工具。它可以在许多类 Unix 系统上运行,并且可以配置类 Unix 系统以及 Microsoft Windows。它包括自己的声明性语言来描述系统配置

(来自维基百科。)主页(Github)

同一类别中还有其他几个。阅读应该会给你提供搜索其他词汇的词汇,并在需要时进行比较。Nix是一个较新的竞争者。有人说“更复杂,但也许恰到好处。”。也在现场。

主机名myhost、模块的Ansible 示例apt(替换为yum或其他):

ansible -K -i myhost, -m apt -a "name=tcpdump,tmux state=present" --become myhost
Run Code Online (Sandbox Code Playgroud)

列表“tcpdump,tmux”可以用逗号扩展。(事实上​​,主机名myhost在命令行中出现了两次,因为我们使用的不是固定的主机清单列表,而是带有尾随逗号的临时清单。)

这只是触及皮毛,Ansible 拥有广泛的模块集合

  • Ansible 之于 Nix,就像 Bash 之于 Haskell。如果你有时间和精力来学习 Nix,它在几个方面都远远优于 Ansible:重现性,实际上是声明性的,而不仅仅是 shell 命令之上的一个薄层,隔离版本(因此你可以安装例如两个版本的系统同时使用 Bash 或 Python 等软件)。Nix 的学习时间与 Ansible 大致相同,但更抽象,限制和惊喜更少(这是在使用 Ansible 两年和 Nix 大约三个月之后)。 (4认同)
  • @l0b0:Nix 很棒,但除非它的内容发生了巨大变化,否则它与使用发行版软件包无关,也不是 ansible 的替代品或竞争对手。相反,它是整个 Debian(和其他发行版)软件包系统的替代品。 (2认同)