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