在 Debian 上发布 Fortran 程序的可行路径
- 面向团队或客户:优先打包为 .deb 并托管到 APT 仓库(私有或公共),便于安装与升级。
- 面向上游与社区:按 Debian 正式打包流程进入 Debian 官方仓库(需赞助人上传)。
- 面向快速交付:直接提供可复现的 二进制与脚本(适合内部分发或演示)。
本地构建与验证
- 安装工具链与依赖
- 编译器与基础构建:sudo apt update && sudo apt install -y gfortran build-essential
- 常用数值库:sudo apt install -y libblas-dev liblapack-dev
- 并行库:sudo apt install -y libopenmpi-dev(MPI),编译用 mpif90;OpenMP 用 -fopenmp
- 编译与运行示例
- 单文件:gfortran hello.f90 -O2 -Wall -g -o hello && ./hello
- OpenMP:gfortran -fopenmp omp.f90 -O2 -o omp && ./omp
- MPI:mpif90 mpi.f90 -O2 -o mpi && mpirun -np 4 ./mpi
- 工程化与测试
- 使用 Makefile 或 Fortran Package Manager(fpm) 管理多文件与依赖
- 在 CI 中覆盖多版本 gfortran 与 MPI 组合,确保可复现构建与测试通过
制作与发布 Debian 软件包
- 方式一 快速二进制打包(适合内部/演示)
- 目录结构:
- myapp/
- DEBIAN/control(必选)
- usr/bin/(可执行文件)
- 生成 .deb:
- 控制文件示例(DEBIAN/control):
- Package: myapp
- Version: 1.0.0
- Architecture: amd64
- Maintainer: Your Name you@example.com
- Depends: libc6 (>= 2.17)
- Description: Short desc
- fakeroot dpkg-deb --build myapp
- 安装:sudo apt install ./myapp_1.0.0_amd64.deb
- 方式二 源码包与 debhelper(推荐,便于审核与维护)
- 安装打包工具:sudo apt install -y dh-make dpkg-dev debhelper fakeroot build-essential
- 生成模板:在干净源码目录执行 dh_make(选择单二进制/single)
- 编辑 debian/control:填写 Build-Depends(如 debhelper-compat、gfortran、libblas-dev、liblapack-dev、libopenmpi-dev 等)与 Depends
- 构建:dpkg-buildpackage -uc -us(生成 .deb、.dsc 等)
- 本地安装与验证:sudo apt install …/myapp_1.0.0_amd64.deb
- 质量检查与可复现构建
- 使用 lintian 检查常见打包问题
- 使用 pbuilder/sbuild 在干净环境编译,确保可复现
发布到 APT 仓库与分发
- 简易 APT 仓库(内部或公网均可)
- 目录结构:
- repo/
- dists/
- pool/
- main/
- m/myapp/myapp_1.0.0_amd64.deb
- 生成索引:
- cd repo && dpkg-scanpackages . /dev/null | gzip -9c > dists/stable/main/binary-amd64/Packages.gz
- 客户端使用:
- echo “deb [trusted=yes] https://your.domain/repo stable main” | sudo tee /etc/apt/sources.list.d/myapp.list
- sudo apt update && sudo apt install myapp
- 安全分发建议
- 使用 HTTPS 与 GPG 签名发布(apt-secure),避免 “trusted=yes”
- 对外发布前,确保版本号递增、changelog 规范、许可证与版权合规
进入 Debian 官方仓库的流程
- 提交 ITP(Intent To Package):reportbug wnpp,填写软件名、维护者、简介,防止重复打包并跟踪进度
- 打包与自检:按 Debian Policy 完成打包,使用 pbuilder 编译通过,lintian 检查无明显错误,完善 debian/copyright
- 寻找赞助人(RFS)
- 上传至 mentors.debian.net
- 发送 RFS 邮件至 debian-mentors@lists.debian.org 寻找赞助人上传
- 审核与迁移
- 上传后进入 unstable(sid)
- 满足条件后约 10 天 进入 testing,随下一版 stable 发布