是否可以配置 `brew` 来从 Debian 存储库安装软件包?

GAD*_*D3R 2 command-line debian brew

我最近brew在我的 Debian 机器上安装了该命令以tldr在我的系统上安装手册页。该命令对于安装未由 Debian 打包的程序很有用,也不需要sudo安装包。但是,有一个限制:通过命令只能安装几个包brew

是否可以配置brew为从 Debian 存储库安装软件包?

Mat*_*ock 6

是否可以?是的。这两个程序都是开源的。方便吗?并不真地。

为什么?

包管理器或多或少是这样工作的:

  • 他们跟踪安装在您系统上的软件包(及其版本)
  • 为此,他们指定自己的包格式(例如 .deb),并使用这些包作为关于如何安装程序和如何跟踪程序的说明
  • 他们还跟踪依赖关系(例如“这个程序需要 openssl 才能工作!”)

这就是为什么拥有一个使用很少包管理器的系统不是最好的主意:

  1. 每个包管理器都必须被告知正在安装的包(例如brew,必须知道您已安装firefox,并且apt必须知道您已安装tldr
  2. 每个包管理器都必须解决其他包管理器的依赖关系(例如“Brew:这个程序需要ncurses,但apt已经安装ncurses,所以我不需要拉它们!”)。

你看,问题2在于包管理器是底层存储库的抽象。像 Debian 人这样的人选择他们希望用户使用的软件包,然后将它们提供给其他人。但是,他们也会选择这些包,以便系统保持一致;他们希望用最少的包来提供最多的功能。为什么要安装 ncurses 版本 1、2 和 3,当您可以使用版本 2 进行所有操作时?

第一个问题也是坏消息。包管理器必须相互通知他们所做的事情,否则他们可能会发生冲突(brew不知道ncurses已经安装了)。

那为什么难呢?

  1. 包管理器需要紧密合作
  2. 包经理必须制定严格的政策,当他们不能就包达成一致时该怎么做
  3. 包管理器必须能够几乎互换工作,唯一可见的区别是可用的程序
  4. 包管理器必须能够在更新时跟踪彼此的存储库。

这实际上意味着您需要一个包含两个包管理器的包管理器。您将需要一个新程序。

那我能做什么?

首先,我会问自己“我为什么要这样做?”。老实说,您的发行版应该为您提供大量软件包。如果您对拥有的软件包数量不满意,您可以考虑切换到具有更多您需要的软件包的其他发行版。

如果您真的很想让它brew工作,我会提出以下解决方案,尽管我不确定这是否完全可能:

  1. 获取brew.
  2. 了解酿造配方格式。
  3. 编写一个程序,自动将食谱转换为 Debian 软件包。
  4. 修改brew以便无论何时运行它,它都会调用程序将配方转换为.deb包/搜索发行版存储库中的程序,然后调用apt以安装此包。

进行这样的修改可能需要很多时间,而且不是一件容易的事情。我建议更改发行版或坚持使用您的包管理器。