# 5.8.许可证

每个 Port 必须记录其可用的许可证。如果它不是一个 OSI 批准的许可证，则必须记录任何关于再分发的限制。

## 5.8.1. `LICENSE`

许可证的简短名称，如果有多个许可证适用，则列出所有相关许可证。

如果它是 [预定义许可证列表](https://docs.freebsd.org/en/books/porters-handbook/makefiles/#licenses-license-list) 中列出的许可证，则只能设置 `LICENSE_FILE` 和 `LICENSE_DISTFILES` 变量。

如果这是一个在 ports 框架中尚未定义的许可证（见 [预定义许可证列表](https://docs.freebsd.org/en/books/porters-handbook/makefiles/#licenses-license-list)），则必须设置 `LICENSE_PERMS` 和 `LICENSE_NAME`，并且必须设置 `LICENSE_FILE` 或 `LICENSE_TEXT`。`LICENSE_DISTFILES` 和 `LICENSE_GROUPS` 也可以设置，但不是必需的。

预定义许可证列出在 [预定义许可证列表](https://docs.freebsd.org/en/books/porters-handbook/makefiles/#licenses-license-list) 中。当前列表始终可在 **Mk/bsd.licenses.db.mk** 中找到。

**示例 28. 最简单的用法，预定义许可证**

当某些软件的 **README** 文件中写道“本软件根据自由软件基金会发布的 GNU 较宽松公共许可证（LGPL）条款进行许可；可以选择版本 2.1 或（根据你的选择）任何更高版本。”但没有提供许可证文件时，可以使用以下内容：

```makefile
LICENSE=	LGPL21+
```

当软件提供许可证文件时，使用以下内容：

```makefile
LICENSE=	LGPL21+
LICENSE_FILE=	${WRKSRC}/COPYING
```

对于预定义的许可证，默认权限为 `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept`。

表 7. 预定义许可证列表

| 简短名称              | 名称                                                             | 组别                     | 权限                                   |
| ----------------- | -------------------------------------------------------------- | ---------------------- | ------------------------------------ |
| `AGPLv3`          | GNU Affero General Public License 版本 3                         | `FSF GPL OSI`          | （默认）                                 |
| `AGPLv3+`         | GNU Affero General Public License 版本 3（或更高版本）                  | `FSF GPL OSI`          | （默认）                                 |
| `APACHE10`        | Apache License 1.0                                             | `FSF`                  | （默认）                                 |
| `APACHE11`        | Apache License 1.1                                             | `FSF OSI`              | （默认）                                 |
| `APACHE20`        | Apache License 2.0                                             | `FSF OSI`              | （默认）                                 |
| `ART10`           | Artistic License 版本 1.0                                        | `OSI`                  | （默认）                                 |
| `ART20`           | Artistic License 版本 2.0                                        | `FSF GPL OSI`          | （默认）                                 |
| `ARTPERL10`       | Artistic License (perl) 版本 1.0                                 | `OSI`                  | （默认）                                 |
| `BSD`             | BSD 许可证通用版本（已弃用）                                               | `FSF OSI COPYFREE`     | （默认）                                 |
| `BSD2CLAUSE`      | BSD 2-clause“简化版”许可证                                           | `FSF OSI COPYFREE`     | （默认）                                 |
| `BSD3CLAUSE`      | BSD 3-clause“新”或“修订版”许可证                                       | `FSF OSI COPYFREE`     | （默认）                                 |
| `BSD4CLAUSE`      | BSD 4-clause“原始”或“旧版”许可证                                       | `FSF`                  | （默认）                                 |
| `BSL`             | Boost 软件许可证                                                    | `FSF OSI COPYFREE`     | （默认）                                 |
| `CC-BY-1.0`       | Creative Commons Attribution 1.0                               |                        | （默认）                                 |
| `CC-BY-2.0`       | Creative Commons Attribution 2.0                               |                        | （默认）                                 |
| `CC-BY-2.5`       | Creative Commons Attribution 2.5                               |                        | （默认）                                 |
| `CC-BY-3.0`       | Creative Commons Attribution 3.0                               |                        | （默认）                                 |
| `CC-BY-4.0`       | Creative Commons Attribution 4.0                               |                        | （默认）                                 |
| `CC-BY-NC-1.0`    | Creative Commons Attribution Non Commercial 1.0                |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-2.0`    | Creative Commons Attribution Non Commercial 2.0                |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-2.5`    | Creative Commons Attribution Non Commercial 2.5                |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-3.0`    | Creative Commons Attribution Non Commercial 3.0                |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-4.0`    | Creative Commons Attribution Non Commercial 4.0                |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-ND-1.0` | Creative Commons Attribution Non Commercial No Derivatives 1.0 |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-ND-2.0` | Creative Commons Attribution Non Commercial No Derivatives 2.0 |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-ND-2.5` | Creative Commons Attribution Non Commercial No Derivatives 2.5 |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-ND-3.0` | Creative Commons Attribution Non Commercial No Derivatives 3.0 |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-ND-4.0` | Creative Commons Attribution Non Commercial No Derivatives 4.0 |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-SA-1.0` | Creative Commons Attribution Non Commercial Share Alike 1.0    |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-SA-2.0` | Creative Commons Attribution Non Commercial Share Alike 2.0    |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-SA-2.5` | Creative Commons Attribution Non Commercial Share Alike 2.5    |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-SA-3.0` | Creative Commons Attribution Non Commercial Share Alike 3.0    |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-NC-SA-4.0` | Creative Commons Attribution Non Commercial Share Alike 4.0    |                        | `dist-mirror pkg-mirror auto-accept` |
| `CC-BY-ND-1.0`    | Creative Commons Attribution No Derivatives 1.0                |                        | （默认）                                 |
| `CC-BY-ND-2.0`    | Creative Commons Attribution No Derivatives 2.0                |                        | （默认）                                 |
| `CC-BY-ND-2.5`    | Creative Commons Attribution No Derivatives 2.5                |                        | （默认）                                 |
| `CC-BY-ND-3.0`    | Creative Commons Attribution No Derivatives 3.0                |                        | （默认）                                 |
| `CC-BY-ND-4.0`    | Creative Commons Attribution No Derivatives 4.0                |                        | （默认）                                 |
| `CC-BY-SA-1.0`    | Creative Commons Attribution Share Alike 1.0                   |                        | （默认）                                 |
| `CC-BY-SA-2.0`    | Creative Commons Attribution Share Alike 2.0                   |                        | （默认）                                 |
| `CC-BY-SA-2.5`    | Creative Commons Attribution Share Alike 2.5                   |                        | （默认）                                 |
| `CC-BY-SA-3.0`    | Creative Commons Attribution 署名 - 相同方式共享 3.0                   |                        | (默认)                                 |
| `CC-BY-SA-4.0`    | Creative Commons Attribution 署名 - 相同方式共享 4.0                   |                        | (默认)                                 |
| `CC0-1.0`         | Creative Commons Attribution 零版权 1.0 通用                        | `FSF GPL COPYFREE`     | (默认)                                 |
| `CDDL`            | 通用开发与分发许可证                                                     | `FSF OSI`              | (默认)                                 |
| `CPAL-1.0`        | 通用公共署名许可证                                                      | `FSF OSI`              | (默认)                                 |
| `ClArtistic`      | 明确艺术许可证                                                        | `FSF GPL OSI`          | (默认)                                 |
| `EPL`             | Eclipse 公共许可证                                                  | `FSF OSI`              | (默认)                                 |
| `GFDL`            | GNU 自由文档许可证                                                    | `FSF`                  | (默认)                                 |
| `GMGPL`           | GNAT 修改版通用公共许可证                                                | `FSF GPL OSI`          | (默认)                                 |
| `GPLv1`           | GNU 通用公共许可证版本 1                                                | `FSF GPL OSI`          | (默认)                                 |
| `GPLv1+`          | GNU 通用公共许可证版本 1（或更高版本）                                         | `FSF GPL OSI`          | (默认)                                 |
| `GPLv2`           | GNU 通用公共许可证版本 2                                                | `FSF GPL OSI`          | (默认)                                 |
| `GPLv2+`          | GNU 通用公共许可证版本 2（或更高版本）                                         | `FSF GPL OSI`          | (默认)                                 |
| `GPLv3`           | GNU 通用公共许可证版本 3                                                | `FSF GPL OSI`          | (默认)                                 |
| `GPLv3+`          | GNU 通用公共许可证版本 3（或更高版本）                                         | `FSF GPL OSI`          | (默认)                                 |
| `GPLv3RLE`        | GNU GPL 版本 3 运行时库例外                                            | `FSF GPL OSI`          | (默认)                                 |
| `GPLv3RLE+`       | GNU GPL 版本 3 运行时库例外（或更高版本）                                     | `FSF GPL OSI`          | (默认)                                 |
| `ISCL`            | 网络系统联盟许可证                                                      | `FSF GPL OSI COPYFREE` | (默认)                                 |
| `LGPL20`          | GNU 库通用公共许可证版本 2.0                                             | `FSF GPL OSI`          | (默认)                                 |
| `LGPL20+`         | GNU 库通用公共许可证版本 2.0（或更高版本）                                      | `FSF GPL OSI`          | (默认)                                 |
| `LGPL21`          | GNU 较小型公共许可证版本 2.1                                             | `FSF GPL OSI`          | (默认)                                 |
| `LGPL21+`         | GNU 较小型公共许可证版本 2.1（或更高版本）                                      | `FSF GPL OSI`          | (默认)                                 |
| `LGPL3`           | GNU 较小型公共许可证版本 3                                               | `FSF GPL OSI`          | (默认)                                 |
| `LGPL3+`          | GNU 较小型公共许可证版本 3（或更高版本）                                        | `FSF GPL OSI`          | (默认)                                 |
| `LPPL10`          | LaTeX 项目公共许可证版本 1.0                                            | `FSF OSI`              | `dist-mirror dist-sell`              |
| `LPPL11`          | LaTeX 项目公共许可证版本 1.1                                            | `FSF OSI`              | `dist-mirror dist-sell`              |
| `LPPL12`          | LaTeX 项目公共许可证版本 1.2                                            | `FSF OSI`              | `dist-mirror dist-sell`              |
| `LPPL13`          | LaTeX 项目公共许可证版本 1.3                                            | `FSF OSI`              | `dist-mirror dist-sell`              |
| `LPPL13a`         | LaTeX 项目公共许可证版本 1.3a                                           | `FSF OSI`              | `dist-mirror dist-sell`              |
| `LPPL13b`         | LaTeX 项目公共许可证版本 1.3b                                           | `FSF OSI`              | `dist-mirror dist-sell`              |
| `LPPL13c`         | LaTeX 项目公共许可证版本 1.3c                                           | `FSF OSI`              | `dist-mirror dist-sell`              |
| `MIT`             | MIT 许可证 / X11 许可证                                              | `COPYFREE FSF GPL OSI` | (默认)                                 |
| `MPL10`           | Mozilla 公共许可证版本 1.0                                            | `FSF OSI`              | (默认)                                 |
| `MPL11`           | Mozilla 公共许可证版本 1.1                                            | `FSF OSI`              | (默认)                                 |
| `MPL20`           | Mozilla 公共许可证版本 2.0                                            | `FSF OSI`              | (默认)                                 |
| `NCSA`            | 伊利诺伊大学/NCSA 开源许可证                                              | `COPYFREE FSF GPL OSI` | (默认)                                 |
| `NONE`            | 未指定许可证                                                         |                        | `none`                               |
| `OFL10`           | SIL 开源字体许可证版本 1.0 (<https://scripts.sil.org/OFL/>)             | `FONTS`                | (默认)                                 |
| `OFL11`           | SIL 开源字体许可证版本 1.1 (<https://scripts.sil.org/OFL/>)             | `FONTS`                | (默认)                                 |
| `OWL`             | Open Works 许可证 (owl.apotheon.org)                              | `COPYFREE`             | (默认)                                 |
| `OpenSSL`         | OpenSSL 许可证                                                    | `FSF`                  | (默认)                                 |
| `PD`              | 公有领域                                                           | `GPL COPYFREE`         | (默认)                                 |
| `PHP202`          | PHP 许可证版本 2.02                                                 | `FSF OSI`              | (默认)                                 |
| `PHP30`           | PHP 许可证版本 3.0                                                  | `FSF OSI`              | (默认)                                 |
| `PHP301`          | PHP 许可证版本 3.01                                                 | `FSF OSI`              | (默认)                                 |
| `PSFL`            | Python 软件基金会许可证                                                | `FSF GPL OSI`          | (默认)                                 |
| `PostgreSQL`      | PostgreSQL 许可证                                                 | `FSF GPL OSI COPYFREE` | (默认)                                 |
| `RUBY`            | Ruby 许可证                                                       | `FSF`                  | (默认)                                 |
| `UNLICENSE`       | The Unlicense                                                  | `COPYFREE FSF GPL`     | (默认)                                 |
| `WTFPL`           | 随心所欲公共许可证版本 2                                                  | `GPL FSF COPYFREE`     | (默认)                                 |
| `WTFPL1`          | 随心所欲公共许可证版本 1                                                  | `GPL FSF COPYFREE`     | (默认)                                 |
| `ZLIB`            | zlib 许可证                                                       | `GPL FSF OSI`          | (默认)                                 |
| `ZPL21`           | Zope 公共许可证版本 2.1                                               | `GPL OSI`              | (默认)                                 |

## 5.8.2. `LICENSE_PERMS` 和 `LICENSE_PERMS_NAME_`

权限。如果为空，使用 `none`。

许可证权限列表

`dist-mirror` 允许分发发行文件。发行文件将添加到 FreeBSD `MASTER_SITE_BACKUP` CDN。

`no-dist-mirror` 禁止分发发行文件。这等同于设置 [`RESTRICTED`](https://docs.freebsd.org/en/books/porters-handbook/special/#porting-restrictions-restricted)。发行文件将 *不会* 添加到 FreeBSD `MASTER_SITE_BACKUP` CDN。

`dist-sell` 允许出售发行文件。发行文件将出现在安装映像中。

`no-dist-sell` 禁止出售发行文件。这等同于设置 [`NO_CDROM`](https://docs.freebsd.org/en/books/porters-handbook/special/#porting-restrictions-no_cdrom)。

`pkg-mirror` 允许自由分发软件包。该软件包将分发到 FreeBSD 软件包 CDN <https://pkg.freebsd.org/>。

`no-pkg-mirror` 禁止自由分发软件包。等同于设置 [`NO_PACKAGE`](https://docs.freebsd.org/en/books/porters-handbook/special/#porting-restrictions-no_package)。该软件包将 *不会* 从 FreeBSD 软件包 CDN <https://pkg.freebsd.org/> 分发。

`pkg-sell` 允许出售软件包。该软件包将出现在安装映像中。

`no-pkg-sell` 禁止出售软件包。这等同于设置 [`NO_CDROM`](https://docs.freebsd.org/en/books/porters-handbook/special/#porting-restrictions-no_cdrom)。该软件包将 *不会* 出现在安装映像中。

`auto-accept` 默认接受许可证。除非用户定义了 `LICENSES_ASK`，否则不会显示接受许可证的提示。如果许可证声明用户必须接受许可证条款，请使用此选项。

`no-auto-accept` 默认不接受许可证。用户将始终被要求确认接受此许可证。如果许可证声明用户必须接受其条款，则必须使用此选项。

当同时存在 `permission` 和 `no-permission` 时，`no-permission` 将取消 `permission`。

当 `permission` 未出现时，视为 `no-permission`。

> **警告**
>
> 某些缺失的权限会导致一个 Port（以及所有依赖于它的 Port）无法通过包管理器使用：
>
> 没有 `auto-accept` 权限的 Port 将永远不会被构建，所有依赖于它的 Port 将被忽略。
>
> 没有 `pkg-mirror` 权限的 Port（以及任何依赖于它的 Port）将在构建后被删除，确保它们不会被分发。

**示例 29. 非标准许可证**

阅读许可证条款，并使用可用权限进行翻译。

```makefile
LICENSE=        UNKNOWN
LICENSE_NAME=   unknown
LICENSE_TEXT=   This program is NOT in public domain.\
                It can be freely distributed for non-commercial purposes only.
LICENSE_PERMS=  dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept
```

示例 30. 标准和非标准许可证

阅读许可证条款，并使用可用权限进行表达。如果有疑问，请在 [FreeBSD Ports 邮件列表](https://lists.freebsd.org/subscription/freebsd-ports) 上请求指导。

```makefile
LICENSE=        WARSOW GPLv2
LICENSE_COMB=   multi
LICENSE_NAME_WARSOW=    Warsow Content License
LICENSE_FILE_WARSOW=    ${WRKSRC}/docs/license.txt
LICENSE_PERMS_WARSOW=   dist-mirror pkg-mirror auto-accept
```

当 GPLv2 和 UNKNOWN 许可证的权限混合时，Port 最终会包含 `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept`。`no-permissions` 会取消 *permissions*。最终的权限列表是 *dist-mirror pkg-mirror auto-accept*。发行文件和软件包将不会出现在安装映像中。

## 5.8.3. `LICENSE_GROUPS` 和 `LICENSE_GROUPS_NAME`

许可证所属的组。

预定义的许可证组列表

`FSF` Free Software Foundation 批准，见 [FSF Licensing & Compliance Team](https://www.fsf.org/licensing/)。

`GPL` 与 GPL 兼容

`OSI` OSI 批准，见 Open Source Initiative 的 [Open Source Licenses](https://opensource.org/licenses/) 页面。

`COPYFREE` 符合 Copyfree 标准定义，见 [Copyfree Licenses](https://copyfree.org/standard/licenses/) 页面。

`FONTS` 字体许可证

## 5.8.4. `LICENSE_NAME` 和 `LICENSE_NAME_NAME`

许可证的完整名称。

**示例 31. `LICENSE_NAME`**

```makefile
LICENSE=        UNRAR
LICENSE_NAME=   UnRAR License
LICENSE_FILE=   ${WRKSRC}/license.txt
LICENSE_PERMS=  dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
```

## 5.8.5. `LICENSE_FILE` 和 `LICENSE_FILE_NAME`

包含许可证文本的文件的完整路径，通常是 **${WRKSRC}/some/file**。如果文件不在分发包中，且其内容太长，无法放在 [`LICENSE_TEXT`](https://docs.freebsd.org/en/books/porters-handbook/makefiles/#licenses-license_text) 中，请将其放入 **${FILESDIR}** 中的新文件。

**示例 32. `LICENSE_FILE`**

```makefile
LICENSE=	GPLv3+
LICENSE_FILE=	${WRKSRC}/COPYING
```

## 5.8.6. `LICENSE_TEXT` 和 `LICENSE_TEXT_NAME`

作为许可证使用的文本。当许可证不在分发文件中且文本较短时很有用。

**示例 33. `LICENSE_TEXT`**

```makefile
LICENSE=        UNKNOWN
LICENSE_NAME=   unknown
LICENSE_TEXT=   This program is NOT in public domain.\
                It can be freely distributed for non-commercial purposes only,\
                and THERE IS NO WARRANTY FOR THIS PROGRAM.
LICENSE_PERMS=  dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept
```

## 5.8.7. `LICENSE_DISTFILES` 和 `LICENSE_DISTFILES_NAME`

适用于的分发文件。默认为所有分发文件。

**示例 34. `LICENSE_DISTFILES`**

当分发文件并非全部适用同一许可证时使用。例如，一个文件有代码许可证，另一个文件包含不能重新分发的艺术作品：

```makefile
MASTER_SITES=   SF/some-game
DISTFILES=      ${DISTNAME}${EXTRACT_SUFX} artwork.zip

LICENSE=        BSD3CLAUSE ARTWORK
LICENSE_COMB=   dual
LICENSE_NAME_ARTWORK=      The game artwork license
LICENSE_TEXT_ARTWORK=      The README says that the files cannot be redistributed
LICENSE_PERMS_ARTWORK=     pkg-mirror pkg-sell auto-accept
LICENSE_DISTFILES_BSD3CLAUSE=   ${DISTNAME}${EXTRACT_SUFX}
LICENSE_DISTFILES_ARTWORK= artwork.zip
```

## 5.8.8. `LICENSE_COMB`

如果所有许可证都适用，则设置为 `multi`。如果任意许可证适用，则设置为 `dual`。默认为 `single`。

**示例 35. 双重许可证**

当一个 Port 显示“此软件可以根据 GNU 通用公共许可证或艺术许可证进行分发”时，表示可以使用其中任何一个许可证。使用如下设置：

```makefile
LICENSE=	ART10 GPLv1
LICENSE_COMB=   dual
```

如果提供了许可证文件，请使用如下设置：

```makefile
LICENSE=	ART10 GPLv1
LICENSE_COMB=   dual
LICENSE_FILE_ART10=     ${WRKSRC}/Artistic
LICENSE_FILE_GPLv1=     ${WRKSRC}/Copying
```

**示例 36. 多个许可证**

当一个 Port 的一部分使用一个许可证，而另一部分使用不同的许可证时，使用 `multi`：

```makefile
LICENSE=	GPLv2 LGPL21+
LICENSE_COMB=	multi
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://porters-handbook.bsdcn.org/di-5-zhang-pei-zhi-makefile/5.8.-xu-ke-zheng.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
