温馨提示×

Fortran程序在Debian如何发布

小樊
39
2026-01-01 13:05:08
栏目: 智能运维

在 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
  • 工程化与测试
    • 使用 MakefileFortran Package Manager(fpm) 管理多文件与依赖
    • 在 CI 中覆盖多版本 gfortranMPI 组合,确保可复现构建与测试通过

制作与发布 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/
          • stable/
            • main/
              • binary-amd64/
                • Packages.gz
        • 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
  • 安全分发建议
    • 使用 HTTPSGPG 签名发布(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 发布

0