For the complete documentation index, see llms.txt. This page is also available as Markdown.

第 17 章 使用 USES 宏

17.1. USES 的介绍

USES 宏简化了声明 Ports 依赖和设置的过程。它们可以添加依赖关系、修改构建行为、向包添加元数据等,所有这些都通过选择简单的预设值来完成。

本章的每个部分都描述了 USES 的一个可能值及其可能的参数。参数在值后通过冒号(:)附加。多个参数之间用逗号(,)分隔。

示例 1. 使用多个值

USES=	bison perl

示例 2. 添加一个参数

USES=	tar:xz

示例 3. 添加多个参数

USES=	drupal:7,theme

示例 4. 综合使用

USES=	pgsql:9.3+ cpe python:2.7,build

17.2. 7z

可能的参数:(无),p7zippartial

使用 7z(1) 代替 bsdtar(1) 提取文件,并将 EXTRACT_SUFX 设置为 .7z。如果基本系统中的 7z 无法提取文件,p7zip 选项会强制依赖于来自 archivers/p7zip7z。如果使用 partial 选项,则 EXTRACT_SUFX 不会改变,这对于主分发文件没有 .7z 扩展名时非常有用。

17.3. ada

可能的参数:(无),612(run)

依赖一个支持 Ada 的编译器,并相应地设置 CC。默认使用来自 Ports 的 gcc6-aux

17.4. angr

可能的参数:binariesnose

为需要 angrinary 分析平台 的 Ports 提供支持。

如果存在 binaries 参数,则该 Port 需要特殊的 angr 二进制文件进行测试。

如果存在 nose 参数,则该 Port 使用 nosetests 作为测试目标。该参数隐式地意味着 USES=python:test

该框架提供以下变量供 Port 设置:

ANGR_VERSIONangr 项目程序的版本。

ANGR_BINARIES_TAGNAMEangr 二进制文件的标签名。

ANGR_NOSETESTSnosetests 程序的路径。

17.5. ansible

可能的参数:envmoduleplugin

为依赖 sysutils/ansible 的 Ports 提供支持。

如果存在 env 参数,则该 Port 不依赖 sysutils/ansible,但需要设置一些 Ansible 变量。

如果存在 module 参数,则该 Port 是一个 Ansible 模块。

如果存在 plugin 参数,则该 Port 是一个 Ansible 插件。

该框架向 Port 暴露以下变量:

ANSIBLE_CMD:ansible 程序的路径。

ANSIBLE_DOC_CMD:ansible-doc 程序的路径。

ANSIBLE_RUN_DEPENDS:与 Ansible 相关的 RUN_DEPENDS

ANSIBLE_DATADIR:Ansible 模块和插件所在的目录结构的根路径。

ANSIBLE_ETCDIR:Ansible 配置文件目录的路径。

ANSIBLE_PLUGINS_PREFIX${ANSIBLE_DATADIR} 中 "plugins" 目录的路径。

ANSIBLE_MODULESDIR:本地 Ansible 模块的目录路径。

ANSIBLE_PLUGINSDIR:本地 Ansible 插件的目录路径。

ANSIBLE_PLUGIN_TYPE:Ansible 插件类型(例如,“connection”,“inventory”或“vars”)。

17.6. apache

可能的参数:(无),2.4buildrunserver

为依赖 Apache Web 服务器的 Ports 提供支持。

版本参数可用于要求特定版本的 Apache httpd。可以设置特定版本(USES=apache:2.4),最低版本(USES=apache:2.4+)或最高版本(USES=apache:-2.4)。

如果提供 build 参数,则会将构建依赖项添加到 Port。

如果提供 run 参数,则会将运行时依赖项添加到 Port。

如果提供 server 参数,则表示该 Port 是一个服务器 Port。

该框架提供以下变量供 Port 设置:

AP_FAST_BUILD:自动模块构建。

AP_GENPLIST:自动生成 PLIST,并将禁用的模块添加到 httpd.conf 中(仅在没有 pkg-plist 文件时)。

MODULENAME:Apache 模块的名称。默认值:${PORTNAME}

SHORTMODNAME:Apache 模块的简短名称。默认值:${MODULENAME:S/mod_//}

SRC_FILE:Apache 模块的源文件。默认值:${MODULENAME}.c

以下变量可以被 Port 访问:

APACHE_VERSION:所选 Apache 服务器的主版本号和次版本号,例如 2.4。

APACHEETCDIR:Apache 配置目录的位置。默认值:${LOCALBASE}/etc/apache24

APACHEINCLUDEDIR:Apache 包含文件的位置。默认值:${LOCALBASE}/include/apache24

APACHEMODDIR:Apache 模块的位置。默认值:${LOCALBASE}/libxexec/apache24

APACHE_DEFAULT:默认的 Apache 版本。

17.7. autoreconf

可能的参数:(无),build

运行 autoreconf。它封装了 aclocalautoconfautoheaderautomakeautopointlibtoolize 命令。每个命令都应用于 ${AUTORECONF_WRKSRC}/configure.ac 或其旧名称 ${AUTORECONF_WRKSRC}/configure.in。如果 configure.ac 使用 AC_CONFIG_SUBDIRS 定义了子目录并有自己的 configure.ac,则 autoreconf 将递归更新这些子目录。:build 参数仅添加对这些工具的构建时依赖项,但不运行 autoreconf。如果 WRKSRC 中不包含 configure.ac 的路径,可以通过设置 AUTORECONF_WRKSRC 来指定路径。

17.8. azurepy

可能的参数:(无)

py-azure* Ports 提供支持。移除 azure 命名空间并清理常见文件。

17.9. blaslapack

可能的参数:(无),atlasnetlib(默认),gotoblasopenblas

添加对 Blas / Lapack 库的依赖。

17.10. bdb

可能的参数:(无),5(默认),18

添加对 Berkeley DB 库的依赖。默认为 databases/db5。在使用 :18 参数时,也可以依赖于 databases/db18。可以声明一个接受值的范围,:5+ 会查找安装的最高版本,如果没有其他版本则回退到 5。INVALID_BDB_VER 可用于指定与此 Port 不兼容的版本。该框架向 Port 暴露以下变量:

BDB_LIB_NAME:Berkeley DB 库的名称。例如,使用 databases/db5 时,它包含 db-5.3

BDB_LIB_CXX_NAME:Berkeley DBC++ 库的名称。例如,使用 databases/db5 时,它包含 db_cxx-5.3

BDB_INCLUDE_DIR:Berkeley DB 包含目录的位置。例如,使用 databases/db5 时,它包含 ${LOCALBASE}/include/db5

BDB_LIB_DIR:Berkeley DB 库目录的位置。例如,使用 databases/db5 时,它包含 ${LOCALBASE}/lib

BDB_VER:检测到的 Berkeley DB 版本。例如,如果使用 USES=bdb:5+ 并安装了 Berkeley DB 18,则它包含 18

重要

databases/db48 弃用并且不再受支持。任何 Port 都不得使用它。

17.11. bison

可能的参数:(无),buildrunboth

使用 devel/bison。默认情况下,未指定参数或指定 build 参数时,表示 bison 是构建时依赖;run 表示运行时依赖;both 表示同时是构建时和运行时依赖。

17.12. budgie

可能的参数:(无)

为 Budgie 桌面环境提供支持。使用 USE_BUDGIE 选择 Port 所需的组件。有关更多信息,请参见 使用 Budgie

17.13. cabal

重要

不应为 Haskell 库创建 Port,详情见 Haskell Libraries

可能的参数:(无),hpacknodefault

设置使用 Cabal 构建 Haskell 软件时使用的默认值和目标。添加对 Haskell 编译器 Port(lang/ghc)的构建依赖。如果 BUILD_DEPENDS 变量中已列出其他版本的 GHC(例如 lang/ghc810),则使用该版本。如果提供了 hpack 参数,则添加对 devel/hs-hpack 的构建依赖,并在配置步骤中调用 hpack 生成 .cabal 文件。如果提供了 nodefault 参数,框架将不会尝试从 Hackage 拉取主分发文件。如果存在 USE_GITHUBUSE_GITLAB,则此参数会隐式添加。

框架提供以下变量:

CABAL_REVISION:Haskell 包在 Hackage 上可能有修订版本。将此选项设置为整数以拉取修订后的包描述。

USE_CABAL:如果软件使用 Haskell 依赖项,则在此变量中列出它们。每个项目应以 packagename-0.1.2 的形式列出。依赖项也可以有修订版本,修订版本在 _ 符号后指定。支持自动生成依赖项列表,详情见 使用 Cabal 构建 Haskell 应用程序

CABAL_FLAGS:在配置和构建阶段传递给 cabal-install 的标志列表。标志按原样传递。此变量通常用于启用或禁用 .cabal 文件中声明的标志。使用 foo 启用 foo 标志,使用 -foo 禁用它。

CABAL_EXECUTABLES:Port 安装的可执行文件列表。默认值:${PORTNAME}。请参阅项目的 .cabal 文件,获取此变量可能的值。每个值对应 .cabal 文件中的 executable 项。此列表中的项目会自动添加到 pkg-plist。

SKIP_CABAL_PLIST:如果定义了此变量,则不会将 ${CABAL_EXECUTABLES} 中的项目添加到 pkg-plist。

opt_USE_CABAL:根据 opt 选项向 ${USE_CABAL} 中添加项目。

opt_CABAL_EXECUTABLES:根据 opt 选项向 ${CABAL_EXECUTABLES} 中添加项目。

opt_CABAL_FLAGS:如果启用了 opt,则将该值追加到 ${CABAL_FLAGS} 中。否则,追加 -value 以禁用该标志。请注意,此行为与普通的 CABAL_FLAGS 略有不同,因为它不接受以 - 开头的值。

CABAL_WRAPPER_SCRIPTS${CABAL_EXECUTABLES} 的子集,包含要包装到 shell 脚本中的 Haskell 程序,该脚本在运行程序之前设置 *_datadir 环境变量。这还会导致实际的 Haskell 二进制文件安装到 libexec/cabal/ 目录。对于将数据文件安装到 share/ 目录中的 Haskell 程序,必须使用此选项。

FOO_DATADIR_VARS:其他 Haskell 包的列表,其数据文件应由名为 FOO 的可执行文件访问。该可执行文件应是 ${CABAL_WRAPPER_SCRIPTS} 的一部分。列出的 Haskell 包不应有版本后缀。

CABAL_PROJECT:某些 Haskell 项目可能已存在 cabal.project 文件,该文件也由 Ports 框架生成。如果是这种情况,请使用此变量指定如何处理原始的 cabal.project。将此变量设置为 remove 将导致原始文件在提取阶段被删除。将此变量设置为 append 将:

  1. 在提取阶段将原始文件移动到 cabal.project.${PORTNAME}

  2. 在补丁阶段将原始的 cabal.project.${PORTNAME} 和生成的 cabal.project 合并成一个文件。

使用 append 可以在合并之前对原始文件进行补丁处理。

17.14. cargo

可能的参数:(无)

使用 Cargo 进行配置、构建和测试。它可以用于 Port 化使用 Cargo 构建系统的 Rust 应用程序。更多信息请参见 使用 cargo 构建 Rust 应用程序

17.15. charsetfix

可能的参数:(无)

防止 Port 安装 charset.alias。该文件必须仅由 converters/libiconv 安装。如果 charset.alias 不是由 ${WRKSRC}/Makefile.in 安装的,可以通过设置 CHARSETFIX_MAKEFILEIN 来指定相对于 WRKSRC 的路径。

17.16. cl

可能的参数:(无)

为 Common Lisp Port 提供支持。

框架提供以下变量,Port 可以设置:

ASDF_MODULES:当设置 FASL_TARGET(默认为 PORTNAME)时,要构建的 ASDF 模块列表。

FASL_TARGET:构建 Port 的 fasl 变体(可以是 cclclispsbcl)。

USE_ASDF:依赖 devel/cl-asdf

USE_ASDF_FASL:依赖 devel/cl-asdf-<FASL_TARGET>

USE_CCL:依赖 lang/ccl;当 FASL_TARGET=ccl 时,隐式依赖。

USE_CLISP:依赖 lang/clisp;当 FASL_TARGET=clisp 时,隐式依赖。

USE_SBCL:依赖 lang/sbcl;当 FASL_TARGET=SBCL 时,隐式依赖。

框架提供以下变量,Port 可以读取:

ASDF_PATHNAME:CL 源代码路径。

ASDF_REGISTRY:包含 asd 文件的 CL 注册表路径。

CCL:Clozure Common Lisp 编译器的路径。

CLISP:GNU Common Lisp 编译器的路径。

CL_LIBDIR_REL:相对于 LOCALBASEPREFIX 的 CL 库目录。

FASL_DIR_REL:编译后的 fasl 文件的相对路径,取决于 FASL_TARGET

FASL_PATHNAME:CL fasl 文件的路径。

LISP_EXTRA_ARG:构建 fasl 时使用的额外参数。

SBCL:Steel Bank Common Lisp 编译器的路径。

17.17. cmake

可能的参数:(无),insourcenoninjaruntesting

使用 CMake 配置 Port 并生成构建系统。

默认情况下,执行源代码外构建,使 WRKSRC 中的源代码不受构建产物影响。使用 insource 参数时,将执行源代码内构建。该参数应仅作为例外,在常规的源代码外构建无法工作时使用。

默认情况下,使用 Ninja(devel/ninja)进行构建。在某些情况下,这可能无法正确工作。使用 noninja 参数时,构建将使用常规的 make。只有当基于 Ninja 的构建不工作时,才应使用此参数。

使用 run 参数时,除了构建依赖外,还会注册一个运行时依赖。

使用 testing 参数时,将添加一个测试目标,该目标使用 CTest。当运行测试时,Port 将为测试重新配置并重新构建。

有关更多信息,请参见 使用 cmake

17.18. compiler

可能的参数:(无),env(默认,隐式),C++17-langC++14-langC++11-langgcc-C++11-libC++11-libC++0xc11nestedfctfeatures

根据给定的需求确定要使用的编译器。如果 Port 需要支持 C++17 的编译器,请使用 C++17-lang;如果需要支持 C++14 的编译器,请使用 C++14-lang;如果需要支持 C++11 的编译器,请使用 C++11-lang;如果需要带有 C++11 库的 g++ 编译器,请使用 gcc-C++11-lib;如果需要支持 C++11 标准库的编译器,请使用 C++11-lib。如果 Port 需要支持 C++0x、C11 或嵌套函数,应使用相应的参数。

使用 features 请求默认编译器支持的特性列表。在包含 bsd.port.pre.mk 后,Port 可以使用以下变量检查结果:

  • COMPILER_TYPE:系统上的默认编译器,可能是 gcc 或 clang。

  • ALT_COMPILER_TYPE:系统上的替代编译器,可能是 gcc 或 clang,仅在系统中存在两个编译器时设置。

  • COMPILER_VERSION:默认编译器版本的前两位数字。

  • ALT_COMPILER_VERSION:替代编译器的前两位版本数字(如果存在)。

  • CHOSEN_COMPILER_TYPE:选择的编译器,可能是 gcc 或 clang。

  • COMPILER_FEATURES:默认编译器支持的特性,目前列出 C++ 库。

17.19. cpe

可能的参数:(无)

在包清单中包含 Common Platform Enumeration (CPE) 信息,以 CPE 2.3 格式的字符串表示。有关详细信息,请参见 CPE 规范。要将 CPE 信息添加到 Port,请按照以下步骤操作:

  1. 通过使用 NVD 的 CPE 搜索引擎 或在 官方 CPE 字典 中搜索软件产品的官方 CPE 条目(警告,此文件为非常大的 JSON 文件)。切勿自行编造 CPE 数据。

  2. cpe 添加到 USES 中,并使用 make -V CPE_STR 检查结果,确保它与 CPE 字典条目一致。逐步调整直到 make -V CPE_STR 正确。

  3. 如果产品名称(第二个字段,默认为 PORTNAME)不正确,定义 CPE_PRODUCT

  4. 如果厂商名称(第一个字段,默认为 CPE_PRODUCT)不正确,定义 CPE_VENDOR

  5. 如果版本字段(第三个字段,默认为 PORTVERSION)不正确,定义 CPE_VERSION

  6. 如果更新字段(第四个字段,默认为空)不正确,定义 CPE_UPDATE

  7. 如果仍然不正确,请检查 Mk/Uses/cpe.mk 以获取更多细节,或联系 Ports 安全团队 [ports-secteam@FreeBSD.org]。

  8. 尽可能从现有变量(如 PORTNAMEPORTVERSION)中推导出 CPE 名称。使用变量修饰符提取这些变量的相关部分,而不是硬编码名称。

  9. 始终在提交任何更改(如更改 PORTNAMEPORTVERSION 或任何其他用于推导 CPE_STR 的变量)之前,运行 make -V CPE_STR 并检查输出。

17.20. cran

可能的参数:(无),auto-plistcompiles

使用综合 R 存档网络。指定 auto-plist 以自动生成 pkg-plist。如果 Port 包含需要编译的代码,请指定 compiles

17.21. desktop-file-utils

可能的参数:(无)

使用来自 devel/desktop-file-utils 的 update-desktop-database。在不干扰 Port Makefile 中任何其他安装后步骤的情况下,将运行额外的安装后步骤。会在 plist 中添加一行 @desktop-file-utils。仅在 Port 提供包含 MimeType 条目的 .desktop 文件时使用此宏。

17.22. desthack

可能的参数:(无)

更改 GNU configure 的行为,以便在原始软件不支持 DESTDIR 时正确处理。

17.23. display

可能的参数:(无),ARGS

设置虚拟显示环境。如果环境变量 DISPLAY 未设置,则会将 Xvfb 添加为构建依赖,并将 CONFIGURE_ENV 扩展为当前运行的 Xvfb 实例的端口号。ARGS 参数默认值为 install,控制何时启动和停止虚拟显示。

17.24. dos2unix

可能的参数:(无)

Port 中包含需要转换为 Unix 格式的 DOS 行结束符。可以设置多个变量来控制哪些文件将被转换。默认情况下,将转换 所有 文件,包括二进制文件。有关示例,请参见 简单的自动替换

  • DOS2UNIX_REGEX:根据正则表达式匹配文件名。

  • DOS2UNIX_FILES:匹配字面文件名。

  • DOS2UNIX_GLOB:根据 glob 模式匹配文件名。

  • DOS2UNIX_WRKSRC:开始转换的目录,默认为 ${WRKSRC}

17.25. drupal

可能的参数:7moduletheme

自动化安装作为 Drupal 主题或模块的 Port。使用 Port 所期望的 Drupal 版本。例如,USES=drupal:7,module 表示该 Port 创建一个 Drupal 7 模块。可以使用 USES=drupal:7,theme 指定 Drupal 7 主题。

17.26. ebur128

可能的参数:(无),buildlibruntest

添加对 audio/ebur128 的依赖。它允许通过使用 make.conf 中的 DEFAULT_VERSIONS 来透明地依赖 rustlegacy 版本。例如,要使用传统版本,可以在 make.conf 中设置 DEFAULT_VERSIONS+=ebur128=legacy

当不使用任何参数时,行为与提供 lib 参数时相同。其余参数提供相应的依赖类别。

17.27. eigen

可能的参数:2,3,build(默认),run

添加对 math/eigen 的依赖。

17.28. electronfix

可能的参数:373839

为易于移植且以二进制形式分发的 Electron 应用程序提供支持。根据使用的参数,添加对 devel/electron37devel/electron38,或 devel/electron39 的构建和运行时依赖。

该框架提供以下变量,Port 可以设置:

ELECTRONFIX_SYMLINK_FILES:要从 Electron 分发版创建符号链接的文件列表。

ELECTRONFIX_MAIN_EXECUTABLE:要替换为原始 Electron 二进制文件的主可执行文件名。

17.29. elfctl

可能的参数:(无),build(默认),stage

通过设置 ELF_FEATURES 设置 ELF 二进制文件功能控制注释。

当没有参数或提供 build 参数时,将操作 BUILD_WRKSRC 中的二进制文件,ELF_FEATURES 中列出的文件相对于 BUILD_WRKSRC。当提供 stage 参数时,将操作 STAGEDIR 中的二进制文件,ELF_FEATURES 中列出的文件相对于 STAGEDIR

示例 5. 使用 elfctl

featurelist 的格式描述见 elfctl(1)

17.30. elixir

可能的参数:(无)

为使用 lang/elixir 的 Port 提供支持。添加对 lang/elixir 的构建和运行时依赖。

框架提供的变量:

ELIXIR_APP_NAME:Elixir 应用程序名称,安装在 Elixir 的 lib 目录中。

ELIXIR_LIB_ROOT:Elixir 默认库路径。

ELIXIR_APP_ROOT:此 Elixir 应用程序的根目录。

ELIXIR_HIDDEN:要从代码路径中隐藏的应用程序;通常是 ${PORTNAME}

ELIXIR_LOCALE:构建期间 Elixir 使用的 UTF-8 本地化(任何 UTF-8 本地化都可以)。

MIX_CMDmix 命令。

MIX_COMPILE:用于编译 Elixir 应用程序的 mix 命令。

MIX_REWRITE:自动替换 Mix 依赖项与代码路径。

MIX_BUILD_DEPS:以类别/portname 格式列出 BUILD_DEPENDS(通常称为 Erlang 和 Elixir 中的 "deps")。

MIX_RUN_DEPS:以类别/portname 格式列出 RUN_DEPENDS

MIX_DOC_DIRS:要安装到 DOCSDIR 的额外文档目录。

MIX_DOC_FILES:要安装到 DOCSDIR 的额外文档文件(通常是 README.md)。

MIX_ENV:Mix 构建的环境(与 MAKE_ENV 相同格式)。

MIX_ENV_NAME:Mix 构建环境的名称,通常为 "prod"。

MIX_BUILD_NAME:输出的构建名称,位于 _build/ 中,通常是 ${MIX_ENV_NAME}

MIX_TARGET:Mix 目标的名称,通常为 "compile"。

MIX_EXTRA_APPS:要构建的子应用程序列表(如果有)。

MIX_EXTRA_DIRS:要安装到 ELIXIR_APP_ROOT 的额外目录列表。

MIX_EXTRA_FILES:要安装到 ELIXIR_APP_ROOT 的额外文件列表。

17.31. emacs

可能的参数:(无)(默认),buildrunnoflavors

为需要 Emacs 的 Port 提供支持。build 参数创建对 Emacs 的构建依赖。run 参数创建对 Emacs 的运行时依赖。如果 buildrun 参数都缺失,则会创建对 Emacs 的构建和运行时依赖。noflavors 参数会防止使用 flavors,如果没有对 Emacs 的运行时依赖,则隐含此参数。

可以在 make.conf 中定义使用 USES=emacs 的 Port 的默认 Emacs flavor。例如,对于 nox flavor,可以使用 DEFAULT_VERSIONS+= emacs=nox。有效的 flavors 有:fullcannanoxwaylanddevel_fulldevel_nox

可以由 Port 设置的变量:

EMACS_FLAVORS_EXCLUDE:不要构建这些 Emacs flavors。如果未定义 EMACS_FLAVORS_EXCLUDE 且:

  • 有对 Emacs 的运行时依赖

  • 未指定 noflavors 参数

则假设所有有效的 Emacs flavors。

EMACS_NO_DEPENDS:不要添加对 Emacs 的构建或运行时依赖。这将防止使用 flavors,并且不会生成字节码文件作为包的一部分。

Port 可以读取的变量:

EMACS_CMD:Emacs 命令的完整路径(例如 /usr/local/bin/emacs-30.1

EMACS_FLAVOR:用于依赖的 Emacs flavor(例如 BUILD_DEPENDS= dash.el${EMACS_PKGNAMESUFFIX}>0:devel/dash@${EMACS_FLAVOR}

EMACS_LIBDIR:不包括 ${PREFIX} 的 Emacs 库目录(例如 share/emacs

EMACS_LIBDIR_WITH_VER:不包括 ${PREFIX} 的库目录,包含版本(例如 share/emacs/30.1

EMACS_MAJOR_VER:Emacs 主版本(例如 30)

EMACS_PKGNAMESUFFIXPKGNAMESUFFIX 用于区分 Emacs flavors

EMACS_SITE_LISPDIR:不包括 ${PREFIX} 的 Emacs site-lisp 目录(例如 share/emacs/site-lisp

EMACS_VER:Emacs 版本(例如 30.1)

EMACS_VERSION_SITE_LISPDIR:包括版本的目录(例如 share/emacs/30.1/site-lisp

17.32. erlang

可能的参数:(无),encrebarrebar3

lang/erlang 添加构建和运行时依赖。根据参数不同,添加额外的构建依赖。enc 添加对 devel/erlang-native-compiler 的依赖,rebar 添加对 devel/rebar 的依赖,rebar3 添加对 devel/rebar3 的依赖。

此外,Port 可以使用以下变量:

  • ERL_APP_NAME:Erlang 应用程序名称,安装在 Erlang 的 lib 目录中(去掉版本)

  • ERL_APP_ROOT:此 Erlang 应用程序的根目录

  • REBAR_CMDrebar 命令的路径

  • REBAR3_CMDrebar3 命令的路径

  • REBAR_PROFILE:Rebar 配置文件

  • REBAR_TARGETS:Rebar 目标列表(通常是 compile,也可能是 escriptize)

  • ERL_BUILD_NAME:Rebar3 的构建名称

  • ERL_BUILD_DEPS:以类别/portname 格式列出的 BUILD_DEPENDS

  • ERL_RUN_DEPS:以类别/portname 格式列出的 RUN_DEPENDS

  • ERL_DOCS:文档文件和目录列表

17.33. fakeroot

可能的参数:(无)

更改构建系统的一些默认行为,以允许以用户身份安装。有关 fakeroot 的更多信息,请参见 https://wiki.debian.org/FakeRoot

17.34. firebird

可能的参数:(无),25

添加对 Firebird 数据库客户端库的依赖。

17.35. fonts

可能的参数:(无),fcfontsdir(默认),none

添加一个运行时依赖,所需工具用于注册字体。根据不同的参数,添加 @fc ${FONTSDIR} 行,@fontsdir ${FONTSDIR} 行,或者如果参数是 none 则不添加任何行到 plist。FONTSDIR 默认为 ${PREFIX}/share/fonts/${FONTNAME}FONTNAME 默认为 ${PORTNAME}。将 FONTSDIR 添加到 PLIST_SUBSUB_LIST

17.36. fortran

可能的参数:gcc(默认)

使用 GNU Fortran 编译器。

17.37. fpc

可能的参数:(无),run

为基于 Free Pascal 的 Port 提供支持。它将安装 Free Pascal 编译器和单元。

添加对 lang/fpc 的构建依赖。

如果指定了 run 参数,则还会添加运行时依赖。

17.38. fuse

可能的参数:2(默认),3

该 Port 将依赖 FUSE 库,并根据 FreeBSD 的版本处理对内核模块的依赖。

17.39. gem

可能的参数:(无),noautoplist

处理 RubyGems 的构建。如果使用 noautoplist,则不会自动生成 packing list。

这意味着需要使用 USES=ruby

17.40. gettext

可能的参数:(无)

弃用。同时包含 gettext-runtimegettext-tools

17.41. gettext-runtime

可能的参数:(无),lib(默认),buildrun

使用 devel/gettext-runtime。默认情况下,未指定参数或使用 lib 参数时,会添加对 libintl.so 的库依赖。buildrun 参数分别表示构建时和运行时依赖 gettext

17.42. gettext-tools

可能的参数:(无),build(默认),run

使用 devel/gettext-tools。默认情况下,未指定参数或使用 build 参数时,会注册构建时依赖 msgfmt。使用 run 参数时,注册运行时依赖。

17.43. ghostscript

可能的参数:*X*buildrunnox11

可以使用特定版本 X。可选版本有 789,以及 agpl(默认)。nox11 表示需要使用 -nox11 版本的 Port。buildrun 分别会添加构建时和运行时的 Ghostscript 依赖。默认情况下,两者都会添加。

17.44. gl

可能的参数:(无)

提供了一种轻松方式来依赖 GL 组件。组件应该列出在 USE_GL 中。可用的组件有:

egl:添加对 graphics/libglvndlibEGL.so 库的依赖。

gbm:添加对 graphics/mesa-libslibgbm.so 库的依赖。

gl:添加对 graphics/libglvndlibGL.so 库的依赖。

glesv2:添加对 graphics/libglvndlibGLESv2.so 库的依赖。

glew:添加对 graphics/glewlibGLEW.so 库的依赖。

glu:添加对 graphics/libGLUlibGLU.so 库的依赖。

glut:添加对 graphics/freeglutlibglut.so 库的依赖。

opengl:添加对 graphics/libglvndlibOpenGL.so 库的依赖。

17.45. gmake

可能的参数:(无)

使用 devel/gmake 作为构建时依赖,并设置环境以使用 gmake 作为构建的默认 make

17.46. gnome

可能的参数:(无)

提供一种简便的方式来依赖 GNOME 组件。组件应列在 USE_GNOME 中。可用的组件有:

  • atk

  • atkmm

  • cairo

  • cairomm

  • dconf

  • esound

  • evolutiondataserver3

  • gconf2

  • gconfmm26

  • gdkpixbuf

  • gdkpixbuf2

  • glib12

  • glib20

  • glibmm

  • gnomecontrolcenter3

  • gnomedesktop3

  • gnomedesktop4

  • gnomedocutils

  • gnomemenus3

  • gnomemimedata

  • gnomeprefix

  • gnomesharp20

  • gnomevfs2

  • gsound

  • gtk-update-icon-cache

  • gtk12

  • gtk20

  • gtk30

  • gtkhtml3

  • gtkhtml4

  • gtkmm20

  • gtkmm24

  • gtkmm30

  • gtksharp20

  • gtksourceview

  • gtksourceview2

  • gtksourceview3

  • gtksourceviewmm3

  • gvfs

  • intlhack

  • intltool

  • introspection

  • libartlgpl2

  • libbonobo

  • libbonoboui

  • libgda5

  • libgda5-ui

  • libgdamm5

  • libglade2

  • libgnome

  • libgnomecanvas

  • libgnomekbd

  • libgnomeprint

  • libgnomeprintui

  • libgnomeui

  • libgsf

  • libgtkhtml

  • libgtksourceviewmm

  • libidl

  • librsvg2

  • libsigc++12

  • libsigc++20

  • libwnck

  • libwnck3

  • libxml++26

  • libxml2

  • libxslt

  • metacity

  • nautilus3

  • orbit2

  • pango

  • pangomm

  • pangox-compat

  • py3gobject3

  • pygnome2

  • pygobject

  • pygobject3

  • pygtk2

  • pygtksourceview

  • referencehack

  • vte

  • vte3

默认依赖是构建时和运行时依赖,可以通过 :build:run 来更改。例如:

有关更多信息,请参阅 使用 GNOME

17.47. go

重要

不应为 Go 库创建 Ports,更多信息请参阅 Go 库

可能的参数:(无),N.NNN.NN+N.NN-develmodulesno_targetsrun

设置用于构建 Go 软件的默认值和目标。添加对 Go 编译器 Port 的构建依赖,Port 维护者可以设置所需的版本。如果使用 X.Y+ 格式,则将使用 Go X.Y,除非默认的 Go 版本高于 X.Y,在这种情况下将使用默认版本。默认情况下,构建是在 GOPATH 模式下执行的。如果 Go 软件使用模块,可以通过 modules 参数启用模块感知模式。no_targets 将设置构建环境(如 GO_ENVGO_BUILDFLAGS),但跳过创建提取和构建目标。run 还将添加对 Go 编译器 Port 的运行时依赖。

构建过程由多个变量控制:

GO_MODULE:作为 go.mod 中的 module 指令指定的应用模块名称。在大多数情况下,这是使用 Go 模块的 Port 所需的唯一变量。

GO_PKGNAME:在 GOPATH 模式下构建时的 Go 包名称。这是将在 ${GOPATH}/src 中创建的目录。如果没有显式设置,并且存在 GH_SUBDIRGL_SUBDIR,则将从中推断 GO_PKGNAME。在模块感知模式下不需要此设置。

GO_TARGET:要构建的包。默认值为 ${GO_PKGNAME}GO_TARGET 也可以是一个元组,形式为 package:path,其中 path 可以是一个简单的文件名或从 ${PREFIX} 开始的完整路径。

GO_TESTTARGET:要测试的包。默认值为 ./...(当前包及所有子包)。

CGO_CFLAGS:要传递给 C 编译器的额外 CFLAGS 值。

CGO_LDFLAGS:要传递给 C 编译器的额外 LDFLAGS 值。

GO_BUILDFLAGS:要传递给 go build 的额外构建参数。

GO_LDFLAGS:要传递给 go build 命令的额外 LDFLAGS 变量,无需更改 GO_BUILDFLAGS

GO_TESTFLAGS:要传递给 go test 的额外构建参数。

有关使用示例,请参阅 构建 Go 应用程序

17.48. gperf

可能的参数:(无)

如果 gperf 不在基本系统中,添加对 devel/gperf 的构建时依赖。

17.49. grantlee

可能的参数:5selfbuild

处理对 Grantlee 的依赖。指定 5 以依赖基于 Qt5 的版本,devel/grantlee5selfbuild 用于 devel/grantlee5 来获取其版本号。

17.50. groff

可能的参数:buildrunboth

如果基本系统中没有 groff,则注册对 textproc/groff 的依赖。

17.51. gssapi

可能的参数:(无),base(默认),heimdalmitmit-develflagsbootstrap

处理 GSS-API 消费者所需的依赖项。仅提供 Kerberos 机制的库。默认情况下,或设置为 base,使用基本系统中的 GSS-API 库。也可以设置为 heimdal 来使用 security/heimdal,或设置为 mit 来使用 security/krb5,或设置为 mit-devel 来使用 security/krb5-devel

当本地 Kerberos 安装不在 LOCALBASE 中时,请设置 HEIMDAL_HOME(用于 heimdal)或 KRB5_HOME(用于 krb5)到 Kerberos 安装的位置。

这些变量会被导出供 Port 使用:

  • GSSAPIBASEDIR

  • GSSAPICPPFLAGS

  • GSSAPIINCDIR

  • GSSAPILDFLAGS

  • GSSAPILIBDIR

  • GSSAPILIBS

  • GSSAPI_CONFIGURE_ARGS

flags 选项可以与 baseheimdalmitmit-devel 一起使用,以自动将 GSSAPICPPFLAGSGSSAPILDFLAGSGSSAPILIBS 添加到 CFLAGSLDFLAGSLDADD 中。例如,使用 base,flags

bootstrap 选项是一个仅供 security/krb5security/heimdal 使用的特殊前缀。例如,使用 bootstrap,mit

示例 6. 常见用法

17.52. gstreamer

可能的参数:(无)

提供一种简便的方法来依赖 GStreamer 组件。组件应列在 USE_GSTREAMER 中。可用的组件有:

  • a52dec

  • aalib

  • amrnb

  • amrwbdec

  • aom

  • assrender

  • bad

  • bs2b

  • cairo

  • cdio

  • cdparanoia

  • chromaprint

  • curl

  • dash

  • dtls

  • dts

  • dv

  • dvd

  • dvdread

  • editing-services

  • faac

  • faad

  • flac

  • flite

  • gdkpixbuf

  • gl

  • gme

  • gnonlin

  • good

  • gsm

  • gtk4

  • gtk

  • hal

  • hls

  • jack

  • jpeg

  • kate

  • kms

  • ladspa

  • lame

  • libav

  • libcaca

  • libde265

  • libmms

  • libvisual

  • lv2

  • mm

  • modplug

  • mpeg2dec

  • mpeg2enc

  • mpg123

  • mplex

  • musepack

  • neon

  • ogg

  • opencv

  • openexr

  • openh264

  • openjpeg

  • openmpt

  • opus

  • pango

  • png

  • pulse

  • qt

  • resindvd

  • rsvg

  • rtmp

  • shout2

  • sidplay

  • smoothstreaming

  • sndfile

  • sndio

  • soundtouch

  • soup

  • spandsp

  • speex

  • srtp

  • taglib

  • theora

  • ttml

  • twolame

  • ugly

  • v4l2

  • vorbis

  • vpx

  • vulkan

  • wavpack

  • webp

  • webrtcdsp

  • x264

  • x265

  • x

  • ximagesrc

  • zbar

17.53. guile

可能的参数:(无),X.Yflavorsbuildrunaliasconflicts

添加对 Guile 的依赖。默认情况下,这是对适当的 libguile*.so 的库依赖,除非通过 build 和/或 run 选项覆盖。alias 选项根据需要配置 BINARY_ALIAS(请参见 使用 BINARY_ALIAS)。

默认版本通过常规的 DEFAULT_VERSIONS 机制设置;如果默认版本不是列表中的版本之一,则使用可用的最新版本。

使用 Guile 的应用程序通常只构建单一版本的 Guile。然而,扩展或库模块应使用 flavors 选项,以使用多个 flavors 构建。

更多信息请参见 使用 Guile

17.54. horde

可能的参数:(无)

添加对 devel/pear-channel-horde 的构建时和运行时依赖。如果需要,可以使用 USE_HORDE_BUILDUSE_HORDE_RUN 添加其他 Horde 依赖项。更多信息请参见 Horde 模块

17.55. iconv

可能的参数:(无),libbuildpatchtranslitwchar_t

使用 iconv 函数,来自 Port converters/libiconv 的构建时和运行时依赖,或者来自基本系统的 iconv。默认情况下,如果没有指定参数或指定了 lib 参数,则表示使用 iconv 作为构建时和运行时依赖。build 表示仅作为构建时依赖,patch 表示仅作为补丁时依赖。如果 Port 使用 WCHAR_T//TRANSLIT iconv 扩展,请添加相关参数以确保使用正确的 iconv。更多信息请参见 使用 iconv

17.56. imake

可能的参数:(无),envnotallnoman

devel/imake 添加为构建时依赖,并在 configure 阶段运行 xmkmf -a。如果指定了 env 参数,则不会设置 configure 目标。如果 -a 标志对 Port 有问题,请添加 notall 参数。如果 xmkmf 无法生成 install.man 目标,则添加 noman 参数。

17.57. inotify

可能的参数:(无)

为 Port 添加 inotify 支持。

17.58. java

可能的参数:(无),antbuildextractrun

如果没有提供参数且未定义 NO_BUILD,则默认使用 USES=java:build,run。如果定义了 NO_BUILD,则使用 USES=java:run。如果指定了 ant 参数,则 Port 使用 Apache Ant。如果指定了 build 参数,则会将 JDK Port 添加到构建依赖中。如果指定了 extract 参数,则会将 JDK Port 添加到提取依赖中。如果指定了 run 参数,则会将 JDK Port 添加到运行时依赖中。

该框架提供以下变量供 Port 设置:

JAVA_VERSION:Port 适用的 Java 版本列表,空格分隔。可选的 + 可以用来指定版本范围。(允许的值:8[+]11[+]17[+]18[+]19[+]21[+]22[+]23[+]24[+]25[+]

JAVA_OS:Port 适用的 JDK 操作系统列表,空格分隔。(允许的值:nativelinux

JAVA_VENDOR:Port 适用的 JDK 供应商列表,空格分隔。(允许的值:openjdkoracle

该框架为 Port 提供以下变量以供读取:

JAVA_PORT:JDK Port 的名称。(例如 java/openjdk8

JAVA_PORT_VERSION:JDK Port 的版本。(例如 8

JAVA_PORT_OS:JDK Port 使用的操作系统。(例如 linux

JAVA_PORT_VENDOR:JDK Port 的供应商。(例如 openjdk

JAVA_PORT_OS_DESCRIPTION:JDK Port 使用的操作系统描述。(例如 Linux

JAVA_PORT_VENDOR_DESCRIPTION:JDK Port 供应商的描述。(例如 OpenJDK BSD Porting Team

JAVA_HOME:JDK 安装目录的路径。(例如 /usr/local/openjdk8

JAVAC:使用的 Java 编译器路径。(例如 /usr/local/openjdk8/bin/javac/usr/local/bin/javac

JAR:使用的 JAR 工具路径。(例如 /usr/local/openjdk8/bin/jar/usr/local/bin/fastjar

APPLETVIEWER:appletviewer 工具的路径。(例如 /usr/local/linux-jdk1.8.0/bin/appletviewer

JAVAjava 可执行文件的路径。用于执行 Java 程序。(例如 /usr/local/openjdk8/bin/java

JAVADOCjavadoc 工具程序的路径。

JAVAHjavah 程序的路径。

JAVAPjavap 程序的路径。

JAVA_KEYTOOLkeytool 工具程序的路径。

JAVA_N2Anative2ascii 工具的路径。

JAVA_POLICYTOOLpolicytool 程序的路径。

JAVA_SERIALVERserialver 工具程序的路径。

RMIC:RMI stub/skeleton 生成器 rmic 的路径。

RMIREGISTRY:RMI 注册程序的路径,rmiregistry

RMID:RMI 守护进程程序的路径。

JAVA_CLASSES:包含 JDK 类文件的归档路径。在大多数 JDK 中,这是 ${JAVA_HOME}/jre/lib/rt.jar

JAVASHAREDIR:所有共享 Java 资源的基本目录。

JAVAJARDIR:Port 应安装 JAR 文件的目录。

JAVALIBDIR:由其他 Port 安装的 JAR 文件所在的目录。

17.59. jpeg

可能的参数:lib(默认,隐式),buildrun

帮助处理对 jpeg 的依赖。

如果提供了 lib 参数或没有提供参数,则会向 Port 添加库依赖。

如果提供了 build 参数,则会向 Port 添加构建时依赖。

如果提供了 run 参数,则会向 Port 添加运行时依赖。

如果提供了 both 参数,则会向 Port 添加构建时依赖和运行时依赖。

该框架提供了以下可以由 Port 设置的变量:

JPEG_PORT:指定要使用的 JPEG 实现。可选值包括:

17.60. kde

可能的参数:5

添加对 KDE 组件的依赖。更多信息请参见 使用 KDE

17.61. kmod

可能的参数:(无),debug

为内核模块 Port 填充模板,当前包括:

  • kld 添加到 CATEGORIES

  • 设置 SSP_UNSAFE

  • 如果在 SRC_BASE 中找不到内核源代码,则设置 IGNORE

  • 默认情况下,将 KMODDIR 定义为 /boot/modules,并将其添加到 PLIST_SUBMAKE_ENV 中,安装时创建该目录。如果将 KMODDIR 设置为 /boot/kernel,则会重写为 /boot/modules。这样可以防止在升级内核时破坏包,因为 /boot/kernel 会在此过程中重命名为 /boot/kernel.old

  • 在安装和卸载时处理内核模块的交叉引用,使用 @kld

  • 如果提供了 debug 参数,则 Port 可以将调试版本的模块安装到 KERN_DEBUGDIR/KMODDIR 中。默认情况下,KERN_DEBUGDIRDEBUGDIR 复制并设置为 /usr/lib/debug。框架将负责创建和删除所需的目录。

17.62. kodi

可能的参数:(无),noautoplist

提供对 multimedia/kodi 插件的支持。如果提供了 noautoplist 参数,则不会自动生成 plist

17.63. lazarus

可能的参数:(无),gtk2(默认),qt5qt6flavors

editors/lazarus 基础的 Port 提供支持。

如果未提供参数或提供了 gtk2 参数,则 lazarus-app 将使用 gtk2 界面构建,editors/lazarus Port 将使用 gtk2 界面构建。

如果提供了 qt5 参数,则 lazarus-app 将使用 qt5 界面构建。

如果提供了 qt6 参数,则 lazarus-app 将使用 qt6 界面构建。

如果提供了 flavors 参数,则 lazarus-app 将使用 flavors 特性构建。

如果 Port 不需要自动编译 lazarus 项目文件,则可以定义以下变量:

NO_LAZBUILD= yes

以下变量可供 Port 使用:

LAZARUS_PROJECT_FILES:lpi 文件列表。不能为空。默认值:空

LAZARUS_DIR:lazarus 安装目录的路径,默认值:${LOCALBASE}/share/lazarus-${LAZARUS_VER}

LAZBUILD_ARGS:lazbuild 额外参数。大多数情况下可以是 -d。更多信息请参见 lazbuild(1)。默认值:空

LAZARUS_NO_FLAVORS:不构建这些 lazarus flavors。如果未定义 LAZARUS_NO_FLAVORS,则假定构建所有有效的 lazarus flavors。

WANT_LAZARUS_DEVEL:如果设置为 yes,则使用 lazarus/devel 作为构建依赖。

17.64. ldap

可能的参数:(无),<版本>clientserver

注册对 net/openldap 的依赖。如果设置了特定的 <版本>(无点号表示法),则使用该版本。否则,它会尝试找到当前安装的版本。如果需要,它会回退到 bsd.default-versions.mk 中找到的默认版本。client 指定对客户端库的运行时依赖,这是默认行为。server 指定对服务器的运行时依赖。

Port 可以访问以下变量:

IGNORE_WITH_OPENLDAP:如果 Port 不支持某个版本的 OpenLDAP,可以定义此变量。

WITH_OPENLDAP_VER:用户定义的变量,用于设置 OpenLDAP 版本。

OPENLDAP_VER:检测到的 OpenLDAP 版本。

17.65. lha

可能的参数:(无)

EXTRACT_SUFX 设置为 .lzh

17.66. libarchive

可能的参数:(无)

注册对 archivers/libarchive 的依赖。任何依赖 libarchive 的 Port 必须包含 USES=libarchive

17.67. libedit

可能的参数:(无)

注册对 devel/libedit 的依赖。任何依赖 libedit 的 Port 必须包含 USES=libedit

17.68. libtool

可能的参数:(无),keeplabuild

修补 libtool 脚本。所有使用 libtool 的 Port 必须添加此项。keepla 参数可用于保留 .la 文件。一些 Port 没有自己的 libtool 副本,需要对 devel/libtool 进行构建时依赖,使用 :build 参数添加此依赖。

17.69. linux

可能的参数:c6c7

Linux 兼容性框架 Port。指定 c6 以依赖于 CentOS 6 包。指定 c7 以依赖于 CentOS 7 包。可用的包有:

  • allegro

  • alsa-plugins-oss

  • alsa-plugins-pulseaudio

  • alsalib

  • atk

  • avahi-libs

  • base

  • cairo

  • cups-libs

  • curl