发布macports教程
一、前置准备
1. 环境要求
- 操作系统:macOS(推荐最新稳定版,如 Sonoma/Ventura)
- 安装 MacPorts:从 MacPorts 官网 下载对应版本安装
- 依赖工具:
git(sudo port install git)、curl/wget、文本编辑器(VS Code/Sublime/Vim)
2. 注册 MacPorts 账号
- 注册 GitHub 账号(MacPorts 仓库托管在 GitHub)
- 加入 MacPorts 邮件列表(可选,用于沟通:
[email protected]) - 熟悉 MacPorts 贡献规范:阅读 MacPorts Portfile 指南 和 贡献文档
二、核心步骤:编写 Portfile(端口定义文件)
Portfile 是 MacPorts 识别包的核心文件,需符合 MacPorts 语法规范,存放路径为
ports/category/ns-sandbox/Portfile。1. 确定端口分类
先确定
ns-sandbox 所属分类(如 sysutils),创建Portfile文件(/opt/local/var/macports/localports/sysutils/ns-sandbox/Portfile)
mkdir -p /opt/local/var/macports/localports/sysutils/ns-sandbox touch Portfile
2.编写Portfile
# Portfile for ns-sandbox
# Created by: navysummer
# $
PortSystem 1.0
name ns-sandbox
version 0.0.1
categories sysutils
license MIT
maintainers navysummer
description Cross-platform command-line ns-sandbox
long_description ${description}
homepage https://github.com/navysummer/ns-sandbox
master_sites https://github.com/navysummer/ns-sandbox/releases/download/v${version}/
if {${os.arch} eq "arm64"} {
distname ns-sandbox-${version}-arm64
checksums sha256 5a31dafa76824e5725751793317e2b9a8643b2760eb656c8e6d9e1e5b8715222 \
rmd160 5af89836359cee7c1ea6f27febb7c2f998b0dac7 \
size 306037
} else {
distname ns-sandbox-${version}-x86_64
checksums sha256 9c37892e94909f6bd39a79fd3bc4f785b31be9d1bc3691bc23ba06ab7a6beb96 \
rmd160 685494416ddf3dcbcbf241c2247dc019b766fbc1 \
size 330625
}
use_configure no
build {}
post-extract {
if {![file exists "${worksrcpath}/ns-sandbox"] && [file exists "${workpath}/ns-sandbox"]} {
file mkdir "${worksrcpath}"
file copy -force "${workpath}/ns-sandbox" "${worksrcpath}/ns-sandbox"
}
}
destroot {
xinstall -m 755 ${worksrcpath}/ns-sandbox ${destroot}${prefix}/bin/
}
3. Portfile 关键参数说明
| 参数 | 作用 |
|---|---|
PortSystem |
指定 Portfile 语法版本(固定 1.0) |
version |
包版本号(需与源码包版本严格一致) |
categories |
端口分类(参考 MacPorts 分类列表) |
maintainers |
维护者信息(@GitHub用户名 或邮箱,openmaintainer 表示允许他人维护) |
distfiles |
源码包下载地址(优先用 HTTPS,确保可公开访问) |
checksums |
源码包校验和(生成方式:port checksum ns-sandbox 自动计算) |
depends_build/run |
构建 / 运行依赖(port:xxx 表示依赖 MacPorts 中的 xxx 包) |
4.编写/opt/local/etc/macports/sources.conf文件
file:///opt/local/var/macports/localports rsync://rsync.macports.org/macports/release/tarballs/ports.tar.gz [default]
5.测试构建流程
# 1. 检查 Portfile 语法 port lint --nitpick ns-sandbox # --nitpick 严格检查语法/规范 # 2. 生成校验和(若用自定义 distfiles,自动计算并补全到 Portfile) sudo port checksum ns-sandbox # 3. 构建并安装 sudo port install ns-sandbox # 4. 验证安装 ns-sandbox --version # 检查版本是否正确 port contents ns-sandbox # 检查安装文件是否完整
三、提交 Portfile 到 MacPorts 官方仓库
MacPorts 采用 GitHub PR(Pull Request)方式接受端口贡献,流程如下:
1. Fork MacPorts 官方仓库
- 访问 MacPorts 端口仓库
- 点击右上角
Fork,将仓库复制到你的 GitHub 账号下
2. 克隆自己的 Fork 仓库
git clone https://github.com/你的GitHub账号/macports-ports.git
3. 创建分支
基于
master 分支创建特性分支,命名规范:ns-sandbox-add-portgit checkout -b ns-sandbox-add-port master
4. 添加 Portfile 并提交
# 创建端口目录 mkdir -p sysutils/ns-sandbox # 复制测试通过的 Portfile 到该目录 cp /opt/local/var/macports/localports/sysutils/ns-sandbox/Portfile sysutils/ns-sandbox/ # 提交代码 git add sysutils/ns-sandbox/Portfile git commit -m "Add port: sysutils/ns-sandbox @0.0.1" # 版本号与 Portfile 一致
5. 推送分支到 GitHub
git push origin ns-sandbox-add-port
6. 创建 Pull Request
- 打开你的 Fork 仓库页面(
https://github.com/你的账号/macports-ports) - 点击
Compare & pull request - 填写 PR 描述:
- 说明
ns-sandbox的功能 - 附上游项目主页 / 源码地址
- 确认本地测试通过(如
port lint/port install无报错)
- 说明
- 点击
Create pull request提交
四、PR 审核与合并
1. 响应审核反馈
MacPorts 维护者会审核你的 PR,可能提出修改建议(如 Portfile 语法、依赖调整、描述优化):
根据反馈修改 Portfile:
# 修改后重新提交 git add sysutils/ns-sandbox/Portfile git commit -m "Fix: 审核反馈的问题(如调整依赖/校验和)" git push origin ns-sandbox-add-port
- 及时回复审核评论,确认修改完成。
2. 合并与发布
- 审核通过后,维护者会将你的 PR 合并到
macports-ports主分支 - 合并后约 1-24 小时,MacPorts 会更新端口索引,用户可通过
sudo port selfupdate && sudo port install ns-sandbox安装你的包
五、后续维护(可选)
- 监控
ns-sandbox上游版本更新,及时提交版本升级 PR - 处理用户反馈(如 MacPorts 工单 / 邮件列表中关于
ns-sandbox的问题) - 定期测试
ns-sandbox在新版 macOS 上的兼容性
总结
- 核心文件:
Portfile是关键,需严格遵循 MacPorts 语法,确保源码地址、校验和、依赖准确,本地测试通过后再提交。 - 提交流程:Fork 仓库 → 编写 / 测试 Portfile → 提交 PR → 响应审核 → 合并上线,核心是确保包能稳定构建和运行。
- 关键检查:提交前必须执行
port lint(语法)、port checksum(校验和)、port install(安装)三步测试,避免审核失败。
如果
ns-sandbox 有特殊构建需求(如 CMake、Python 依赖、二进制包等),可根据实际情况调整 Portfile 配置,核心原则是符合 MacPorts 官方规范且本地可复现构建。
浙公网安备 33010602011771号