授權指南

我們只接受使用 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