许可证指南

我们只接受使用 Debian 自由软件指南许可证 的配方,或根据 公共域软件的 DFSG 指南 发布到公共域的配方,并放入 homebrew/core

指定许可证

所有许可证都通过 SPDX 许可证列表 中的许可证标识符进行标识。

通过将许可证传递给 license 方法来指定许可证

license "MIT"

公共域可以使用符号表示

license :public_domain

如果无法使用 SPDX 表达式表示配方的许可证

license :cannot_represent

复杂的 SPDX 许可证表达式

一些配方具有需要以不同方式组合的多个许可证。在这些情况下,可以使用更复杂的许可证表达式。这些表达式基于 SPDX 许可证表达式指南

添加 + 以指示用户可以选择同一许可证的更高版本

license "EPL-1.0+"

GNU 许可证(GPLLGPLAGPLGFDL)需要 -only-or-later 后缀来指示是否允许使用更高版本的许可证

license "LGPL-2.1-only"
license "GPL-1.0-or-later"

使用 :any_of 来指示用户可以选择应用哪个许可证

license any_of: ["MIT", "0BSD"]

使用 :all_of 来指示用户必须遵守多个许可证

license all_of: ["MIT", "0BSD"]

使用 :with 来指示许可证例外

license "MIT" => { with: "LLVM-exception" }

可以根据需要嵌套这些表达式

license any_of: [
  "MIT",
  :public_domain,
  { all_of: ["0BSD", "Zlib", "Artistic-1.0+"],
  "Apache-2.0" => { with: "LLVM-exception" } },
]

指定禁止的许可证

可以设置 HOMEBREW_FORBIDDEN_LICENSES 环境变量,以禁止安装需要或具有需要某些许可证的依赖项的配方。

应将 HOMEBREW_FORBIDDEN_LICENSES 设置为以空格分隔的许可证列表。使用 public_domain 禁止安装具有 :public_domain 许可证的配方。

例如,以下内容禁止安装 MITArtistic-1.0:public_domain 许可证

export HOMEBREW_FORBIDDEN_LICENSES="MIT Artistic-1.0 public_domain"

在此示例中,Homebrew 将拒绝安装任何指定 MIT 许可证的配方。Homebrew 还将禁止安装任何声明依赖于指定 MIT 的配方的配方,即使原始配方具有允许的许可证也是如此。

Homebrew 解释复杂的许可证表达式,并确定许可证是否允许安装。继续上面的示例,Homebrew 将不允许安装具有以下许可证声明的配方

license any_of: ["MIT", "Artistic-1.0"]
license all_of: ["MIT", "0BSD"]

Homebrew 允许安装具有以下声明的公式

license any_of: ["MIT", "0BSD"]

HOMEBREW_FORBIDDEN_LICENSES 还可以禁止特定许可证的未来版本。例如,要禁止 Artistic-1.0Artistic-2.0 和任何未来的 Artistic 许可证,请使用

export HOMEBREW_FORBIDDEN_LICENSES="Artistic-1.0+"

对于 GNU 许可证(例如 GPLLGPLAGPLGFDL),请使用 -only-or-later。例如,以下内容将禁止安装 GPL-2.0LGPL-2.1LGPL-3.0 公式,但允许安装 GPL-3.0

export HOMEBREW_FORBIDDEN_LICENSES="GPL-2.0-only LGPL-2.1-or-later"
Fork me on GitHub