如何从不同发行版的列表中安装软件包?

如何从不同发行版的列表中安装软件包?

我想至少在 Manjaro 和 Ubuntu 中安装一个软件包列表,pkglist.txt尽管如果有一种方法可以在所有发行版上安装那就更好了。我怎样才能做到这一点?

我想到过类似的事情:

# If on Manjaro:
yay -S --no-confirm --needed - < pkglist.txt
# Else if on Ubuntu:
xargs sudo apt install < pkglist.txt

问题是我收到了一堆Unable to locate package错误。我可以从文件中一一安装软件包并忽略错误。

答案1

这基本上可以归结为“不同的发行版是不同的”:一般来说这是不可能的。您需要维护两个发行版的包名称列表。

有一些技巧可以实现自动化:

  • 大多数发行版允许您询问软件包存储库哪些软件包提供了特定文件 - 例如,如果您知道该东西将被调用/usr/bin/oocalc,您可以使用在 debian、ubuntu 等上查找软件包,在 Fedora/RHEL 上apt-file search /usr/bin/oocalc也是如此 - dnf repoquery --whatprovidesoids,我确信 Arch/Manjaro 有类似的工具。不过,这一切很快就会崩溃,因为不同的发行版可以将文件放在不同的位置。例如,某些发行版使用体系结构前缀。此外,可能有多个包提供相同的文件。 (例如,同一程序的不同版本,或社区与上游包等;有关示例,请参阅 mariadb/mysql)
  • 您当然可以尝试从包名称自动猜测并模糊匹配最佳可能的包。祝你好运!通常你不会获得 100% 的成功率
  • 由于这听起来像是您想要自动设置机器,也许只使用其他人维护的 ansible 角色(因此,其他人维护“安装此软件的软件包是什么?”列表)就可以同时解决多个问题。

相关内容