FreeBSD Porter 手册

The FreeBSD Documentation Project


目录
第1章 介绍
第2章 自行制作 port
第3章 简单的 port
第3.1节 编写 Makefile
第3.2节 创建描述文件
第3.2.1节 pkg-descr (关于 port 的冗长描述文件)
第3.2.2节 pkg-plist (port 的装箱单)
第3.3节 创建校验和文件
第3.4节 测试 port
第3.5节 portlint 来检查 port
第3.6节 提交 port
第4章 复杂的 Porting
第4.1节 整个系统是如何运转的?
第4.2节 获取源代码
第4.3节 修改 port
第4.4节 打补丁
第4.5节 配置
第4.6节 处理用户输入
第5章 配置 Makefile
第5.1节 作者发布的代码
第5.2节 命名
第5.2.1节 PORTNAMEPORTVERSION
第5.2.2节 PORTREVISIONPORTEPOCH
第5.2.3节 PKGNAMEPREFIXPKGNAMESUFFIX
第5.2.4节 包命名规则
第5.3节 分类
第5.3.1节 CATEGORIES (所属分类)
第5.3.2节 目前的分类表
第5.3.3节 选择正确的分类
第5.3.4节 提议建立新的分类
第5.3.5节 提议对分类进行重新组织
第5.4节 源码包文件
第5.4.1节 DISTVERSION/DISTNAME (源码包版本号/名称)
第5.4.2节 MASTER_SITES (主流下载站点)
第5.4.3节 EXTRACT_SUFX (压缩包所用的扩展名)
第5.4.4节 DISTFILES (全部源代码包)
第5.4.5节 EXTRACT_ONLY (只解压缩部分源文件)
第5.4.6节 PATCHFILES (通过下载得到的补丁文件)
第5.4.7节 来自不同站点的多个源代码包或补丁文件 (MASTER_SITES:n)
第5.4.8节 DIST_SUBDIR (独立的源码包子目录)
第5.5节 MAINTAINER (监护人)
第5.6节 COMMENT (一句话说明)
第5.7节 依赖关系
第5.7.1节 LIB_DEPENDS (依赖的函数库/共享库)
第5.7.2节 RUN_DEPENDS (依赖的运行环境)
第5.7.3节 BUILD_DEPENDS (依赖的构建环境)
第5.7.4节 FETCH_DEPENDS (依赖的下载环境)
第5.7.5节 EXTRACT_DEPENDS (依赖的解压缩环境)
第5.7.6节 PATCH_DEPENDS (依赖的打补丁环境)
第5.7.7节 DEPENDS (一般依赖)
第5.7.8节 USE_*
第5.7.9节 关于依赖关系的补充说明
第5.7.10节 循环的依赖关系是致命的
第5.8节 MASTERDIR (主 port 所在的目录)
第5.9节 联机手册
第5.10节 Info 文件
第5.11节 Makefile 选项
第5.11.1节 开关 (KNOBS)
第5.11.2节 OPTIONS (菜单式可选项)
第5.12节 指定工作临时目录
第5.12.1节 WRKSRC (开始构建操作的目录名)
第5.12.2节 NO_WRKSUBDIR (不需要临时的构建目录)
第5.13节 CONFLICTS (设置与其它包的冲突)
第6章 特殊情况
第6.1节 共享库
第6.2节 Ports 的发行限制
第6.2.1节 NO_PACKAGE (禁止编译结果打包)
第6.2.2节 NO_CDROM (禁止以 CDROM 发行预编译包)
第6.2.3节 RESTRICTED (禁止任何形式的再分发)
第6.2.4节 RESTRICTED_FILES (禁止某些文件的再分发)
第6.3节 构建机制
第6.3.1节 makegmake, 以及 imake
第6.3.2节 configure 脚本
第6.4节 利用 GNU autotools
第6.4.1节 入门
第6.4.2节 libtool
第6.4.3节 libltdl
第6.4.4节 autoconfautoheader
第6.4.5节 automakeaclocal
第6.5节 使用 perl
第6.6节 使用 X11
第6.6.1节 Variable definitions
第6.6.2节 需要使用 Motif 的 port
第6.6.3节 X11 字体
第6.7节 使用 GNOME
第6.8节 使用 KDE
第6.9节 使用 Java
第6.9.1节 变量定义
第6.9.2节 采用 Ant 进行构建
第6.9.3节 最佳实践
第6.10节 使用 Apache 和 PHP
第6.10.1节 Apache
第6.10.2节 PHP
第6.10.3节 PEAR 模块
第6.11节 使用 Python
第6.12节 使用 Emacs
第6.13节 使用 Ruby
第6.14节 使用 SDL
第6.15节 启动和停止服务 (rc 脚本)
第7章 高级 pkg-plist 用法
第7.1节 根据 make 变量对 pkg-plist 进行修改
第7.2节 空目录
第7.2.1节 清理空目录
第7.2.2节 如何建立空目录
第7.3节 配置文件
第7.4节 装箱单 (package list) 的自动化制作
第8章 pkg-* 文件
第8.1节 pkg-message (安装预编译包时显示的消息文件)
第8.2节 pkg-install (安装预编译包时执行的脚本文件)
第8.3节 pkg-deinstall (卸载时执行的脚本文件)
第8.4节 pkg-req (安装预编译包时检测是否应执行操作的脚本文件)
第8.5节 改变 pkg-* 文件的名字
第8.6节 使用 SUB_FILESSUB_LIST
第9章 测试您的 port
第9.1节 运行 make describe
第9.2节 Portlint
第9.3节 PREFIX (安装时的顶级目录名)
第10章 升级
第11章 Ports 的安全
第11.1节 安全为何如此重要
第11.2节 修复安全漏洞
第11.3节 通知整个用户群体
第11.3.1节 VuXML 数据库
第11.3.2节 VuXML 简介
第11.3.3节 测试您对 VuXML 数据库所作的修改
第11.3.4节 假如 VuXML 仍然让您感到恐惧……
第12章 该做什么和不该做什么
第12.1节 介绍
第12.2节 对可执行文件做脱模 (strip) 操作
第12.3节 INSTALL_* 宏
第12.4节 WRKDIR (构建时使用的临时目录)
第12.5节 WRKDIRPREFIX (用于构建的临时目录的父目录名)
第12.6节 区分不同的操作系统, 以及 OS 的版本
第12.7节 __FreeBSD_version 值
第12.8节 bsd.port.mk 之后写一些内容
第12.9节 安装附加的文档
第12.10节 子目录
第12.11节 UID 和 GID
第12.12节 理性行事
第12.13节 遵循 CCCXX 设置
第12.14节 遵循 CFLAGS
第12.15节 反馈
第12.16节 README.html
第12.17节 使用 BROKENFORBIDDENIGNORE 标记不可安装的 port
第12.17.1节 变量
第12.17.2节 实现说明
第12.18节 可以用 DEPRECATEDEXPIRATION_DATE 表示某个 port 将被删除。
第12.19节 避免使用 .error 结构
第12.20节 一些必要的 workaround
第12.21节 杂记
第13章 示范的 Makefile
第14章 保持同步
第14.1节 FreshPorts
第14.2节 代码库的 Web 访问界面
第14.3节 FreeBSD Ports 邮件列表
第14.4节 位于 pointyhat.FreeBSD.org 的 FreeBSD Port 构建集群
第14.5节 FreeBSD 的 Port Distfile 普查
第14.6节 FreeBSD 的 Ports 追踪系统
表格清单
表5-1. 常用的 USE_* 变量
表5-2. WITH_*WITHOUT_* 变量
表6-1. 用于与 gmake 有关的 port 的变量
表6-2. 用于用到了 configure 脚本的 port 的变量
表6-3. 用于用到 perl 的 port 的变量
表6-4. 用到 X 的 port 可以使用的变量
表6-5. 用于表示对 X11 某些组件的依赖关系的变量
表6-6. 用于用到 KDE 的 port 的变量
表6-7. 用到 Java 的 port 可以使用的变量
表6-8. 向使用了 Java 的 port 提供的变量
表6-9. 为使用 Java 的 port 定义的常量
表6-10. 用到 Apache 的 port 可以使用的变量
表6-11. 用到 PHP 的 port 中可以使用的变量
表6-12. 对用到 Python 的 port 最有用的一些变量
表6-13. 使用 Ruby 的 port 可以使用的变量
表6-14. 使用 Ruby 的 port 中的一些可用的只读变量
表12-1. __FreeBSD_version 值
范例清单
例5-1. 简化的 MASTER_SITES:n 用法, 每个文件来自一个站点
例5-2. 简化的 MASTER_SITES:n 用法, 其中同一个站点上提供了不止一个文件
例5-3. MASTER_SITE_SUBDIRMASTER_SITES:n 的详细用法
例5-4. 用到逗号分隔符、 多个文件, 多个站点和 不同子目录的 MASTER_SITES:n 详细用法
例5-5. MASTER_SITE_SOURCEFORGEMASTER_SITES:n 的详细用法
例5-6. 简化的 PATCH_SITES 中的 MASTER_SITES:n 用法。
例5-7. 简单的 OPTIONS 用法
例6-1. 在变量中使用与 X11 有关的变量
例6-2. 用于 PEAR 类的 Makefile 例子
例12-1. 怎样避免使用 .error
若您有关于 FreeBSD ports 系统的问题, 请发送电子邮件至 <ports@FreeBSD.org>。
关于此文档的任何问题, 请致函 <doc@FreeBSD.org>。