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

  • cyrus-sasl2

  • dbusglib

  • dbuslibs

  • devtools

  • dri

  • expat

  • flac

  • fontconfig

  • gdkpixbuf2

  • gnutls

  • graphite2

  • gtk2

  • harfbuzz

  • jasper

  • jbigkit

  • jpeg

  • libasyncns

  • libaudiofile

  • libelf

  • libgcrypt

  • libgfortran

  • libgpg-error

  • libmng

  • libogg

  • libpciaccess

  • libsndfile

  • libsoup

  • libssh2

  • libtasn1

  • libthai

  • libtheora

  • libv4l

  • libvorbis

  • libxml2

  • mikmod

  • naslibs

  • ncurses-base

  • nspr

  • nss

  • openal

  • openal-soft

  • openldap

  • openmotif

  • openssl

  • pango

  • pixman

  • png

  • pulseaudio-libs

  • qt

  • qt-x11

  • qtwebkit

  • scimlibs

  • sdl12

  • sdlimage

  • sdlmixer

  • sqlite3

  • tcl85

  • tcp_wrappers-libs

  • tiff

  • tk85

  • ucl

  • xorglibs

17.70. llvm

可能的参数:(无),XY,min=XY,max=XY,build,run,lib

添加对 LLVM 的依赖。默认情况下,这是一个构建依赖,除非使用 runlib 选项覆盖。默认版本是通过 LLVM_DEFAULT 设置的。也可以指定特定版本。最小和最大版本可以分别通过 minmax 参数指定。Ports 框架将以下变量导出到该 Port:

LLVM_VERSION:通过 llvm.mk 选择的版本

LLVM_PORT:选择的 llvm Port

LLVM_CONFIG:选择的 Port 的 llvm-config

LLVM_LIBLLVM:选择的 Port 的 libLLVM.so

LLVM_PREFIX:选择的 Port 的安装前缀

17.71. localbase

可能的参数:(无),ldflags

确保使用来自 LOCALBASE 的库,而不是来自基本系统的库。指定 ldflags 可以将 -L${LOCALBASE}/lib 添加到 LDFLAGS,而不是 LIBS。依赖于基本系统中也存在的库的 Ports 应该使用此选项。它也被其他一些 USES 内部使用。

17.72. lua

可能的参数:(无),XYXY+-XYXY-ZAmoduleflavorsbuildrunenv

添加对 Lua 的依赖。默认情况下,这是一个库依赖,除非通过 build 和/或 run 选项覆盖。env 选项防止添加任何依赖,但仍定义所有常规变量。

默认版本由通常的 DEFAULT_VERSIONS 机制设置,除非指定了版本或版本范围作为参数,例如 5151-54

使用 Lua 的应用程序通常仅为单个 Lua 版本构建。然而,旨在通过 Lua 代码加载的库模块应使用 module 选项以使用多个 flavors 构建。

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

17.73. luajit

可能的参数:(无),X

添加对 luajit 运行时的依赖。可以使用特定版本 X。可用版本为 luajitluajit-develluajit-openresty

在包含 bsd.port.options.mkbsd.port.pre.mk 后,Port 可以检查以下变量:

LUAJIT_VER:选择的 luajit 版本

LUAJIT_INCDIR:luajit 的头文件路径

LUAJIT_LUAVER:选择的 luajit 规范版本(luajit 为 2.0,其他为 2.1)

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

17.74. lxqt

可能的参数:(无)

处理 LXQt 桌面环境的依赖。使用 USE_LXQT 来选择所需的组件。有关更多信息,请参见 使用 LXQt

17.75. magick

可能的参数:(无),Xbuildnox11runtest

添加对 ImageMagick 的库依赖。可以使用特定版本 X。可用版本为 67(默认)。nox11 表示需要使用 -nox11 版本的 Port。buildruntest 分别添加对 ImageMagick 的构建、运行时和测试依赖。

17.76. makeinfo

可能的参数:(无)

如果基本系统中没有 makeinfo,则添加一个构建时依赖。

17.77. makeself

可能的参数:(无)

表示分发文件是 makeself 存档,并设置相应的依赖。

17.78. mate

可能的参数:(无)

提供一种简单的方法来依赖 MATE 组件。组件应列在 USE_MATE 中。可用的组件有:

  • autogen

  • caja

  • common

  • controlcenter

  • desktop

  • dialogs

  • docutils

  • icontheme

  • intlhack

  • intltool

  • libmatekbd

  • libmateweather

  • marco

  • menus

  • notificationdaemon

  • panel

  • pluma

  • polkit

  • session

  • settingsdaemon

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

17.79. meson

可能的参数:(无),muon

为基于 Meson 的项目提供支持。有关更多信息,请参见 使用 meson

如果指定了 muon,则添加对 devel/muon 的构建依赖。

17.80. metaport

可能的参数:(无)

设置以下变量以简化创建 metaport:MASTER_SITESDISTFILESEXTRACT_ONLYNO_BUILDNO_INSTALLNO_MTREENO_ARCH

17.81. minizip

可能的参数:(无),ng

分别添加对 archivers/miniziparchivers/minizip-ng 的库依赖。

17.82. mlt

可能的参数:7nodepend

为依赖 multimedia/mlt7 的 Ports 提供支持。

如果提供了 nodepend 参数,则不生成库依赖。此参数仅对 multimedia/mlt7* Ports 有意义。

17.83. mysql

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

为 MySQL 提供支持。如果未指定版本,则尝试查找当前安装的版本。回退到默认版本 MySQL-5.6。可用的版本为 5555m55p5656p56w5757p80100m101m102m。其中 mp 后缀分别表示 MariaDB 和 Percona 变种的 MySQL。serverembedded 会添加对 MySQL 服务器的构建和运行时依赖。在使用 serverembedded 时,添加 client 以同时添加对 libmysqlclient.so 的依赖。如果某些版本不受支持,Port 可以设置 IGNORE_WITH_MYSQL

该框架将 MYSQL_VER 设置为检测到的 MySQL 版本。

17.84. mono

可能的参数:(无),nuget

通过设置适当的依赖,添加对 Mono(当前仅支持 C#)框架的依赖。

当 Port 使用 nuget 包时,指定 nuget。需要设置 NUGET_DEPENDS,其格式为 name=version,包含 nuget 包的名称和版本。可以使用 name=version:_origin_ 添加可选的包源。

辅助目标 buildnuget 将基于提供的 packages.config 输出 NUGET_DEPENDS 的内容。

17.85. motif

可能的参数:(无)

使用 x11-toolkits/open-motif 作为库依赖。最终用户可以在 make.conf 中设置 WANT_LESSTIF 来使用 x11-toolkits/lesstif 作为依赖,而不是 x11-toolkits/open-motif。同样,在 make.conf 中设置 WANT_OPEN_MOTIF_DEVEL 将添加对 x11-toolkits/open-motif-devel 的依赖。

17.86. mpi

可能的参数:mpich(默认),openmpi

为依赖 MPI 的 Ports 提供支持。

如果提供 mpich 参数,则添加对 net/mpich 的依赖。

如果提供 openmpi 参数,则添加对 net/openmpi 的依赖。

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

MPI_LIBS:用于链接使用 MPI 的程序所需的库。

MPI_CFLAGS:编译器标志,用于构建使用 MPI 的程序。

MPICCmpicc 可执行文件的位置。默认:${MPI_HOME}/bin/mpicc

MPICXXmpicxx 可执行文件的位置。默认:${MPI_HOME}/bin/mpicxx

MPIF90mpif90 可执行文件的位置。默认:${MPI_HOME}/bin/mpif90

MPIFC:与上述相同。

MPI_HOMEMPI 的安装目录。对于 MPICH 默认值为 ${LOCALBASE}

MPIEXECmpiexec 可执行文件的位置。默认:${MPI_HOME}/bin/mpiexec

MPIRUNmpirun 可执行文件的位置。默认:${MPI_HOME}/bin/mpirun

17.87. ncurses

可能的参数:(无),baseport

使用 ncurses,并设置一些有用的变量。

17.88. nextcloud

可能的参数:(无)

通过添加对 www/nextcloud 的运行时依赖,添加对 Nextcloud 应用程序的支持。

17.89. ninja

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

如果指定了 buildrun 参数,则分别添加对 devel/ninja 的构建或运行时依赖。如果提供 make 或没有参数,则使用 ninja 来构建该 Port,而不是 make。make 隐含了 build。如果 NINJA_DEFAULT 变量设置为 samurai,则将依赖关系设置为 devel/samurai

17.90. nodejs

可能的参数:(无),buildenvruncurrentlts2022242526

使用 nodejs。添加对 www/node* 的依赖。如果指定了受支持的版本,则必须同时指定 run 和/或 buildenv 参数设置环境变量 NODEJS_VERSIONNODEJS_SUFFIX。当前 lts 是 24 的别名,current 是 26 的别名。

17.91. objc

可能的参数:(无)

如果基本系统不支持,则添加 Objective C 依赖(编译器、运行时库)。

17.92. ocaml

可能的参数:(无),buildcamlp4dunefindlibfindplistldconfigruntktkbuildtkrunwash

提供对 OCaml 的支持。

如果没有提供任何参数,默认使用 buildrun

如果提供 build 参数,则会将 lang/ocamlc 添加到 BUILD_DEPENDSEXTRACTPATCH_DEPENDS

如果提供 camlp4 参数,则使用 devel/ocamlp4 来构建。

如果提供 dune 参数,则使用 devel/ocaml-dune 作为构建系统。

如果提供 findlib 参数,则使用 ocamlfind 来安装包。包目录会自动删除。

如果提供 findplist 参数,则会自动添加 findlib 目标目录的内容。

如果提供 ldconfig 参数,则会自动处理 OCaml 的 ld.conf 文件。当使用 dune 时,Dune 可能会将 stublibs 安装到 site-lib 包目录或在 DUNE_LIBDIR site-lib 目录下的单一目录中。如果你的 Port 安装了共享库到 OCaml 目录,请设置此项。

如果提供 run 参数,则将 ocamlc 添加到 RUN_DEPENDS

如果提供 tk 参数,则会添加 x11-toolkits/ocaml-labltk 的构建和运行时依赖。此参数隐式包含 tkbuildtkrun

如果提供 tkbuild 参数,则会将 x11-toolkits/ocaml-labltk 添加到 BUILD_DEPENDSEXTRACTPATCH_DEPENDS

如果提供 tkrun 参数,则会将 x11-toolkits/ocaml-labltk 添加到 RUN_DEPENDS

如果提供 wash 参数,则会在卸载时清理 Ocaml 的共享目录。当安装到非标准 PREFIX 时,使用此选项。

可以由 Port 设置以下变量:

OCAML_PKGDIRS:如果指定了 findlib 参数,将处理 site-lib 下的目录。默认值:${PORTNAME}

OCAML_LDLIBSPREFIX 下将自动添加到或从 ld.conf 中删除的目录。默认值:${OCAML_SITELIBDIR}/${PORTNAME}

OCAML_PACKAGES:要构建和安装的包列表。默认值:${PORTNAME}

17.93. octave

可能的参数:(无),env

使用 math/octaveenv 仅加载一个 OCTAVE_VERSION 环境变量。

17.94. openal

可能的参数:alsoft(默认),sialut

使用 OpenAL。可以指定后端,默认使用软件实现。用户可以通过设置 WANT_OPENAL 来指定首选后端。有效的值包括 soft(默认)和 si

17.95. pathfix

可能的参数:(无)

查找 PATHFIX_WRKSRC 中的 Makefile.inconfigure 文件(默认为 WRKSRC),并修复常见路径,以确保它们遵循 FreeBSD 的层次结构。例如,它会修复 pkgconfig.pc 文件的安装目录为 ${PREFIX}/libdata/pkgconfig。如果 Port 使用了 USES=autoreconf,则会自动将 Makefile.am 添加到 PATHFIX_MAKEFILEIN 中。

如果 Port 使用了 USES=cmake,则会查找 PATHFIX_WRKSRC 中的 CMakeLists.txt。如有需要,可以通过 PATHFIX_CMAKELISTSTXT 更改默认文件名。

17.96. pear

可能的参数:env

添加对 devel/pear 的依赖。它将为使用 PHP 扩展和应用程序仓库的软件设置默认行为。使用 env 参数仅设置 PEAR 环境变量。有关更多信息,请参见 PEAR 模块

17.97. perl5

可能的参数:(无)

依赖于 Perl。配置通过 USE_PERL5 进行。

USE_PERL5 可以包含使用 Perl 的阶段,包括 extractpatchbuildruntest

USE_PERL5 还可以包含 configuremodbuildmodbuildtiny,当需要 Makefile.PLBuild.PL 或 Module::Build::Tiny 的版本时。

USE_PERL5 默认为 build run。当使用 configuremodbuildmodbuildtiny 时,buildrun 是隐式的。

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

17.98. pgsql

可能的参数:(无),X.YX.Y+X.Y-X.Y-Z.A

提供对 PostgreSQL 的支持。Port 维护者可以设置所需的版本。可以指定最小版本、最大版本或版本范围;例如,9.0-8.4+8.4-9.2.

默认情况下,添加的依赖项将是客户端,但如果 port 需要其他组件,可以通过 WANT_PGSQL=component[:target] 来指定。例如,WANT_PGSQL=server:configure pltcl plperl。可用组件包括:

  • client

  • contrib

  • docs

  • pgtcl

  • plperl

  • plpython

  • pltcl

  • server

17.99. php

可能的参数:(无),phpizeextzendbuildclicgimodwebembedpeclflavorsnoflavors

提供对 PHP 的支持。为默认的 PHP 版本 lang/php81 添加运行时依赖。

phpize:用于构建 PHP 扩展。启用 flavors。

ext:用于构建、安装和注册 PHP 扩展。启用 flavors。

zend:用于构建、安装和注册 Zend 扩展。启用 flavors。

build:将 PHP 也作为构建时的依赖项。

cli:需要 PHP 的 CLI 版本。

cgi:需要 PHP 的 CGI 版本。

mod:需要 PHP 的 Apache 模块。

web:需要 PHP 的 Apache 模块或 CGI 版本。

embed:需要 PHP 的嵌入式库版本。

pecl:提供从 PECL 仓库获取 PHP 扩展的默认配置。启用 flavors。

flavors:启用自动生成 PHP flavors。除非出现在 IGNORE_WITH_PHP 中的 PHP 版本,否则将为所有 PHP 版本生成 flavors。

noflavors:禁用自动生成 PHP flavors。与 PHP 本身提供的扩展一起使用。

使用变量来指定所需的 PHP 模块,以及支持的 PHP 版本。

USE_PHP:运行时所需的 PHP 扩展列表。可以通过在扩展名称后添加 :build 来添加构建时依赖项。例如:pcre xml:build gettext

IGNORE_WITH_PHP:该 Port 不与给定版本的 PHP 一起使用。有关可能的值,请查看 Mk/Uses/php.mk 中的 _ALL_PHP_VERSIONS 内容。

在使用 :ext:zend 构建 PHP 或 Zend 扩展时,可以设置以下变量:

PHP_MODNAME:PHP 或 Zend 扩展的名称。默认值是 ${PORTNAME}

PHP_HEADER_DIRS:安装头文件的子目录列表。框架将始终安装与扩展位于同一目录中的头文件。

PHP_MOD_PRIO:加载扩展的优先级。它是一个介于 0099 之间的数字。

对于不依赖其他扩展的扩展,优先级自动设置为 20,对于依赖其他扩展的扩展,优先级自动设置为 30。一些扩展可能需要在其他扩展之前加载,例如 www/php56-opcache。一些可能需要在优先级为 30 的扩展之后加载。在这种情况下,可以在 Port 的 Makefile 中添加 PHP_MOD_PRIO=XX。例如:

这些变量可以用于 PKGNAMEPREFIXPKGNAMESUFFIX

PHP_PKGNAMEPREFIX:包含 php_XY_-,其中 XY 是当前 flavor 的 PHP 版本。用于 PHP 扩展和模块。

PHP_PKGNAMESUFFIX:包含 -php_XY_,其中 XY 是当前 flavor 的 PHP 版本。用于 PHP 应用程序。

PECL_PKGNAMEPREFIX:包含 php_XY_-pecl-,其中 XY 是当前 flavor 的 PHP 版本。用于 PECL 模块。

重要

使用 flavors 时,所有 PHP 扩展、PECL 扩展、PEAR 模块 必须具有不同的包名称,因此它们必须在 PKGNAMEPREFIXPKGNAMESUFFIX 中使用这三个变量之一。

17.100. pkgconfig

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

使用 devel/pkgconf。如果没有参数或使用 build 参数,则意味着将 pkg-config 作为构建时的依赖项。run 表示运行时依赖项,both 表示构建时和运行时的依赖项。

17.101. pure

可能的参数:(无),ffi

使用 lang/pure。主要用于构建相关的 pure Port。使用 ffi 参数时,它意味着将 devel/pure-ffi 作为运行时依赖项。

17.102. pyqt

可能的参数:(无),45

使用 PyQt。如果 Port 是 PyQt 的一部分,请设置 PYQT_DIST。使用 USE_PYQT 来选择 Port 需要的组件。可用的组件包括:

  • core

  • dbus

  • dbussupport

  • demo

  • designer

  • designerplugin

  • doc

  • gui

  • multimedia

  • network

  • opengl

  • qscintilla2

  • sip

  • sql

  • svg

  • test

  • webkit

  • xml

  • xmlpatterns

这些组件仅在 PyQt4 中可用:

  • assistant

  • declarative

  • help

  • phonon

  • script

  • scripttools

这些组件仅在 PyQt5 中可用:

  • multimediawidgets

  • printsupport

  • qml

  • serialport

  • webkitwidgets

  • widgets

每个组件的默认依赖项是构建时和运行时的依赖项,要选择仅构建或仅运行,请在组件名称后添加 _build_run。例如:

17.103. pytest

可能的参数:(无),4

引入了对 devel/pytest 的新依赖。它定义了一个 do-test 目标,用于正确运行测试。使用该参数依赖于特定版本的 devel/pytest。对于使用 devel/pytest 的 Port,建议使用此方式,而不是使用特定的 do-test 目标。框架向 Port 暴露了以下变量:

PYTEST_ARGS:传递给 pytest 的额外参数(默认为空)。

PYTEST_IGNORED_TESTS:列出需要忽略的 pytest -k 测试模式(默认为空)。适用于那些预期不通过的测试,比如需要数据库访问的测试。

PYTEST_BROKEN_TESTS:列出需要忽略的 pytest -k 损坏测试模式(默认为空)。适用于那些有问题的测试,需要修复。

此外,用户可以设置以下变量:

PYTEST_ENABLE_IGNORED_TESTS:启用那些通常会被 PYTEST_IGNORED_TESTS 忽略的测试。

PYTEST_ENABLE_BROKEN_TESTS:启用那些通常会被 PYTEST_BROKEN_TESTS 忽略的测试。

PYTEST_ENABLE_ALL_TESTS:启用所有那些通常会被 PYTEST_IGNORED_TESTSPYTEST_BROKEN_TESTS 忽略的测试。

17.104. python

可能的参数:(无),X.YX.Y+-X.YX.Y-Z.Apatchbuildruntest

使用 Python。可以指定支持的版本或版本范围。如果 Python 只在构建时、运行时或测试时需要,可以将其设置为构建、运行或测试依赖项,使用 buildruntest。如果 Python 在补丁阶段也需要,则使用 patch。更多信息请参见 使用 Python

USES=python:env 可以在需要框架导出的变量但不依赖于 Python 时使用。通常用于与 USES=shebangfix 配合使用,目标是仅修复 shebang,而不是添加对 Python 的依赖。

17.105. qmail

可能的参数:(无),buildrunbothvars

使用 mail/qmail。使用 build 参数时,意味着将 qmail 作为构建时的依赖项。run 表示运行时依赖项。如果不带参数或使用 both 参数,则表示构建时和运行时的依赖项。vars 将仅设置 QMAIL 变量供 Port 使用。

17.106. qmake

可能的参数:(无),norecursiveoutsourceno_envno_configure

使用 QMake 进行配置。更多信息请参见 使用 qmake

17.107. qt

可能的参数:56no_env

添加对 Qt 组件的依赖。no_env 参数直接传递给 USES= qmake。更多信息请参见 使用 Qt

17.108. qt-dist

可能的参数:(无)或 5 和(无)或 6 和(无)或下列之一:3d5compatbasechartsconnectivitydatavis3ddeclarativedoclanguageservergamepadgraphicaleffectsimageformatslocationlottiemultimedianetworkauthpositioningquick3dquickcontrols2quickcontrolsquicktimelineremoteobjectsscriptscxmlsensorsserialbusserialportshadertoolsspeechsvgtoolstranslationsvirtualkeyboardwaylandwebchannelwebenginewebglpluginwebsocketswebviewx11extrasxmlpatterns

提供构建 Qt 5 和 Qt 6 组件的支持。它负责为 Port 构建设置适当的配置环境。

示例 7. 构建 Qt 5 组件

该 Port 是 Qt 5 的 networkauth 组件,属于 networkauth 分发文件。

示例 8. 构建 Qt 6 组件

该 port 是 Qt 6 的 websockets 组件,属于 websockets 分发文件。

如果 PORTNAME 与组件名称不匹配,则可以将其作为参数传递给 qt-dist

示例 9. 使用不同名称构建 Qt 5 组件

该 port 是 Qt 5 的 gui 组件,属于 base 分发文件。

17.109. readline

可能的参数:(无),port

将 readline 作为库依赖项,并根据需要设置 CPPFLAGSLDFLAGS。如果使用 port 参数,或如果基本系统中没有 readline,则会添加对 devel/readline 的依赖。

17.110. ruby

可能的参数:(无),buildextconfrunsetup

为 Ruby 相关的 Port 提供支持。(无) 参数时,会添加对 lang/ruby 的运行时依赖。build 添加对 lang/ruby 的构建时依赖。extconf 表示该 Port 使用 extconf.rb 来配置。run 添加对 lang/ruby 的运行时依赖,这是默认设置。setup 表示该 Port 使用 setup.rb 来配置和构建。

用户可以定义以下变量:

RUBY_VER:Ruby 的替代短版本,以 x.y 形式表示。

RUBY_DEFAULT_VER:设置为(例如)2.7,则默认使用 ruby27

RUBY_ARCH:设置架构名称(例如 i386-freebsd7)。

以下变量会被导出供 Port 使用:

RUBY:设置为 ruby 的完整路径。如果设置了此变量,则以下变量的值将自动从 ruby 执行文件中获得:RUBY_ARCHRUBY_ARCHLIBDIRRUBY_LIBDIRRUBY_SITEARCHLIBDIRRUBY_SITELIBDIRRUBY_VERRUBY_VERSION

RUBY_VER:设置为 Ruby 的替代短版本,以 x.y 形式表示。

RUBY_EXTCONF:设置为 extconf.rb 的替代名称(默认:extconf.rb)。

RUBY_EXTCONF_SUBDIRS:设置为子目录列表,如果包含多个模块。

RUBY_SETUP:设置为 setup.rb 的替代名称(默认:setup.rb)。

17.111. samba

可能的参数:buildenvlibrun

处理对 Samba 的依赖。env 不会添加任何依赖项,仅设置变量。buildrun 分别会添加构建时和运行时对 smbd 的依赖。lib 会添加对 libsmbclient.so 的依赖。导出的变量包括:

SAMBA_PORT:Samba 默认 Port 的来源。

SAMBA_INCLUDEDIR:Samba 头文件的位置。

SAMBA_LIBS:Samba 共享库所在目录。

SAMBA_LDB_PORT:选定 Samba 版本使用的 ldb Port 的来源(例如, databases/ldb28)。如果一个 Port 需要依赖于与选定 Samba 版本相同的 ldb 版本,应该使用此变量。

SAMBA_TALLOC_PORT:选定 Samba 版本使用的 talloc Port 的来源。如果一个 Port 需要依赖于与选定 Samba 版本相同的 talloc 版本,应该使用此变量。

SAMBA_TDB_PORT:选定 Samba 版本使用的 TDB Port 的来源。如果一个 Port 需要依赖于与选定 Samba 版本相同的 TDB 版本,应该使用此变量。

SAMBA_TEVENT_PORT:选定 Samba 版本使用的 tevent Port 的来源。如果一个 Port 需要依赖于与选定 Samba 版本相同的 tevent 版本,应该使用此变量。

17.112. scons

可能的参数:(无)

为使用 devel/scons 提供支持。更多信息请参见 使用 scons

17.113. sdl

可能的参数:sdl

为使用 SDL 软件包提供支持。变量 USE_SDL 是强制性的,并指定要添加为依赖的组件。

当前支持的 SDL1.2 模块有:

  • sdl

  • console

  • gfx

  • image

  • mixer

  • mm

  • net

  • pango

  • sound

  • ttf

当前支持的 SDL2 模块有:

  • sdl2

  • gfx2

  • image2

  • mixer2

  • net2

  • sound2

  • ttf2

当前支持的 SDL3 模块有:

  • sdl3

  • image3

  • ttf3

17.114. shared-mime-info

可能的参数:(无)

使用来自 misc/shared-mime-infoupdate-mime-database。此宏会自动在安装后步骤中添加,以确保该 Port 在需要时仍能指定自己的安装后步骤。同时,它还会将 @shared-mime-info 条目添加到 plist 中。

17.115. shebangfix

可能的参数:(无)

许多软件使用错误的脚本解释器位置,特别是 /usr/bin/perl/bin/bashshebangfix 宏修复脚本中的 shebang 行,这些脚本包含在 SHEBANG_REGEXSHEBANG_GLOBSHEBANG_FILES 中。

SHEBANG_REGEX:包含一个扩展正则表达式,并与 find(1)-iregex 参数一起使用。参见 USESshebangfixSHEBANG_REGEX

SHEBANG_GLOB:包含一个使用 find(1)-name 参数的模式列表。参见 USESshebangfixSHEBANG_GLOB

SHEBANG_FILES:包含文件列表或 sh(1) 模式。shebangfix 宏在 ${WRKSRC} 中运行,因此 SHEBANG_FILES 可以包含相对于 ${WRKSRC} 的路径。如果需要修补 ${WRKSRC} 之外的文件,也可以处理绝对路径。参见 USESshebangfixSHEBANG_FILES

当前默认支持的解释器包括:Bash、Java、Ksh、Lua、Perl、PHP、Python、Ruby、Tcl 和 Tk。

有三个配置变量:

SHEBANG_LANG:支持的解释器列表。

_interp__CMD:在 FreeBSD 上的命令解释器路径。默认值是 ${LOCALBASE}/bin/interp

_interp__OLD_CMD:错误的解释器调用列表。这些通常是过时的路径,或在 FreeBSD 上不正确的路径,它们将被 _interp__CMD 中的正确路径所替换。

注意

这些路径始终_interp__OLD_CMD 的一部分:"/usr/bin/env _interp_"/bin/interp/usr/bin/interp/usr/local/bin/interp

技巧

_interp__OLD_CMD 包含多个值。任何包含空格的条目必须加引号。参见 指定为 USESshebangfix 添加解释器时的所有路径

重要

shebang 修复在 patch 阶段完成。如果在 build 阶段创建了错误的 shebang(例如,configure 脚本或 Makefiles),则必须修补或给定正确的路径(例如,通过 CONFIGURE_ENVCONFIGURE_ARGSMAKE_ENVMAKE_ARGS)来生成正确的 shebang。

支持的解释器的正确路径可以在 _interp__CMD 中找到。

技巧

当与 USES=python 一起使用时,如果仅仅是修复 shebang,但不希望依赖于 Python 本身,可以使用 USES=python:env

示例 10. 向 USES=shebangfix 添加另一个解释器

要添加另一个解释器,设置 SHEBANG_LANG。例如:

示例 11. 在向 USES=shebangfix 添加解释器时指定所有路径

如果未定义,并且 _interp__OLD_CMD_interp__CMD 没有默认值,则 Ksh 条目可以定义如下:

示例 12. 添加解释器的奇怪位置

有些软件使用解释器的奇怪位置。例如,应用程序可能期望 Python 位于 /opt/bin/python2.7。可以在 Port Makefile 中声明需要替换的奇怪路径:

示例 13. USES=shebangfixSHEBANG_REGEX

要修复 ${WRKSRC}/scripts 中所有以 .pl.sh.cgi 结尾的文件,可以执行:

注意

SHEBANG_REGEX 是通过运行 find -E 来使用的,它使用现代正则表达式,也称为扩展正则表达式。更多信息参见 re_format(7)

示例 14. USES=shebangfixSHEBANG_GLOB

要修复 ${WRKSRC} 中所有以 .pl.sh 结尾的文件,可以执行:

示例 15. USES=shebangfixSHEBANG_FILES

要修复 ${WRKSRC} 中的 script/foobar.plscript/*.sh 文件,可以执行:

17.116. sqlite

可能的参数:(无),23

添加对 SQLite 的依赖。默认使用版本 3,但也可以使用 :2 修饰符来指定版本 2。

17.117. sbrk

可能的参数:(无)

标记该 Port 在 aarch64riscv64 上为 BROKEN

17.118. ssl

可能的参数:(无),buildrun

提供对 OpenSSL 的支持。可以使用 buildrun 来指定仅在构建时或运行时需要的依赖。这些变量对 Port 可用,也会被添加到 MAKE_ENV 中:

OPENSSLBASE:OpenSSL 安装基础路径。

OPENSSLDIR:OpenSSL 配置文件路径。

OPENSSLLIB:OpenSSL 库路径。

OPENSSLINC:OpenSSL 包含文件路径。

OPENSSLRPATH:如果定义,链接器需要使用的 OpenSSL 库路径。

技巧

如果一个 Port 在使用 OpenSSL flavor 时无法构建,请设置 BROKEN_SSL 变量,并可能设置 BROKEN_SSL_REASON__flavor_

17.119. sudo

可能的参数:(无)

添加对 security/sudo 的运行时依赖。

17.120. tar

可能的参数:(无),Zbz2bzip2lzmatbztbz2tgztxzxzzstzstd

EXTRACT_SUFX 分别设置为 .tar.tar.Z.tar.bz2.tar.bz2.tar.lzma.tbz.tbz2.tgz.txz.tar.xz.tar.zst.tar.zstd

17.121. tcl

可能的参数:versionwrapperbuildruntea

添加对 Tcl 的依赖。可以使用 version 来请求特定版本。版本可以为空、一个或多个精确版本号(当前为 848586),或一个最小版本号(当前为 84+85+86+)。如果只请求一个非版本特定的 wrapper,可以使用 wrapper。可以使用 buildrun 来指定构建时或运行时的依赖。要使用 Tcl 扩展架构构建该 Port,使用 tea。在包含 bsd.port.pre.mk 后,该 Port 可以使用以下变量检查结果:

  • TCL_VER:选择的 Tcl 的主次版本

  • TCLSH:Tcl 解释器的完整路径

  • TCL_LIBDIR:Tcl 库的路径

  • TCL_INCLUDEDIR:Tcl C 头文件的路径

  • TCL_PKG_LIB_PREFIX:根据 TIP595 的库前缀

  • TCL_PKG_STUB_POSTFIX:Stub 库后缀

  • TK_VER:选择的 Tk 的主次版本

  • WISH:Tk 解释器的完整路径

  • TK_LIBDIR:Tk 库的路径

  • TK_INCLUDEDIR:Tk C 头文件的路径

17.122. terminfo

可能的参数:(无)

@terminfo 添加到 plist。当该 Port 安装 *.terminfo 文件到 ${PREFIX}/share/misc 时使用。

17.123. tex

可能的参数:(无)

提供对 tex 的支持。加载所有与 TEX 相关的默认变量,并且不添加任何对其他 Ports 的依赖。

变量用于指定需要哪些 TEX 模块。

USE_TEX 运行时所需的 TEX 扩展列表。在扩展名后添加 :build 来添加构建时依赖,:run 添加运行时依赖,:test 添加测试时依赖,:extract 添加提取时依赖。例如:base texmf:build source:run

当前可能的参数如下:

  • base

  • texmf

  • source

  • docs

  • web2c

  • kpathsea

  • ptexenc

  • basic

  • tlmgr

  • texlua

  • texluajit

  • synctex

  • xpdfopen

  • dvipsk

  • dvipdfmx

  • xdvik

  • gbklatex

  • formats

  • tex

  • latex

  • pdftex

  • jadetex

  • luatex

  • ptex

  • xetex

  • xmltex

  • texhash

  • updmap

  • fmtutil

17.124. tk

tcl 的参数相同

当同时使用 Tcl 和 Tk 时的小包装器。返回的变量与使用 Tcl 时相同。

17.125. trigger

可能的参数:(无)

提供对需要由 pkg(8) 执行触发器的 Ports 的支持。如果条件满足,触发器将在事务结束时执行。

可以通过 Ports 设置以下变量:

TRIGGERS 打包的触发器列表。默认为 ${PORTNAME}

触发器以 UCL 格式指定,通常放置在 Port 的 files/ 目录中。

17.126. uidfix

可能的参数:(无)

更改构建系统的一些默认行为(主要是变量),以允许以普通用户身份安装该 Port。在使用 USES=fakeroot 或补丁之前,请先尝试此方法。

17.127. uniquefiles

可能的参数:(无),dirs

通过添加前缀或后缀使文件或目录“唯一”。如果使用 dirs 参数,Port 需要一个基于 UNIQUE_PREFIX 的前缀(且仅需前缀),适用于标准目录 DOCSDIREXAMPLESDIRDATADIRWWWDIRETCDIR。以下变量可供 Port 使用:

  • UNIQUE_PREFIX:用于目录和文件的前缀。默认值:${PKGNAMEPREFIX}

  • UNIQUE_PREFIX_FILES:需要添加前缀的文件列表。默认值:空。

  • UNIQUE_SUFFIX:用于文件的后缀。默认值:${PKGNAMESUFFIX}

  • UNIQUE_SUFFIX_FILES:需要添加后缀的文件列表。默认值:空。

17.128. vala

可能的参数:buildlibno_depend

添加对 lang/vala 的构建或库依赖。no_depend 参数保留给 lang/vala 本身。

17.129. varnish

可能的参数:4(默认),67

处理 Varnish Cache 的依赖关系。添加对 www/varnish* 的依赖。

17.130. waf

可能的参数:(无)

为使用 waf 构建系统的 Ports 提供支持。

它意味着 USES=python:build

以下变量会被导出以供 Port 使用:

WAF_CMDwaf 脚本的位置。如果 waf 脚本不在 WRKSRC/waf 中,请设置此项。

CONFIGURE_TARGETConfigure 目标。默认值:configure

ALL_TARGETAll 目标。默认值:build

INSTALL_TARGETInstall 目标。默认值:install

17.131. webplugin

可能的参数:(无),ARGS

自动为支持 webplugin 框架的每个应用程序创建和删除符号链接。ARGS 可以是以下之一:

  • gecko:支持基于 Gecko 的插件

  • native:支持 Gecko、Opera 和 WebKit-GTK 插件

  • linux:支持 Linux 插件

  • all(默认,隐式):支持所有插件类型

  • (单独的条目):仅支持列出的浏览器

以下变量可以调整:

  • WEBPLUGIN_FILES:没有默认值,必须手动设置。要安装的插件文件。

  • WEBPLUGIN_DIR:安装插件文件的目录,默认值 PREFIX/lib/browser_plugins/WEBPLUGIN_NAME。如果 Port 安装插件文件到默认目录以外的地方,请设置此项,以避免损坏的符号链接。

  • WEBPLUGIN_NAME:安装插件文件的最终目录,默认值 PKGBASE

17.132. xfce

可能的参数:(无),gtk2

为 Xfce 相关 Ports 提供支持。有关详细信息,请参阅 使用 Xfce

gtk2 参数指定该 Port 需要 GTK2 支持。它添加了一些核心组件提供的额外功能,例如 x11/libxfce4menux11-wm/xfce4-panel

17.133. xorg

可能的参数:(无)

提供一种简便的方法来依赖 X.org 组件。这些组件应列在 USE_XORG 中。可用的组件有:

表 1. 可用的 X.Org 组件

名称
描述

dmx

DMX 扩展库

fontenc

字体编码库

fontutil

在目录中创建 X 字体文件的索引

ice

X11 的客户端交换库

libfs

FS 库

pciaccess

通用 PCI 访问库

pixman

低级像素操作库

sm

X11 会话管理库

x11

X11 库

xau

X11 身份验证协议库

xaw

X Athena 小部件库

xaw6

X Athena 小部件库

xaw7

X Athena 小部件库

xbitmaps

X.Org 位图数据

xcb

X 协议 C 语言绑定 (XCB) 库

xcomposite

X 复合扩展库

xcursor

X 客户端光标加载库

xdamage

X 损坏扩展库

xdmcp

X 显示管理器控制协议库

xext

X11 扩展库

xfixes

X 修复扩展库

xfont

X 字体库

xfont2

X 字体库

xft

客户端字体 API,用于 X 应用程序

xi

X 输入扩展库

xinerama

X11 Xinerama 库

xkbfile

XKB 文件库

xmu

X 杂项实用程序库

xmuu

X 杂项实用程序库

xorg-macros

X.Org 开发 aclocal 宏

xorg-server

X.Org X 服务器及相关程序

xorgproto

Xorg 协议头文件

xpm

X Pixmap 库

xpresent

X Present 扩展库

xrandr

X 调整大小和旋转扩展库

xrender

X 渲染扩展库

xres

X 资源使用库

xscrnsaver

XScrnSaver 库

xshmfence

共享内存“SyncFence”同步原语

xt

X 工具包库

xtrans

X 的抽象网络代码

xtst

X 测试扩展

xv

X 视频扩展库

xvmc

X 视频扩展运动补偿库

xxf86dga

X DGA 扩展

xxf86vm

X Vidmode 扩展

17.134. xorg-cat

可能的参数:appdatadocdriverfontlibprotoutilxserver 和(无)或单独的 autotools(默认),meson

提供对构建 Xorg 组件的支持。它会设置所需的常见依赖项和适当的配置环境。此选项仅适用于 Xorg 组件。

类别必须与上游类别匹配。

第二个参数是要使用的构建系统。默认是 autotools,但也支持 meson。

17.135. zig

可能的参数:(无)

为构建基于 lang/zig 的 Port 提供支持。

该框架向 Port 公开以下变量:

ZIG_TUPLE:构建 Port 所需的 zig 依赖列表。每个条目是一个三元组,包含名称、URL 和预期找到依赖项的目录。这些三元组可以通过运行以下命令生成:

17.136. zip

可能的参数:(无),infozip

指示分发文件使用 ZIP 压缩算法。对于使用 InfoZip 算法的文件,必须传递 infozip 参数以设置适当的依赖关系。

最后更新于