如果 Linux 发行版的应用程序集有所不同,那么是否可以通过简单地将某个发行版的应用程序复制到目标发行版来将一个 Linux 发行版转换为另一个发行版?
例如,如果我将Ubuntu的应用程序复制并粘贴到Kali,这会让Kali变成Ubuntu,反之亦然,等等?
答案1
如果我理解你的问题的话,那就是不是可能的。你拥有的最接近的东西是基岩Linux,它允许您进行混合搭配。很明显,你作为Linux用户的经验不足(并不是说我是高手),所以不推荐你使用Bedrock。
造成这种情况的主要原因是包管理器:“每个”Linux 发行版都使用自己的包管理器。例如,基于 Red Hat 的发行版(Fedora、RHEL、CentOS)使用yum
,dnf
基于 Debian(很多;一个很好的例子是 Ubuntu)使用apt
,等等。
简单来说:应用程序依赖于库。这些应用程序使用库来显示按钮等。他们不是将代码写入应用程序以包含按钮,而是使用库提供的函数。这意味着应用程序依赖于这些库 - 有些库又依赖于其他库 - 并且应用程序对库中的更改非常敏感;库中的一个小变化可能会扰乱整个应用程序。
他们试图通过交付带有库/依赖项的应用程序来解决这个问题。Flatpaks 和 Snaps 就是这样的例子,其中应用程序可以跨发行版工作。这样,您无需使用 Fedora 即可使用原本仅存在于 Fedora 上的应用程序来在 Ubuntu 等上运行,反之亦然。
注意:我上面解释的一切都是我是怎么理解的。如果我错了,我会非常乐意向更有经验的用户学习。
话虽这么说,您问这个问题是因为您想在 Ubuntu 或 Kali 上使用一组特定的应用程序吗?在某种程度上可以做到这一点:根据应用程序,您可以使用 Snap 或 Flatpak(如果它们存在于其存储库中)。如果您需要 Snap 或 Flatpak 存储库中没有的应用程序,您可以使用podman
或 之类的工具distrobox
(如果您对容器“陌生”,后者更容易使用),它允许您创建“模仿”特定容器发行版。这样,您可以使用官方存储库从您“模仿”的发行版中提取软件包和依赖项。