发布macports教程

一、前置准备

 

1. 环境要求

 
  • 操作系统:macOS(推荐最新稳定版,如 Sonoma/Ventura)
  • 安装 MacPorts:从 MacPorts 官网 下载对应版本安装
  • 依赖工具:gitsudo port install git)、curl/wget、文本编辑器(VS Code/Sublime/Vim)
 

2. 注册 MacPorts 账号

 
 

 

二、核心步骤:编写 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 官方仓库

 
 

2. 克隆自己的 Fork 仓库

git clone https://github.com/你的GitHub账号/macports-ports.git

 

3. 创建分支

 
基于 master 分支创建特性分支,命名规范:ns-sandbox-add-port
 
git 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 上的兼容性
 

 

总结

 
  1. 核心文件Portfile 是关键,需严格遵循 MacPorts 语法,确保源码地址、校验和、依赖准确,本地测试通过后再提交。
  2. 提交流程:Fork 仓库 → 编写 / 测试 Portfile → 提交 PR → 响应审核 → 合并上线,核心是确保包能稳定构建和运行。
  3. 关键检查:提交前必须执行 port lint(语法)、port checksum(校验和)、port install(安装)三步测试,避免审核失败。
 
如果 ns-sandbox 有特殊构建需求(如 CMake、Python 依赖、二进制包等),可根据实际情况调整 Portfile 配置,核心原则是符合 MacPorts 官方规范且本地可复现构建。
 
posted @ 2026-03-07 16:07  NAVYSUMMER  阅读(19)  评论(0)    收藏  举报
交流群 编程书籍