我们只接受使用 Debian 自由软件指南许可证 的配方,或根据 公共域软件的 DFSG 指南 发布到公共域的配方,并放入 homebrew/core
。
所有许可证都通过 SPDX 许可证列表 中的许可证标识符进行标识。
通过将许可证传递给 license
方法来指定许可证
license "MIT"
公共域可以使用符号表示
license :public_domain
如果无法使用 SPDX 表达式表示配方的许可证
license :cannot_represent
一些配方具有需要以不同方式组合的多个许可证。在这些情况下,可以使用更复杂的许可证表达式。这些表达式基于 SPDX 许可证表达式指南。
添加 +
以指示用户可以选择同一许可证的更高版本
license "EPL-1.0+"
GNU 许可证(GPL
、LGPL
、AGPL
和 GFDL
)需要 -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
许可证的配方。
例如,以下内容禁止安装 MIT
、Artistic-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.0
、Artistic-2.0
和任何未来的 Artistic 许可证,请使用
export HOMEBREW_FORBIDDEN_LICENSES="Artistic-1.0+"
对于 GNU 许可证(例如 GPL
、LGPL
、AGPL
和 GFDL
),请使用 -only
或 -or-later
。例如,以下内容将禁止安装 GPL-2.0
、LGPL-2.1
和 LGPL-3.0
公式,但允许安装 GPL-3.0
export HOMEBREW_FORBIDDEN_LICENSES="GPL-2.0-only LGPL-2.1-or-later"