FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章
  • 书籍
  • 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

在本页
  • 3.2.1. pkg-descr
  • 3.2.2. pkg-plist
在GitHub上编辑
导出为 PDF
  1. 第3章 简单的 port

3.2.编写描述文件

上一页3.1.编写 Makefile下一页3.3.创建校验和文件

最后更新于2天前

有两个描述文件是每个 Port 必需的,无论它是否实际打包。它们是 pkg-descr 和 pkg-plist。它们的 pkg- 前缀将它们与其他文件区分开来。

3.2.1. pkg-descr

这是 Port 的详细描述。简洁地用一到几段话解释该 Port 的功能即可。

注意

这不是手册,也不是如何使用或编译 Port 的详细描述!请在复制自 README 或手册页时小心。它们往往不是对 Port 的简洁描述,或者格式不合适。例如,手册页有对齐空格,这在等宽字体下看起来特别难看。

另一方面,pkg-descr 的内容必须比 更长。它必须更深入地解释该 Port 的功能。

编写得好的 pkg-descr 完全描述了 Port,使用户不必查阅文档或访问网站,就能理解该软件的功能、用途或特别的优点。提及一些要求,如图形工具包、较重的依赖关系、运行时环境或实现语言,有助于用户决定这个 Port 是否适合他们。

注意

以前在 pkg-descr 文件的最后一行包含的 URL 已经移到 Makefile 中。

3.2.2. pkg-plist

该文件列出了 Port 安装的所有文件。它也叫做“打包列表”,因为软件包是通过打包这里列出的文件生成的。路径名是相对于安装前缀(通常是 /usr/local)的。

下面是个小示例:

bin/oneko
man/man1/oneko.1.gz
lib/X11/app-defaults/Oneko
lib/X11/oneko/cat1.xpm
lib/X11/oneko/cat2.xpm
lib/X11/oneko/mouse.xpm

注意

技巧

只有在一种情况下,pkg-plist 可以从 Port 中省略。如果 Port 仅安装少量文件,则可以在 Port 的 Makefile 中通过 PLIST_FILES 列出它们。例如,我们可以通过将以下行添加到 Makefile 中来省略上述 oneko Port 的 pkg-plist:

PLIST_FILES=	bin/oneko \
		man/man1/oneko.1.gz \
		lib/X11/app-defaults/Oneko \
		lib/X11/oneko/cat1.xpm \
		lib/X11/oneko/cat2.xpm \
		lib/X11/oneko/mouse.xpm

注意

不应滥用 PLIST_FILES。在寻找文件的来源时,人们通常会尝试在 Ports 树中的 pkg-plist 文件中查找。将文件列在 Makefile 中的 PLIST_FILES 会使得此类搜索更加困难。

技巧

技巧

PLIST_FILES=	"@sample ${ETCDIR}/oneko.conf.sample"

有关打包列表的详细信息,请参阅 手册页。

推荐将此文件中的所有文件名按字母顺序排列。这样在升级 Port 时验证更改会更容易。排序应在变量展开后进行。框架在 包列表时会正确地进行排序。

手动创建打包列表可能是一个非常繁琐的任务。如果 Port 安装了大量文件, 可能会节省时间。

如果 Port 需要创建一个空目录,或者在安装过程中在 ${PREFIX} 外部创建目录,请参考 以获取更多信息。

由于 PLIST_FILES 是一个 变量,因此任何包含空格的条目都必须加上引号。例如,如果使用 和 中描述的关键字,条目必须加上引号。

稍后我们将看到如何使用 pkg-plist 和 PLIST_FILES 来完成 。

Makefile 中的 COMMENT 行
pkg-create(8)
自动生成
自动创建打包列表
清理空目录
make(1)
pkg-create(8)
通过关键字扩展包列表
更复杂的任务