FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • FreeBSD Port 开发者手册翻译项目
  • 编辑日志
  • 译者说明
  • FreeBSD Port 开发者手册
    • FreeBSD Port 开发者手册
  • 第 1 章 简介
    • 1.1.简介
  • 第 2 章 制作新的 port
    • 2.1.制作新的 port
  • 第 3 章 简单的 port
    • 3.1.编写 Makefile
    • 3.2.编写描述文件
    • 3.3.创建校验和文件
    • 3.4.测试 port
    • 3.5.用 portlint 来检查 port
    • 3.6.提交新的 port
  • 第 4 章 复杂的 Port
    • 4.1 Port 工作原理
    • 4.2.获取源代码
    • 4.3.修改 port
    • 4.4.打补丁
    • 4.5.配置
    • 4.6.处理用户输入
  • 第 5 章 配置 Makefile
    • 5.1.原始来源
    • 5.2.命名
    • 5.3.归类
    • 5.4.源代码包文件
    • 5.5.维护者(MAINTAINER)
    • 5.6.一句话说明(COMMENT)
    • 5.7.项目网站
    • 5.8.许可证
    • 5.9.PORTSCOUT
    • 5.10.依赖
    • 5.11.从属 port 和 MASTERDIR
    • 5.12.man 手册
    • 5.13.info 文件
    • 5.14.Makefile 参数
    • 5.15.特殊的工作目录
    • 5.16.解决冲突
    • 5.17.安装文件
    • 5.18. 使用 BINARY_ALIAS 来重命名命令,而不是在编译中打补丁
  • 第 6 章 特殊情况
    • 第 6 章 特殊情况
  • 第 7 章 Flavors
    • 7.1.Flavors 简介
    • 7.2.使用 FLAVORS
    • 7.3.USES=php 和 Flavors
    • 7.4.USES=python 和 Flavors
    • 7.5.USES=lua 和 Flavors
  • 第 8 章 高级 pkg-plist 实践
    • 8.1.根据 make 变量对 pkg-plist 进行修改
    • 8.2.空目录
    • 8.3.配置文件
    • 8.4.动态与静态软件包列表
    • 8.5.自动创建软件包列表
    • 8.6.用关键词扩展软件包列表
  • 第 9 章 pkg-*
    • 9.1.pkg-message(安装二进制包时显示的消息文件)
    • 9.2.pkg-install、pkg-pre-install 和 pkg-post-install(安装二进制包时执行的脚本文件)
    • 9.3.pkg-deinstall、pkg-pre-deinstall 和 pkg-post-deinstall(卸载时执行的脚本文件)
    • 9.4.修改 pkg-* 文件的名字
    • 9.5.使用 SUB_FILES 和 SUB_LIST
  • 第 10 章 测试 port
    • 10.1.运行 make describe
    • 10.2.运行 make test
    • 10.3.Portclippy / Portfmt
    • 10.4.Portlint
    • 10.5.Port 工具
    • 10.6.PREFIX 和 DESTDIR
    • 10.7.Poudriere
    • 10.8.调试 port
  • 第 11 章 升级 port
    • 11.1.使用 Git 制作补丁
    • 11.2.UPDATING 和 MOVED
  • 第 12 章 安全
    • 12.1.安全为何如此重要
    • 12.2.修复安全漏洞
    • 12.3.向社区通报情况
  • 第 13 章 该做什么和不该做什么
    • 第 13 章 该做什么和不该做什么
  • 第14章 一个简单的 port
    • 第 14 章 一个简单的 port
  • 第 15 章 在 Port Makefile 中变量的顺序
    • 第 15 章 在 Port Makefile 中变量的顺序
  • 第 16 章 保持更新
    • 第 16 章 保持更新
  • 第 17 章 使用 USES 宏
    • 第 17 章 使用 USES 宏
  • 第 18 章 __FreeBSD_version 的值
    • 第 18 章 __FreeBSD_version 的值
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 17.1. USES 的介绍
  • 17.2. 7z
  • 17.3. ada
  • 17.4. angr
  • 17.5. ansible
  • 17.6. apache
  • 17.7. autoreconf
  • 17.8. azurepy
  • 17.9. blaslapack
  • 17.10. bdb
  • 17.11. bison
  • 17.12. budgie
  • 17.13. cabal
  • 17.14. cargo
  • 17.15. charsetfix
  • 17.16. cl
  • 17.17. cmake
  • 17.18. compiler
  • 17.19. cpe
  • 17.20. cran
  • 17.21. desktop-file-utils
  • 17.22. desthack
  • 17.23. display
  • 17.24. dos2unix
  • 17.25. drupal
  • 17.26. ebur128
  • 17.27. eigen
  • 17.28. electronfix
  • 17.29. elfctl
  • 17.30. elixir
  • 17.31. emacs
  • 17.32. erlang
  • 17.33. fakeroot
  • 17.34. fam
  • 17.35. firebird
  • 17.36. fonts
  • 17.37. fortran
  • 17.38. fpc
  • 17.39. fuse
  • 17.40. gem
  • 17.41. gettext
  • 17.42. gettext-runtime
  • 17.43. gettext-tools
  • 17.44. ghostscript
  • 17.45. gl
  • 17.46. gmake
  • 17.47. gnome
  • 17.48. go
  • 17.49. gperf
  • 17.50. grantlee
  • 17.51. groff
  • 17.52. gssapi
  • 17.53. gstreamer
  • 17.54. guile
  • 17.55. horde
  • 17.56. iconv
  • 17.57. imake
  • 17.58. java
  • 17.59. jpeg
  • 17.60. kde
  • 17.61. kmod
  • 17.62. kodi
  • 17.63. lazarus
  • 17.64. ldap
  • 17.65. lha
  • 17.66. libarchive
  • 17.67. libedit
  • 17.68. libtool
  • 17.69. linux
  • 17.70. llvm
  • 17.71. localbase
  • 17.72. lua
  • 17.73. luajit
  • 17.74. lxqt
  • 17.75. magick
  • 17.76. makeinfo
  • 17.77. makeself
  • 17.78. mate
  • 17.79. meson
  • 17.80. metaport
  • 17.81. minizip
  • 17.82. mlt
  • 17.83. mysql
  • 17.84. mono
  • 17.85. motif
  • 17.86. mpi
  • 17.87. ncurses
  • 17.88. nextcloud
  • 17.89. ninja
  • 17.90. nodejs
  • 17.91. objc
  • 17.92. ocaml
  • 17.93. octave
  • 17.94. openal
  • 17.95. pathfix
  • 17.96. pear
  • 17.97. perl5
  • 17.98. pgsql
  • 17.99. php
  • 17.100. pkgconfig
  • 17.101. pure
  • 17.102. pyqt
  • 17.103. pytest
  • 17.104. python
  • 17.105. qmail
  • 17.106. qmake
  • 17.107. qt
  • 17.108. qt-dist
  • 17.109. readline
  • 17.110. ruby
  • 17.111. samba
  • 17.112. scons
  • 17.113. sdl
  • 17.114. shared-mime-info
  • 17.115. shebangfix
  • 17.116. sqlite
  • 17.117. sbrk
  • 17.118. ssl
  • 17.119. tar
  • 17.120. tcl
  • 17.121. terminfo
  • 17.122. tex
  • 17.123. tk
  • 17.124. trigger
  • 17.125. uidfix
  • 17.126. uniquefiles
  • 17.127. vala
  • 17.128. varnish
  • 17.129. waf
  • 17.130. webplugin
  • 17.131. xfce
  • 17.132. xorg
  • 17.133. xorg-cat
  • 17.134. zip
在GitHub上编辑
导出为 PDF
  1. 第 17 章 使用 USES 宏

第 17 章 使用 USES 宏

上一页第 16 章 保持更新下一页第 18 章 __FreeBSD_version 的值

最后更新于18天前

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

可能的参数:(无),p7zip,partial

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

17.3. ada

可能的参数:(无),6,12,(run)

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

17.4. angr

可能的参数:binaries,nose

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

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

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

ANGR_VERSION:angr 项目程序的版本。

ANGR_BINARIES_TAGNAME:angr 二进制文件的标签名。

ANGR_NOSETESTS:nosetests 程序的路径。

17.5. ansible

可能的参数:env,module,plugin

如果存在 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.4,build,run,server

为依赖 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。它封装了 aclocal、autoconf、autoheader、automake、autopoint 和 libtoolize 命令。每个命令都应用于 ${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

可能的参数:(无),atlas,netlib(默认),gotoblas,openblas

添加对 Blas / Lapack 库的依赖。

17.10. bdb

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

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

重要

17.11. bison

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

17.12. budgie

可能的参数:(无)

17.13. cabal

重要

可能的参数:(无),hpack,nodefault

框架提供以下变量:

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

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

可能的参数:(无)

17.15. charsetfix

可能的参数:(无)

17.16. cl

可能的参数:(无)

为 Common Lisp Port 提供支持。

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

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

FASL_TARGET:构建 Port 的 fasl 变体(可以是 ccl、clisp 或 sbcl)。

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

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

ASDF_PATHNAME:CL 源代码路径。

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

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

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

CL_LIBDIR_REL:相对于 LOCALBASE 或 PREFIX 的 CL 库目录。

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

FASL_PATHNAME:CL fasl 文件的路径。

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

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

17.17. cmake

可能的参数:(无),insource,noninja,run,testing

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

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

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

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

17.18. compiler

可能的参数:(无),env(默认,隐式),C++17-lang,C++14-lang,C++11-lang,gcc-C++11-lib,C++11-lib,C++0x,c11,nestedfct,features

根据给定的需求确定要使用的编译器。如果 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

可能的参数:(无)

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

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

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

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

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

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

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

17.20. cran

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

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

17.21. desktop-file-utils

可能的参数:(无)

17.22. desthack

可能的参数:(无)

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

17.23. display

可能的参数:(无),ARGS

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

17.24. dos2unix

可能的参数:(无)

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

  • DOS2UNIX_FILES:匹配字面文件名。

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

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

17.25. drupal

可能的参数:7,module,theme

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

17.26. ebur128

可能的参数:(无),build,lib,run,test

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

17.27. eigen

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

17.28. electronfix

可能的参数:31,32,33

该框架提供以下变量,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

ELF_FEATURES=	featurelist:path/to/file1 \
		featurelist:path/to/file2

17.30. 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_CMD:mix 命令。

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

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

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

可以在 make.conf 中定义使用 USES=emacs 的 Port 的默认 Emacs flavor。例如,对于 nox flavor,可以使用 DEFAULT_VERSIONS+= emacs=nox。有效的 flavors 有:full,canna,nox,wayland,devel_full,devel_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_PKGNAMESUFFIX:PKGNAMESUFFIX 用于区分 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

可能的参数:(无),enc,rebar,rebar3

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

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

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

  • REBAR_CMD:rebar 命令的路径

  • REBAR3_CMD:rebar3 命令的路径

  • 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

可能的参数:(无)

17.34. fam

可能的参数:(无),fam,gamin

17.35. firebird

可能的参数:(无),25

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

17.36. fonts

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

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

17.37. fortran

可能的参数:gcc(默认)

使用 GNU Fortran 编译器。

17.38. fpc

可能的参数:(无),run

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

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

17.39. fuse

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

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

17.40. gem

可能的参数:(无),noautoplist

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

这意味着需要使用 USES=ruby。

17.41. gettext

可能的参数:(无)

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

17.42. gettext-runtime

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

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

17.43. gettext-tools

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

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

17.44. ghostscript

可能的参数:*X*,build,run,nox11

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

17.45. gl

可能的参数:(无)

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

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

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

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

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

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

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

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

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

17.46. gmake

可能的参数:(无)

17.47. 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

17.48. go

重要

可能的参数:(无),N.NN,N.NN-devel,modules,no_targets,run

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

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

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

GO_PKGNAME 在 GOPATH 模式下构建时的 Go 包名称。这是将在 ${GOPATH}/src 中创建的目录。如果没有显式设置,并且存在 GH_SUBDIR 或 GL_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_TESTFLAGS 要传递给 go test 的额外构建参数。

17.49. gperf

可能的参数:(无)

17.50. grantlee

可能的参数:5,selfbuild

17.51. groff

可能的参数:build,run,both

17.52. gssapi

可能的参数:(无),base(默认),heimdal,mit,flags,bootstrap

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

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

  • GSSAPIBASEDIR

  • GSSAPICPPFLAGS

  • GSSAPIINCDIR

  • GSSAPILDFLAGS

  • GSSAPILIBDIR

  • GSSAPILIBS

  • GSSAPI_CONFIGURE_ARGS

flags 选项可以与 base、heimdal 或 mit 一起使用,以自动将 GSSAPICPPFLAGS、GSSAPILDFLAGS 和 GSSAPILIBS 添加到 CFLAGS、LDFLAGS 和 LDADD 中。例如,使用 base,flags。

示例 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.53. 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.54. guile

可能的参数:(无),X.Y,flavors,build,run,alias,conflicts

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

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

17.55. horde

可能的参数:(无)

17.56. iconv

可能的参数:(无),lib,build,patch,translit,wchar_t

17.57. imake

可能的参数:(无),env,notall,noman

17.58. java

可能的参数:(无),ant,build,extract,run

如果没有提供参数且未定义 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[+],20[+],21[+],22[+])

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

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

该框架为 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)

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

JAVADOC javadoc 工具程序的路径。

JAVAH javah 程序的路径。

JAVAP javap 程序的路径。

JAVA_KEYTOOL keytool 工具程序的路径。

JAVA_N2A native2ascii 工具的路径。

JAVA_POLICYTOOL policytool 程序的路径。

JAVA_SERIALVER serialver 工具程序的路径。

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 (default, implicit), build, run

帮助处理对 jpeg 的依赖。

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

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

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

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

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

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

17.60. kde

可能的参数:5

17.61. kmod

可能的参数:(none), debug

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

  • 将 kld 添加到 CATEGORIES。

  • 设置 SSP_UNSAFE。

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

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

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

17.62. kodi

可能的参数:(none), noautoplist

17.63. lazarus

可能的参数:(none), gtk2 (default), qt5, qt6, flavors

如果提供了 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}

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

17.64. ldap

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

Port 可以访问以下变量:

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

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

OPENLDAP_VER:检测到的 OpenLDAP 版本。

17.65. lha

可能的参数:(none)

将 EXTRACT_SUFX 设置为 .lzh

17.66. libarchive

可能的参数:(none)

17.67. libedit

可能的参数:(none)

17.68. libtool

可能的参数:(none), keepla, build

17.69. linux

可能的参数:c6, c7

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 的依赖。默认情况下,这是一个构建依赖,除非使用 run 或 lib 选项覆盖。默认版本是通过 LLVM_DEFAULT 设置的。也可以指定特定版本。最小和最大版本可以分别通过 min 和 max 参数指定。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

可能的参数: (无), XY, XY+, -XY, XY-ZA, module, flavors, build, run, env

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

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

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

17.73. luajit

可能的参数: (无), X

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

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

LUAJIT_VER 选择的 luajit 版本

LUAJIT_INCDIR luajit 的头文件路径

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

17.74. lxqt

可能的参数: (无)

17.75. magick

可能的参数: (无), X, build, nox11, run, test

添加对 ImageMagick 的库依赖。可以使用特定版本 X。可用版本为 6 和 7(默认)。nox11 表示需要使用 -nox11 版本的 Port。build,run 和 test 分别添加对 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 进行更改。例如:

USES=		mate
USE_MATE=	menus:build intlhack

17.79. meson

可能的参数: (无)

17.80. metaport

可能的参数: (无)

设置以下变量以简化创建 metaport: MASTER_SITES,DISTFILES,EXTRACT_ONLY,NO_BUILD,NO_INSTALL,NO_MTREE,NO_ARCH。

17.81. minizip

可能的参数: (无), ng

17.82. mlt

可能的参数: 7, nodepend

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

17.83. mysql

可能的参数: (无), version, client(默认), server, embedded

为 MySQL 提供支持。如果未指定版本,则尝试查找当前安装的版本。回退到默认版本 MySQL-5.6。可用的版本为 55,55m,55p,56,56p,56w,57,57p,80,100m,101m,102m。其中 m 和 p 后缀分别表示 MariaDB 和 Percona 变种的 MySQL。server 和 embedded 会添加对 MySQL 服务器的构建和运行时依赖。在使用 server 或 embedded 时,添加 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

可能的参数: (无)

17.86. mpi

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

为依赖 MPI 的 Ports 提供支持。

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

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

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

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

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

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

MPIFC 与上述相同。

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

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

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

17.87. ncurses

可能的参数: (无), base, port

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

17.88. nextcloud

可能的参数: (无)

17.89. ninja

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

17.90. nodejs

可能的参数: (无), build, run, current, lts, 10, 14, 16, 17

17.91. objc

可能的参数: (无)

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

17.92. ocaml

可能的参数: (无)、build、camlp4、dune、findlib、findplist、ldconfig、run、tk、tkbuild、tkrun、wash

提供对 OCaml 的支持。

如果没有提供任何参数,默认使用 build 和 run。

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

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

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

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

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

可以由 port 设置以下变量:

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

OCAML_LDLIBS:会自动添加/删除从 ld.conf 中的目录。默认值:${OCAML_SITELIBDIR}/${PORTNAME}

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

17.93. octave

可能的参数: (无)、env

17.94. openal

可能的参数:al、soft(默认)、si、alut

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

17.95. pathfix

可能的参数: (无)

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

17.96. pear

可能的参数:env

17.97. perl5

可能的参数: (无)

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

USE_PERL5 可以包含使用 Perl 的阶段,包括 extract、patch、build、run 或 test。

USE_PERL5 还可以包含 configure、modbuild 或 modbuildtiny,当需要 Makefile.PL、Build.PL 或 Module::Build::Tiny 的版本时。

USE_PERL5 默认为 build run。当使用 configure、modbuild 或 modbuildtiny 时,build 和 run 是隐式的。

17.98. pgsql

可能的参数: (无)、X.Y、X.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

可能的参数: (无)、phpize、ext、zend、build、cli、cgi、mod、web、embed、pecl、flavors、noflavors

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。

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:加载扩展的优先级。它是一个介于 00 和 99 之间的数字。

USES=		php:ext
USE_PHP=	wddx
PHP_MOD_PRIO=	40

这些变量可以用于 PKGNAMEPREFIX 或 PKGNAMESUFFIX:

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 模块 必须具有不同的包名称,因此它们必须在 PKGNAMEPREFIX 或 PKGNAMESUFFIX 中使用这三个变量之一。

17.100. pkgconfig

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

17.101. pure

可能的参数: (无)、ffi

17.102. pyqt

可能的参数: (无)、4、5

使用 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。例如:

USES=		pyqt
USE_PYQT=	core doc_build designer_run

17.103. pytest

可能的参数: (无)、4

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_TESTS 和 PYTEST_BROKEN_TESTS 忽略的测试。

17.104. python

可能的参数: (无)、X.Y、X.Y+、-X.Y、X.Y-Z.A、patch、build、run、test

17.105. qmail

可能的参数: (无)、build、run、both、vars

17.106. qmake

可能的参数: (无)、norecursive、outsource、no_env、no_configure

17.107. qt

可能的参数: 5、6、no_env

17.108. qt-dist

可能的参数: (无) 或 5 和 (无) 或 6 和 (无) 或下列之一: 3d、5compat、base、charts、connectivity、datavis3d、declarative、doc、languageserver、gamepad、graphicaleffects、imageformats、location、lottie、multimedia、networkauth、positioning、quick3d、quickcontrols2、quickcontrols、quicktimeline、remoteobjects、script、scxml、sensors、serialbus、serialport、shadertools、speech、svg、tools、translations、virtualkeyboard、wayland、webchannel、webengine、webglplugin、websockets、webview、x11extras、xmlpatterns。

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

示例 7. 构建 Qt 5 组件

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

PORTNAME=	networkauth
DISTVERSION=	${QT5_VERSION}

USES=		qt-dist:5

示例 8. 构建 Qt 6 组件

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

PORTNAME=       websockets
PORTVERSION=    ${QT6_VERSION}

USES=           qt-dist:6

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

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

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

PORTNAME=	gui
DISTVERSION=	${QT5_VERSION}

USES=		qt-dist:5,base

17.109. readline

可能的参数: (无)、port

17.110. ruby

可能的参数: (无)、build、extconf、run、setup

用户可以定义以下变量:

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

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

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

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

RUBY 设置为 ruby 的完整路径。如果设置了此变量,则以下变量的值将自动从 ruby 执行文件中获得:RUBY_ARCH、RUBY_ARCHLIBDIR、RUBY_LIBDIR、RUBY_SITEARCHLIBDIR、RUBY_SITELIBDIR、RUBY_VER 和 RUBY_VERSION。

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

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

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

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

17.111. samba

可能的参数: build、env、lib、run

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

SAMBA_PORT Samba 默认 port 的来源。

SAMBA_INCLUDEDIR Samba 头文件的位置。

SAMBA_LIBS Samba 共享库所在目录。

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

可能的参数: (无)

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

可能的参数: (无)

17.115. shebangfix

可能的参数: (无)

许多软件使用错误的脚本解释器位置,特别是 /usr/bin/perl 和 /bin/bash。shebangfix 宏修复脚本中的 shebang 行,这些脚本包含在 SHEBANG_REGEX、SHEBANG_GLOB 或 SHEBANG_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。

技巧

重要

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

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

技巧

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

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

SHEBANG_LANG=	lua

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

如果未定义,并且 _interpOLD_CMD 和 _interp*CMD 没有默认值,则 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。可以在 port Makefile 中声明需要替换的奇怪路径:

python_OLD_CMD=	/opt/bin/python2.7

示例 13. USES=shebangfix 与 SHEBANG_REGEX

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

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

注意

示例 14. USES=shebangfix 与 SHEBANG_GLOB

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

USES=	shebangfix
SHEBANG_GLOB=	*.sh *.pl

示例 15. USES=shebangfix 与 SHEBANG_FILES

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

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

17.116. sqlite

可能的参数: (无), 2, 3

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

17.117. sbrk

可能的参数: (无)

标记该 port 在 aarch64 和 riscv64 上为 BROKEN。

17.118. ssl

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

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

OPENSSLBASE OpenSSL 安装基础路径。

OPENSSLDIR OpenSSL 配置文件路径。

OPENSSLLIB OpenSSL 库路径。

OPENSSLINC OpenSSL 包含文件路径。

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

技巧

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

BROKEN_SSL=	libressl
BROKEN_SSL_REASON_libressl=	需要 OpenSSL 中才有的特性

17.119. tar

可能的参数:(无),Z,bz2,bzip2,lzma,tbz,tbz2,tgz,txz,xz,zst,zstd

将 EXTRACT_SUFX 设置为 .tar,.tar.Z,.tar.bz2,.tar.bz2,.tar.lzma,.tbz,.tbz2,.tgz,.txz,.tar.xz,.tar.zst 或 .tar.zstd。

17.120. tcl

可能的参数:version,wrapper,build,run,tea

添加对 Tcl 的依赖。可以使用 version 来请求特定版本。版本可以为空、一个或多个精确版本号(当前为 84、85 或 86),或一个最小版本号(当前为 84+、85+ 或 86+)。如果只请求一个非版本特定的 wrapper,可以使用 wrapper。可以使用 build 或 run 来指定构建时或运行时的依赖。要使用 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.121. terminfo

可能的参数:(无)

17.122. 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.123. tk

与 tcl 的参数相同

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

17.124. trigger

可能的参数:(无)

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

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

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

17.125. uidfix

可能的参数:(无)

17.126. uniquefiles

可能的参数:(无),dirs

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

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

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

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

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

17.127. vala

可能的参数:build,lib,no_depend

17.128. varnish

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

17.129. waf

可能的参数:(无)

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

它意味着 USES=python:build。

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

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

CONFIGURE_TARGET:Configure 目标。默认值:configure。

ALL_TARGET:All 目标。默认值:build。

INSTALL_TARGET:Install 目标。默认值:install。

17.130. 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.131. xfce

可能的参数:(无),gtk2

17.132. 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.133. xorg-cat

可能的参数:app,data,doc,driver,font,lib,proto,util,xserver 和(无)或单独的 autotools(默认),meson

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

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

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

17.134. zip

可能的参数:(无),infozip

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

为需要 的 Ports 提供支持。

为依赖 的 Ports 提供支持。

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

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

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

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

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

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

已弃用并且不再支持。任何 Port 都不得使用它

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

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

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

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

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

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

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

USE_ASDF:依赖 。

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

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

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

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

有关更多信息,请参见 。

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

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

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

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

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

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

添加对 的依赖。

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

featurelist 的格式描述见 。

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

为 添加构建和运行时依赖。根据参数不同,添加额外的构建依赖。enc 添加对 的依赖,rebar 添加对 的依赖,rebar3 添加对 的依赖。

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

使用文件修改监视器作为库依赖,可以选择使用 或 。最终用户可以设置 WITH_FAM_SYSTEM 来指定其首选项。

添加对 的构建依赖。

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

有关更多信息,请参阅 。

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

有关使用示例,请参阅 。

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

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

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

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

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

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

更多信息请参见 。

添加对 的构建时和运行时依赖。如果需要,可以使用 USE_HORDE_BUILD 和 USE_HORDE_RUN 添加其他 Horde 依赖项。更多信息请参见 。

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

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

(默认)

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

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

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

为 基础的 Port 提供支持。

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

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

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

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

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

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

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

有关更多信息,请参见 。

有关更多信息,请参见 。

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

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

分别添加对 或 的库依赖。

为依赖 的 Ports 提供支持。

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

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

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

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

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

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

如果提供 build 参数,则会将 添加到 BUILD_DEPENDS、EXTRACT 和 PATCH_DEPENDS。

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

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

如果提供 tk 参数,则会添加 的构建和运行时依赖。此参数隐式包含 tkbuild 和 tkrun。

如果提供 tkbuild 参数,则会将 添加到 BUILD_DEPENDS、EXTRACT 和 PATCH_DEPENDS。

如果提供 tkrun 参数,则会将 添加到 RUN_DEPENDS。

使用 。env 仅加载一个 OCTAVE_VERSION 环境变量。

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

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

有关更多信息,请参见 。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SHEBANG_REGEX 包含一个扩展正则表达式,并与 的 -iregex 参数一起使用。参见 。

SHEBANG_GLOB 包含一个使用 的 -name 参数的模式列表。参见 。

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

_interp__OLD_CMD 包含多个值。任何包含空格的条目必须加引号。参见 。

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

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

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

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

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

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

处理 Varnish Cache 的依赖关系。添加对 的依赖。

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

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

7z(1)
bsdtar(1)
archivers/p7zip
angrinary 分析平台
sysutils/ansible
sysutils/ansible
databases/db5
databases/db18
databases/db5
databases/db5
databases/db5
databases/db5
databases/db48
devel/bison
使用 Budgie
Haskell Libraries
lang/ghc
lang/ghc810
devel/hs-hpack
使用 Cabal 构建 Haskell 应用程序
使用 cargo 构建 Rust 应用程序
converters/libiconv
devel/cl-asdf
lang/ccl
lang/clisp
lang/sbcl
devel/ninja
使用 cmake
CPE 规范
CPE 搜索引擎
官方 CPE 字典
ports-secteam@FreeBSD.org
devel/desktop-file-utils
@desktop-file-utils
简单的自动替换
audio/ebur128
math/eigen
devel/electron31
devel/electron32
devel/electron33
elfctl(1)
lang/elixir
lang/elixir
lang/erlang
devel/erlang-native-compiler
devel/rebar
devel/rebar3
https://wiki.debian.org/FakeRoot
devel/fam
devel/gamin
lang/fpc
devel/gmake
Using GNOME
Go Libraries
Building Go Applications
devel/gperf
devel/grantlee5
devel/grantlee5
textproc/groff
security/heimdal
security/krb5
security/krb5
security/heimdal
使用 BINARY_ALIAS
使用 Guile
devel/pear-channel-horde
Horde 模块
converters/libiconv
使用 iconv
devel/imake
graphics/jpeg-turbo
graphics/mozjpeg
使用 KDE
@kld
multimedia/kodi
editors/lazarus
editors/lazarus
lazbuild(1)
lazarus/devel
net/openldap
archivers/libarchive
devel/libedit
devel/libtool
使用 Lua
使用 Lua
使用 LXQt
使用 meson
archivers/minizip
archivers/minizip-ng
multimedia/mlt7
x11-toolkits/open-motif
x11-toolkits/lesstif
x11-toolkits/open-motif
x11-toolkits/open-motif-devel
net/mpich
net/openmpi
www/nextcloud
devel/ninja
devel/samurai
www/node*
lang/ocamlc
devel/ocamlp4
devel/ocaml-dune
x11-toolkits/ocaml-labltk
x11-toolkits/ocaml-labltk
x11-toolkits/ocaml-labltk
math/octave
USES=cmake
devel/pear
PEAR 模块
使用 Perl
lang/php81
IGNORE_WITH_PHP
www/php56-opcache
devel/pkgconf
lang/pure
devel/pure-ffi
devel/pytest
devel/pytest
devel/pytest
使用 Python
USES=shebangfix
mail/qmail
使用 qmake
使用 Qt
devel/readline
lang/ruby
lang/ruby
lang/ruby
databases/ldb28
devel/scons
使用 scons
misc/shared-mime-info
@shared-mime-info
find(1)
USESshebangfix 与 SHEBANG_REGEX
find(1)
USESshebangfix 与 SHEBANG_GLOB
sh(1)
USESshebangfix 与 SHEBANG_FILES
指定为 USESshebangfix 添加解释器时的所有路径
USES=python
re_format(7)
@terminfo
pkg(8)
USES=fakeroot
lang/vala
lang/vala
www/varnish*
Using Xfce
x11/libxfce4menu
x11-wm/xfce4-panel