第 17 章 使用 USES 宏

17.1. USES 简介

USES 宏可以轻松声明端口的要求和设置。它们可以通过选择简单的预设值来添加依赖项、更改构建行为、向软件包添加元数据等等。

本章的每个部分都描述了 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/p7zip 中的 7z。如果使用了 partial 选项,则不会更改 EXTRACT_SUFX,如果主发行版文件没有 .7z 扩展名,则可以使用此选项。

17.3. ada

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

依赖于支持 Ada 的编译器,并相应地设置 CC。默认为使用端口中的 gcc6-aux

17.4. 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.5. blaslapack

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

添加对 Blas/Lapack 库的依赖项。

17.6. bdb

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

添加对 Berkeley DB 库的依赖项。默认为 databases/db5。当使用 :48 参数时,它也可以依赖于 databases/db48,或者使用 :6 依赖于 databases/db6。可以声明一系列可接受的值,:48+ 查找安装的最高版本,如果未安装其他版本,则回退到 4.8。INVALID_BDB_VER 可用于指定与此端口不兼容的版本。框架向端口公开了以下变量

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:48+ 并且安装了 Berkeley DB 5,则它包含 5

databases/db48 已弃用且不受支持。任何端口都不得使用它。

17.7. bison

可能的参数:(无),buildrunboth

使用 devel/bison。默认情况下,如果没有参数或使用 build 参数,则表示 bison 是构建时依赖项,run 表示运行时依赖项,both 表示运行时和构建时依赖项。

17.8. budgie

可能的参数:(无)

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

17.9. cabal

不应为 Haskell 库创建端口,有关更多信息,请参阅 Haskell 库

可能的参数:(无),hpacknodefault

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

框架提供了以下变量

CABAL_REVISION

托管在 Hackage 上的 Haskell 软件包可能具有修订版。将此旋钮设置为整数以提取修订后的软件包描述。

USE_CABAL

如果软件使用 Haskell 依赖项,请在此变量中列出它们。每个项目都应该存在于 Hackage 上,并以 packagename-0.1.2 的形式列出。依赖项也可以具有修订版,这些修订版在 _ 符号之后指定。支持自动生成依赖项列表,请参阅 使用 cabal 构建 Haskell 应用程序

CABAL_FLAGS

在配置和构建阶段传递给 cabal-install 的标志列表。这些标志将逐字传递。此变量通常用于启用或禁用 .cabal 文件中声明的标志。传递 foo 以启用 foo 标志,传递 -foo 以禁用它。

CABAL_EXECUTABLES

端口安装的可执行文件列表。默认值:${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 文件,该文件也由端口框架生成。如果是这种情况,请使用此变量指定如何处理原始 cabal.project。将此变量设置为 remove 将导致删除原始文件。将此变量设置为 append

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

  2. patch 阶段之后将原始 cabal.project.${PORTNAME} 和生成的 cabal.project 合并到一个文件中。使用 append 可以对原始文件进行修补,然后再将其合并。

17.10. cargo

可能的参数:(无)

使用 Cargo 进行配置、构建和测试。它可用于移植使用 Cargo 构建系统的 Rust 应用程序。有关更多信息,请参阅 使用 cargo 构建 Rust 应用程序

17.11. charsetfix

可能的参数:(无)

防止端口安装 charset.alias。这只能由 converters/libiconv 安装。如果 charset.alias 不是由 ${WRKSRC}/Makefile.in 安装的,则可以将 CHARSETFIX_MAKEFILEIN 设置为相对于 WRKSRC 的路径。

17.12. cmake

可能的参数:(无),insourcenoninjaruntesting

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

默认情况下,执行源外构建,使 WRKSRC 中的源代码免受构建工件的影响。使用 insource 参数,将改为执行源内构建。此参数应为例外情况,仅在常规源外构建不起作用时使用。

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

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

使用 testing 参数,将添加一个使用 CTest 的测试目标。运行测试时,端口将重新配置以进行测试并重新构建。

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

17.13. compiler

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

根据任何给定的愿望确定要使用的编译器。如果端口需要支持 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。如果端口需要理解 C++0X、C11 或嵌套函数的编译器,则应使用相应的参数。

使用 features 请求默认编译器支持的功能列表。包含 bsd.port.pre.mk 后,端口可以使用以下变量检查结果

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

  • ALT_COMPILER_TYPE:系统上的备用编译器,gcc 或 clang。仅当基础系统中存在两个编译器时才设置。

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

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

  • CHOSEN_COMPILER_TYPE:选择的编译器,要么是 gcc 要么是 clang。

  • COMPILER_FEATURES:默认编译器支持的功能。目前列出了 C++ 库。

17.14. cpe

可能的参数:(无)

在软件包清单中包含通用平台枚举 (CPE) 信息,格式为 CPE 2.3 格式的字符串。有关详细信息,请参阅CPE 规范。要向端口添加 CPE 信息,请按照以下步骤操作

  1. 使用 NVD 的CPE 搜索引擎官方 CPE 词典(警告,非常大的 XML 文件)搜索软件产品的官方 CPE 条目。切勿捏造 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以获取更多详细信息,或联系端口安全团队 <[email protected]>。

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

  9. 始终运行make -V CPE_STR并检查输出,然后再提交任何更改PORTNAMEPORTVERSION或任何其他用于派生CPE_STR的变量的操作。

17.15. cran

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

使用综合 R 档案网络。指定auto-plist来自动生成pkg-plist。如果端口具有需要编译的代码,请指定compiles

17.16. desktop-file-utils

可能的参数:(无)

使用来自devel/desktop-file-utils的 update-desktop-database。将运行一个额外的安装后步骤,而不会干扰端口Makefile中已有的任何安装后步骤。一行带有@desktop-file-utils将添加到 plist 中。仅当端口提供包含MimeType条目的.desktop文件时,才使用此宏。

17.17. desthack

可能的参数:(无)

更改 GNU configure 的行为,以便在原始软件不支持的情况下正确支持DESTDIR

17.18. display

可能的参数:(无)、ARGS

设置虚拟显示环境。如果环境变量DISPLAY未设置,则 Xvfb 将作为构建依赖项添加,并且CONFIGURE_ENV将扩展为当前正在运行的 Xvfb 实例的端口号。ARGS参数默认为install,并控制围绕其启动和停止虚拟显示的阶段。

17.19. dos2unix

可能的参数:(无)

该端口具有行尾为 DOS 格式的文件,需要进行转换。可以设置多个变量来控制将转换哪些文件。默认情况下,将转换所有文件,包括二进制文件。有关示例,请参阅简单的自动替换

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

  • DOS2UNIX_FILES:匹配文字文件名。

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

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

17.20. drupal

可能的参数:7moduletheme

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

17.21. ebur128

可能的参数:(无)、buildlibruntest

添加对audio/ebur128的依赖。它允许通过在make.conf中使用DEFAULT_VERSIONS来透明地依赖于rustlegacy变体。例如,要使用旧版本,请使用DEFAULT_VERSIONS+=ebur128=legacy

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

17.22. eigen

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

添加对math/eigen的依赖。

17.23. elfctl

可能的参数:(无)

通过设置 ELF_FEATURES 更改 ELF 二进制文件的特征控制注释。

示例 5. Uses=elfctl
USES=           elfctl
ELF_FEATURES=	featurelist:path/to/file1 \
		featurelist:path/to/file1 \
		featurelist:path/to/file2

featurelist的格式在elfctl(1)中描述。文件路径相对于${BUILD_WRKSRC}。

17.24. erlang

可能的参数:(无)、encrebarrebar3

添加对lang/erlang的构建和运行时依赖。根据参数的不同,它会添加其他构建依赖项。enc添加对devel/erlang-native-compiler的依赖,rebar添加对devel/rebar的依赖,而rebar3添加对devel/rebar3的依赖。

此外,以下变量可用于端口

  • ERL_APP_NAME:安装在 Erlang 的 lib 目录中的 Erlang 应用名称(不含版本)

  • ERL_APP_ROOT:此 Erlang 应用的根目录

  • REBAR_CMD:“rebar”命令的路径

  • REBAR3_CMD:“rebar3”命令的路径

  • REBAR_PROFILE:Rebar 配置文件

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

  • ERL_BUILD_NAME:rebar3 的构建名称

  • ERL_BUILD_DEPS:以类别/端口名称格式列出的 BUILD_DEPENDS

  • ERL_RUN_DEPS:以类别/端口名称格式列出的 RUN_DEPENDS

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

17.25. fakeroot

可能的参数:(无)

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

17.26. fam

可能的参数:(无)、famgamin

使用文件更改监视器作为库依赖项,无论是devel/fam还是devel/gamin。最终用户可以设置 WITH_FAM_SYSTEM 来指定他们的偏好。

17.27. firebird

可能的参数:(无)、25

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

17.28. fonts

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

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

17.29. fortran

可能的参数:gcc(默认)

使用 GNU Fortran 编译器。

17.30. fuse

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

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

17.31. gem

可能的参数:(无)、noautoplist

处理使用 RubyGems 进行构建。如果使用noautoplist,则不会自动生成打包列表。

这意味着USES=ruby

17.32. gettext

可能的参数:(无)

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

17.33. gettext-runtime

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

使用devel/gettext-runtime。默认情况下,在没有参数或使用lib参数时,意味着对libintl.so的库依赖。buildrun分别意味着对gettext的构建时和运行时依赖。

17.34. gettext-tools

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

使用devel/gettext-tools。默认情况下,在没有参数或使用build参数时,将注册对msgfmt的构建时依赖。使用run参数时,将注册运行时依赖。

17.35. ghostscript

可能的参数:Xbuildrunnox11

可以使用特定的版本X。可能的版本为789agpl(默认)。nox11表示需要端口的-nox11版本。buildrun分别添加对 Ghostscript 的构建时和运行时依赖。默认情况下,同时存在构建时和运行时依赖。

17.36. 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.37. gmake

可能的参数:(无)

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

17.38. gnome

可能的参数:(无)

提供了一种简单的方法来依赖 GNOME 组件。这些组件应该列在 USE_GNOME 中。可用的组件包括:

  • atk

  • atkmm

  • cairo

  • cairomm

  • dconf

  • esound

  • evolutiondataserver3

  • gconf2

  • gconfmm26

  • gdkpixbuf

  • gdkpixbuf2

  • glib12

  • glib20

  • glibmm

  • gnomecontrolcenter3

  • gnomedesktop3

  • 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 进行更改。例如:

USES=		gnome
USE_GNOME=	gnomemenus3:build intlhack

更多信息请参见 使用 GNOME

17.39. go

不应为 Go 库创建端口,更多信息请参见 Go 库

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

设置用于构建 Go 软件的默认值和目标。添加了对 Go 编译器端口的构建时依赖项,端口维护者可以设置所需版本。默认情况下,构建在 GOPATH 模式下执行。如果 Go 软件使用模块,则可以通过 modules 参数切换到模块感知模式。no_targets 将设置构建环境(如 GO_ENVGO_BUILDFLAGS),但跳过创建提取和构建目标。run 还将添加对 Go 编译器端口的运行时依赖项。

构建过程由几个变量控制

GO_MODULE

应用程序模块的名称,由 go.mod 中的 module 指令指定。在大多数情况下,这是使用 Go 模块的端口唯一需要的变量。

GO_PKGNAME

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

GO_TARGET

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

GO_TESTTARGET

要测试的包。默认值为 ./…​(当前包和所有子包)。

CGO_CFLAGS

要由 go 传递给 C 编译器的其他 CFLAGS 值。

CGO_LDFLAGS

要由 go 传递给 C 编译器的其他 LDFLAGS 值。

GO_BUILDFLAGS

要传递给 go build 的其他构建参数。

GO_TESTFLAGS

要传递给 go test 的其他构建参数。

有关用法示例,请参见 构建 Go 应用程序

17.40. gperf

可能的参数:(无)

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

17.41. grantlee

可能的参数:5selfbuild

处理对 Grantlee 的依赖关系。指定 5 以依赖于基于 Qt5 的版本,devel/grantlee5selfbuilddevel/grantlee5 内部使用以获取其版本号。

17.42. groff

可能的参数:buildrunboth

如果基本系统中不存在,则注册对 textproc/groff 的依赖关系。

17.43. gssapi

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

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

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

这些变量导出供端口使用

  • GSSAPIBASEDIR

  • GSSAPICPPFLAGS

  • GSSAPIINCDIR

  • GSSAPILDFLAGS

  • GSSAPILIBDIR

  • GSSAPILIBS

  • GSSAPI_CONFIGURE_ARGS

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

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

示例 6. 典型用法
OPTIONS_SINGLE=	GSSAPI
OPTIONS_SINGLE_GSSAPI=	GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE

GSSAPI_BASE_USES=	gssapi
GSSAPI_BASE_CONFIGURE_ON=	--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
GSSAPI_HEIMDAL_USES=	gssapi:heimdal
GSSAPI_HEIMDAL_CONFIGURE_ON=	--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
GSSAPI_MIT_USES=	gssapi:mit
GSSAPI_MIT_CONFIGURE_ON=	--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
GSSAPI_NONE_CONFIGURE_ON=	--without-gssapi

17.44. 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.45. guile

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

添加对 Guile 的依赖关系。默认情况下,这是一个对相应 libguile*.so 的库依赖关系,除非被 build 和/或 run 选项覆盖。alias 选项适当地配置 BINARY_ALIAS(参见 使用 BINARY_ALIAS)。

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

使用 Guile 的应用程序通常仅针对单个 Guile 版本构建。但是,扩展或库模块应使用 flavors 选项与多个版本一起构建。

更多信息请参见 使用 Guile

17.46. horde

可能的参数:(无)

添加对 devel/pear-channel-horde 的构建时和运行时依赖关系。其他 Horde 依赖项可以通过 USE_HORDE_BUILDUSE_HORDE_RUN 添加。更多信息请参见 Horde 模块

17.47. iconv

可能的参数: (无),libbuildpatchtranslitwchar_t

使用 iconv 函数,可以作为构建时和运行时依赖项来自端口 converters/libiconv,也可以来自基本系统。默认情况下,无参数或使用 lib 参数表示 iconv 具有构建时和运行时依赖项。build 表示构建时依赖项,patch 表示修补时依赖项。如果端口使用 WCHAR_T//TRANSLIT iconv 扩展,请添加相关参数以使用正确的 iconv。更多信息请参见 使用 iconv

17.48. imake

可能的参数: (无),envnotallnoman

添加 devel/imake 作为构建时依赖项,并在 configure 阶段运行 xmkmf -a。如果给定 env 参数,则不设置 configure 目标。如果 -a 标志对端口有影响,请添加 notall 参数。如果 xmkmf 未生成 install.man 目标,请添加 noman 参数。

17.49. kde

可能的参数:5

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

17.50. kmod

可能的参数: (无),debug

填写内核模块端口的样板,目前

  • 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参数,则端口可以将模块的调试版本安装到KERN_DEBUGDIR/KMODDIR中。默认情况下,KERN_DEBUGDIRDEBUGDIR复制,并设置为/usr/lib/debug。框架将负责创建和删除任何所需的目录。

17.51. ldap

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

注册对net/openldap的依赖关系。如果设置了,它使用特定的<version>(没有点符号)。否则,它会尝试查找当前安装的版本。如有必要,它将回退到bsd.default-versions.mk中找到的默认版本。client指定对客户端库的运行时依赖关系。这也是默认值。server指定对服务器的运行时依赖关系。

以下变量可供端口访问

IGNORE_WITH_OPENLDAP

如果端口不支持一个或多个版本的OpenLDAP,则可以定义此变量。

WITH_OPENLDAP_VER

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

OPENLDAP_VER

检测到的OpenLDAP版本。

17.52. lha

可能的参数:(无)

EXTRACT_SUFX设置为.lzh

17.53. libarchive

可能的参数:(无)

注册对archivers/libarchive的依赖关系。任何依赖于libarchive的端口都必须包含USES=libarchive

17.54. libedit

可能的参数:(无)

注册对devel/libedit的依赖关系。任何依赖于libedit的端口都必须包含USES=libedit

17.55. libtool

可能的参数:(无),keeplabuild

修补libtool脚本。这必须添加到所有使用libtool的端口中。keepla参数可用于保留.la文件。某些端口不附带自己的libtool副本,并且需要对devel/libtool的构建时依赖关系,使用:build参数添加此类依赖关系。

17.56. linux

可能的参数:c6c7

端口Linux兼容性框架。指定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.57. llvm

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

添加对LLVM的依赖关系。默认情况下,这是构建时依赖关系,除非被runlib选项覆盖。默认版本是在LLVM_DEFAULT中设置的。也可以指定特定版本。最小和最大版本可以通过minmax参数分别指定。端口框架将以下变量导出到端口

LLVM_VERSION

从llvm.mk的参数中选择的版本

LLVM_PORT

选择的llvm端口

LLVM_CONFIG

所选端口的llvm-config

LLVM_LIBLLVM

所选端口的libLLVM.so

LLVM_PREFIX

所选端口的安装前缀

17.58. localbase

可能的参数:(无),ldflags

确保使用LOCALBASE中依赖项的库,而不是基础系统中的库。指定ldflags以将-L${LOCALBASE}/lib添加到LDFLAGS而不是LIBS。依赖于基础系统中也存在的库的端口应该使用此功能。它也由其他一些USES内部使用。

17.59. lua

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

添加对Lua的依赖关系。默认情况下,这是库依赖关系,除非被build和/或run选项覆盖。env选项阻止添加任何依赖关系,同时仍然定义所有常用的变量。

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

使用Lua的应用程序通常仅针对单个Lua版本构建。但是,旨在由Lua代码加载的库模块应使用module选项与多个风格一起构建。

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

17.60. luajit

可能的参数:(无),X

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

在包含bsd.port.options.mkbsd.port.pre.mk之后,端口可以检查这些变量

LUAJIT_VER

选定的luajit版本

LUAJIT_INCDIR

luajit头文件的路径

LUAJIT_LUAVER

选择了哪个luajit规范版本(luajit为2.0,否则为2.1)

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

17.61. lxqt

可能的参数:(无)

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

17.62. magick

可能的参数:(无),Xbuildnox11runtest

添加对ImageMagick的库依赖关系。可以使用特定版本X。可能的版本是67(默认值)。nox11表示需要端口的-nox11版本。buildruntest添加对ImageMagick的构建时、运行时和测试时依赖关系。

17.63. makeinfo

可能的参数:(无)

如果基础系统中不存在makeinfo,则添加对它的构建时依赖关系。

17.64. makeself

可能的参数:(无)

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

17.65. 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 进行更改。例如:

USES=		mate
USE_MATE=	menus:build intlhack

17.66. meson

可能的参数:(无)

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

17.67. metaport

可能的参数:(无)

设置以下变量,以便于创建元端口:MASTER_SITESDISTFILESEXTRACT_ONLYNO_BUILDNO_INSTALLNO_MTREENO_ARCH

17.68. minizip

可能的参数:(无),ng

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

17.69. mysql

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

提供对MySQL的支持如果未给出版本,则尝试查找当前安装的版本。回退到默认版本MySQL-5.6。可能的版本是5555m55p5656p56w5757p80100m101m102mmp后缀分别用于MariaDB和Percona版本的MySQL。serverembedded添加对MySQL服务器的构建时和运行时依赖关系。当使用serverembedded时,添加client以也添加对libmysqlclient.so的依赖关系。如果某些版本不受支持,则端口可以设置IGNORE_WITH_MYSQL

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

17.70. mono

可能的参数:(无),nuget

通过设置相应的依赖关系,添加对Mono(目前仅限C#)框架的依赖关系。

当端口使用nuget包时,指定nugetNUGET_DEPENDS需要使用nuget包的名称和版本以name=version的格式设置。可以使用name=version:_origin_添加可选的包来源。

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

17.71. 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.72. ncurses

可能的参数:(无),baseport

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

17.73. nextcloud

可能的参数:(无)

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

17.74. ninja

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

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

17.75. nodejs

可能的参数:(无),buildruncurrentlts10141617

使用 nodejs。添加对 www/node* 的依赖。如果指定了受支持的版本,则也必须指定 run 和/或 build

17.76. objc

可能的参数:(无)

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

17.77. octave

可能的参数:(无),env

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

17.78. openal

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

使用 OpenAL。可以指定后端,软件实现为默认值。用户可以使用 WANT_OPENAL 指定首选后端。此旋钮的有效值为 soft(默认值)和 si

17.79. pathfix

可能的参数:(无)

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

如果端口 USES=cmake,它将在 PATHFIX_WRKSRC 中查找 CMakeLists.txt。如果需要,可以使用 PATHFIX_CMAKELISTSTXT 更改此默认文件名。

17.80. pear

可能的参数:env

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

17.81. perl5

可能的参数:(无)

依赖于 Perl。配置是使用 USE_PERL5 完成的。

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

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

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

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

17.82. pgsql

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

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

默认情况下,添加的依赖项将是客户端,但如果端口需要其他组件,则可以使用 WANT_PGSQL=component[:target] 完成;例如,WANT_PGSQL=server:configure pltcl plperl。可用的组件是

  • client

  • contrib

  • docs

  • pgtcl

  • plperl

  • plpython

  • pltcl

  • server

17.83. php

可能的参数:(无),phpizeextzendbuildclicgimodwebembedpeclflavorsnoflavors

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

phpize

用于构建 PHP 扩展。启用风格。

ext

用于构建、安装和注册 PHP 扩展。启用风格。

zend

用于构建、安装和注册 Zend 扩展。启用风格。

build

将 PHP 也设置为构建时依赖项。

cli

需要 PHP 的 CLI 版本。

cgi

需要 PHP 的 CGI 版本。

mod

需要 PHP 的 Apache 模块。

web

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

embed

需要 PHP 的嵌入式库版本。

pecl

提供从 PECL 存储库获取 PHP 扩展的默认值。启用风格。

flavors

启用自动 PHP 风格 生成。将为所有 PHP 版本生成风格,除了 IGNORE_WITH_PHP 中存在的版本。

noflavors

禁用自动 PHP 风格生成。*必须仅*与 PHP 本身提供的扩展一起使用。

变量用于指定需要哪些 PHP 模块,以及支持哪些版本的 PHP。

USE_PHP

运行时所需 PHP 扩展的列表。将 :build 添加到扩展名以添加构建时依赖项。例如:pcre xml:build gettext

IGNORE_WITH_PHP

该端口不适用于给定版本的 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 的扩展之后加载。在这种情况下,在端口的 Makefile 中添加 PHP_MOD_PRIO=XX。例如

USES=		php:ext
USE_PHP=	wddx
PHP_MOD_PRIO=	40

这些变量可用于 PKGNAMEPREFIXPKGNAMESUFFIX

PHP_PKGNAMEPREFIX

包含 php_XY_-,其中 XY 是当前风格的 PHP 版本。与 PHP 扩展和模块一起使用。

PHP_PKGNAMESUFFIX

包含 -php_XY_,其中 XY 是当前风格的 PHP 版本。与 PHP 应用程序一起使用。

PECL_PKGNAMEPREFIX

包含 php_XY_-pecl-,其中 XY 是当前风格的 PHP 版本。与 PECL 模块一起使用。

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

17.84. pkgconfig

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

使用 devel/pkgconf。在没有参数或使用 build 参数的情况下,它表示 pkg-config 作为构建时依赖项。run 表示运行时依赖项,both 表示运行时和构建时依赖项。

17.85. pure

可能的参数:(无),ffi

使用 lang/pure。主要用于构建相关的 pure 端口。使用 ffi 参数,它表示 devel/pure-ffi 作为运行时依赖项。

17.86. pyqt

可能的参数:(无),45

使用 PyQt。如果端口是 PyQT 本身的一部分,请设置 PYQT_DIST。使用 USE_PYQT 选择端口需要的组件。可用的组件是

  • 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。例如

USES=		pyqt
USE_PYQT=	core doc_build designer_run

17.87. pytest

可能的参数:(无),4

引入对devel/pytest的新依赖关系。它定义了一个do-test目标,该目标将正确运行测试。使用参数依赖于特定的devel/pytest版本。对于使用devel/pytest的端口,请考虑使用此方法代替特定的do-test目标。该框架向端口公开以下变量

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.88. python

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

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

当需要框架导出的变量但不需要对 Python 的依赖关系时,可以使用USES=python:env。当与USES=shebangfix一起使用时,可能会发生这种情况,并且目标只是修复 Shebang,而不是添加对 Python 的依赖关系。

17.89. qmail

可能的参数:(无),buildrunbothvars

使用mail/qmail。使用build参数,意味着qmail作为构建时依赖项。run意味着运行时依赖项。不使用参数或使用both参数意味着运行时和构建时依赖项。vars将仅为端口设置 QMAIL 变量以供使用。

17.90. qmake

可能的参数:(无),norecursiveoutsourceno_envno_configure

使用 QMake 进行配置。有关更多信息,请参阅使用qmake

17.91. qt

可能的参数:56no_env

添加对 Qt 组件的依赖关系。no_env直接传递到USES= qmake。有关更多信息,请参阅使用 Qt

17.92. qt-dist

可能的参数:(无) 或 5 和 (无) 或 6 和 (无) 或 3d5compatbasechartsconnectivitydatavis3ddeclarativedoc languageservergamepadgraphicaleffectsimageformatslocat ionlottiemultimedianetworkauthpositioningquick3dquickcontrols2quickcontrolsquicktimelineremoteobjectsscriptscxmlsensorsserialbusserialportshadertoolsspeechsvgtoolstranslationsvirtualkeyboardwaylandwebchannelwebenginewebglpluginwebsocketswebviewx11extrasxmlpatterns 中的一个。

提供对构建 Qt 5 和 Qt 6 组件的支持。它负责为端口设置适当的配置环境以进行构建。

示例 7. 构建 Qt 5 组件

该端口是 Qt 5 的networkauth组件,它是networkauth分发文件的一部分。

PORTNAME=	networkauth
DISTVERSION=	${QT5_VERSION}

USES=		qt-dist:5
示例 8. 构建 Qt 6 组件

该端口是 Qt 6 的websockets组件,它是websockets分发文件的一部分。

PORTNAME=       websockets
PORTVERSION=    ${QT6_VERSION}

USES=           qt-dist:6

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

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

该端口是 Qt 5 的gui组件,它是base分发文件的一部分。

PORTNAME=	gui
DISTVERSION=	${QT5_VERSION}

USES=		qt-dist:5,base

17.93. readline

可能的参数:(无),port

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

17.94. ruby

可能的参数:(无),buildextconfrunsetup

为 Ruby 相关的端口提供支持。不带参数的(none)添加对lang/ruby的运行时依赖关系。build添加对lang/ruby的构建时依赖关系。extconf表示该端口使用 extconf.rb 进行配置。run添加对lang/ruby的运行时依赖关系。这也是默认值。setup表示该端口使用 setup.rb 进行配置和构建。

用户可能已定义以下变量

RUBY_VER

ruby 的替代简短版本,形式为`x.y`。

RUBY_DEFAULT_VER

设置为(例如)2.7以使用ruby27作为默认版本。

RUBY_ARCH

设置体系结构名称(例如 i386-freebsd7)。

以下变量导出供端口使用

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.95. samba

可能的参数:buildenvlibrun

处理对 Samba 的依赖关系。env不会添加任何依赖关系,只会设置变量。buildrun将添加对smbd的构建时和运行时依赖关系。lib将添加对libsmbclient.so的依赖关系。导出的变量为

SAMBA_PORT

默认 Samba 端口的来源。

SAMBA_INCLUDEDIR

Samba 头文件的位置。

SAMBA_LIBS

Samba 共享库可用的目录。

SAMBA_LDB_PORT

所选 Samba 版本使用的 ldb 端口的来源(例如,databases/ldb28)。如果端口需要依赖于与所选 Samba 版本相同的 ldb 版本,则应使用它。

17.96. scons

可能的参数:(无)

提供对使用devel/scons的支持。有关更多信息,请参阅使用scons

17.97. shared-mime-info

可能的参数:(无)

使用来自misc/shared-mime-info的 update-mime-database。此用途将自动添加一个安装后步骤,以便端口本身仍然可以在需要时指定自己的安装后步骤。它还会在 plist 中添加一个@shared-mime-info条目。

17.98. shebangfix

可能的参数:(无)

许多软件对脚本解释器使用了不正确的位置,最显著的是/usr/bin/perl/bin/bash。shebangfix 宏修复了SHEBANG_REGEXSHEBANG_GLOBSHEBANG_FILES中列出的脚本中的 Shebang 行。

SHEBANG_REGEX

包含一个扩展正则表达式,并与find(1)-iregex参数一起使用。请参阅带有SHEBANG_REGEXUSESshebangfix

SHEBANG_GLOB

包含与find(1)-name参数一起使用的模式列表。请参阅带有SHEBANG_GLOBUSESshebangfix

SHEBANG_FILES

包含文件或sh(1)通配符。shebangfix 宏从${WRKSRC}运行,因此SHEBANG_FILES可以包含相对于${WRKSRC}的路径。如果${WRKSRC}外部的文件需要修补,它也可以处理绝对路径。请参阅带有SHEBANG_FILESUSESshebangfix

目前,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。例如

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

如果它尚未定义,并且_interpOLD_CMD_interpCMD没有默认值,则可以将 Ksh 条目定义为

SHEBANG_LANG=	ksh
ksh_OLD_CMD=	"/usr/bin/env ksh" /bin/ksh /usr/bin/ksh
ksh_CMD=	${LOCALBASE}/bin/ksh
示例 12. 添加解释器的奇怪位置

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

python_OLD_CMD=	/opt/bin/python2.7
示例 13. 使用SHEBANG_REGEXUSES=shebangfix

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

USES=	shebangfix
SHEBANG_REGEX=	./scripts/.*\.(sh|pl|cgi)

SHEBANG_REGEX通过运行find -E来使用,后者也使用现代正则表达式,也称为扩展正则表达式。有关更多信息,请参阅re_format(7)

示例 14. 使用SHEBANG_GLOBUSES=shebangfix

要修复${WRKSRC}中以.pl.sh结尾的所有文件,请执行以下操作

USES=	shebangfix
SHEBANG_GLOB=	*.sh *.pl
示例 15. 使用SHEBANG_FILESUSES=shebangfix

要修复${WRKSRC}中的script/foobar.plscript/*.sh文件,请执行以下操作

USES=	shebangfix
SHEBANG_FILES=	scripts/foobar.pl scripts/*.sh

17.99. sqlite

可能的参数:(无)、23

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

17.100. ssl

可能的参数:(无)、buildrun

提供对 OpenSSL 的支持。可以使用buildrun指定仅构建或运行时的依赖关系。这些变量可供端口使用,它们也会添加到MAKE_ENV

OPENSSLBASE

OpenSSL 安装基路径。

OPENSSLDIR

OpenSSL 配置文件路径。

OPENSSLLIB

OpenSSL 库路径。

OPENSSLINC

OpenSSL 包含文件路径。

OPENSSLRPATH

如果已定义,则链接器需要用来查找 OpenSSL 库的路径。

如果端口无法使用 OpenSSL 版本构建,请设置BROKEN_SSL变量,并可能设置BROKEN_SSL_REASON__flavor_

BROKEN_SSL=	libressl
BROKEN_SSL_REASON_libressl=	needs features only available in OpenSSL

17.101. tar

可能的参数:(无)、Zbz2bzip2lzmatbztbz2tgztxzxzzstzstd

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

17.102. tcl

可能的参数:versionwrapperbuildruntea

添加对 Tcl 的依赖关系。可以使用version请求特定的版本。版本可以为空,一个或多个精确版本号(当前为848586),或最小版本号(当前为84+85+86+)。要仅请求非特定版本的包装器,请使用wrapper。可以使用buildrun指定仅构建或运行时的依赖关系。要使用 Tcl Extension Architecture 构建端口,请使用tea。包含bsd.port.pre.mk后,端口可以使用以下变量检查结果

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

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

  • TCL_LIBDIR:Tcl 库的路径

  • TCL_INCLUDEDIR:Tcl C 头文件的路径

  • TCL_PKG_LIB_PREFIX:库前缀,根据 TIP595

  • TCL_PKG_STUB_POSTFIX:存根库后缀

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

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

  • TK_LIBDIR:Tk 库的路径

  • TK_INCLUDEDIR:Tk C 头文件的路径

17.103. terminfo

可能的参数:(无)

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

17.104. tex

可能的参数:(无)

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

变量用于指定需要哪些 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.105. tk

tcl的参数相同

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

17.106. uidfix

可能的参数:(无)

更改构建系统的一些默认行为(主要是变量),以允许将此端口作为普通用户安装。在使用USES=fakeroot或修补之前,请在端口中尝试此操作。

17.107. uniquefiles

可能的参数:(无)、dirs

通过添加前缀或后缀使文件或目录“唯一”。如果使用dirs参数,则端口需要基于UNIQUE_PREFIX的前缀(并且仅为前缀),用于标准目录DOCSDIREXAMPLESDIRDATADIRWWWDIRETCDIR。这些变量可供端口使用

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

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

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

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

17.108. vala

可能的参数:buildlibno_depend

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

17.109. varnish

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

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

17.110. webplugin

可能的参数:(无)、ARGS

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

  • gecko:支持基于 Gecko 的插件

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

  • linux:支持 Linux 插件

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

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

这些变量可以调整

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

  • WEBPLUGIN_DIR:要将插件文件安装到的目录,默认为PREFIX/lib/browser_plugins/WEBPLUGIN_NAME。如果端口在默认目录之外安装插件文件,请设置此值以防止符号链接损坏。

  • WEBPLUGIN_NAME:要将插件文件安装到的最终目录,默认为PKGBASE

17.111. xfce

可能的参数:(无)、gtk2

提供对 Xfce 相关端口的支持。有关详细信息,请参阅使用 Xfce

gtk2参数指定端口需要 GTK2 支持。它添加了某些核心组件提供的其他功能,例如,x11/libxfce4menux11-wm/xfce4-panel

17.112. xorg

可能的参数:(无)

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

表 1. 可用的 X.Org 组件
名称描述

dmx

DMX 扩展库

fontenc

fontenc 库

fontutil

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

ice

X11 的 Inter Client Exchange 库

libfs

FS 库

pciaccess

通用 PCI 访问库

pixman

底层像素操作库

sm

X11 的 Session Management 库

x11

X11 库

xau

X11 的 Authentication Protocol 库

xaw

X Athena Widgets 库

xaw6

X Athena Widgets 库

xaw7

X Athena Widgets 库

xbitmaps

X.Org 位图数据

xcb

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

xcomposite

X Composite 扩展库

xcursor

X 客户端光标加载库

xdamage

X Damage 扩展库

xdmcp

X Display Manager Control Protocol 库

xext

X11 扩展库

xfixes

X Fixes 扩展库

xfont

X 字体库

xfont2

X 字体库

xft

X 应用程序的客户端字体 API

xi

X Input 扩展库

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 Render 扩展库

xres

X 资源使用库

xscrnsaver

XScrnSaver 库

xshmfence

共享内存“SyncFence”同步原语

xt

X 工具包库

xtrans

X 的抽象网络代码

xtst

X 测试扩展

xv

X 视频扩展库

xvmc

X 视频扩展运动补偿库

xxf86dga

X DGA 扩展

xxf86vm

X Vidmode 扩展

17.113. xorg-cat

可能的参数:appdatadocdriverfontlibprotoutilxserver 和(无)或 autotools(默认)、meson 中的一个。

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

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

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

17.114. zip

可能的参数:(无)、infozip

指示发行版文件使用 ZIP 压缩算法。对于使用 InfoZip 算法的文件,必须传递 infozip 参数以设置相应的依赖项。


上次修改时间:2024 年 10 月 16 日,作者 Fernando Apesteguía