如何将基于 iObjects Java 组件开发的程序打包生成 RPM 和 DEB 安装包

作者:刘程贤

1. 背景

  SuperMap iObjects JavaSuperMap Objects 家族中的一员,是基于超图共相式 GIS 内核进行开发的,采用 Java 技术的组件式 GIS 开发平台。

  SuperMap iObjects Java 具有跨平台能力,支持多种 CPU 架构,包括:x86ARMMIPS飞腾龙芯等;支持多种操作系统,包括:LinuxWindows中标麒麟银河麒麟深度等。

  某些基于 SuperMap iObjects Java 组件开发的程序,需要在 Linux 操作系统中运行,由于某些原因,部分 Linux 操作系统不支持 iObjects Java 组件解压使用,只能通过安装包安装使用,本篇主要讲述如何将基于 iObjects Java 组件开发的程序打包生成 RPMDEB 安装包。

2. 依赖环境

  能够生成 RPMDEB 安装包的工具有很多,本篇主要介绍操作非常简单的一种开源打包工具 fpmfpm 是一个 Linux 操作系统下的开源打包工具,可轻松为 Debian, Ubuntu, Fedora, CentOS, RHEL, Arch Linux, FreeBSD, macOS 等创建软件包。

  由于 Ubuntu 操作系统的镜像源更加完善,因此此番选择基于 Ubuntu 操作系统安装运行 fpm 工具进行打包。当前其他 Linux 操作系统也是支持运行 fpm 打包工具的,只是部分依赖环境可能需要手动升级,如 CentOS 7.x 操作系统,其镜像源中安装的 ruby 版本是 2.0.0,而 fpm 1.14.0 运行依赖 ruby 2.4.0 及以上版本,fpm 1.15.0 运行依赖 ruby 2.5.0 及以上版本。

名称 版本 下载地址
SuperMap iObjects Java 10i 及以上版本 SuperMap iObjects Java 组件下载地址
fpm 1.14.0 及以上版本 fpm 官网地址
Ubuntu 20.04 及以上版本 Ubuntu 操作系统下载地址

3. fpm 安装与环境准备

  • 3.1. 安装 fpm 工具依赖环境

    sudo apt install ruby-dev build-essential rpm -y
    

    安装 fpm 工具依赖环境.png

  • 3.2. 检查 gem 环境和版本

    gem -h
    gem -v
    

    检查 gem 环境和版本.png

  • 3.3. 通过 gem 安装 fpm

    sudo gem install fpm
    

    通过 gem 安装 fpm 打包工具.png

  • 3.4. 检查 fpm 版本

    fpm -v
    

    检查 fpm 版本.png

  当查询 fpm 版本有结果返回时,恭喜您 fpm 打包工具已正确安装,接下来就可以开始着手生成 RPMDEB 安装包。

  • 3.5. 新建 fpm 打包源文件目录

    mkdir packagebuild
    

    新建打包目录.png

  • 3.6. 将准备打包的程序放入打包目录

      将 IDEA 或 Eclipse 开发工具生成的程序 jar 包和包含 iObjects Java 运行依赖环境(及 iObjects Java 组件 Bin 目录)全部放入 packagebuild 打包目录。
    将基于 iObjects Java 组件开发的程序放入新建的 packagebuild 目录.png

4. fpm 打包

  fpm 打包命令常用参数

参数 说明
-s 指定 fpm 使用哪些源来构建包
-t 指定 fpm 构建目标包的包类型
-n 指定输出安装包的名称
-v 指定输出安装包的版本号
-C 指定打包的相对路径,即构建包的源目录
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 指定安装包的输出目录,默认不设置则输出在当前目录下
-prefix 指定安装包的默认安装路径

4.1. fpm 生成 RPM 安装包

fpm -s dir -t rpm -n CSuperMapiDesktop -v 11.1.0 --iteration 1 -C /home/ubuntu/packagebuild/CSuperMapiDesktop -f -p /home/ubuntu/packagebuild --prefix /opt/CSuperMapiDesktop

fpm 生成 rpm 安装包.png

4.2. fpm 生成 deb 安装包

参数 说明
–deb-no-default-config-files 默认情况下,不将 etc 中的所有文件添加为 debian 软件包的配置文件

  使用 fpm 打包工具生成 deb 安装包的时候,包名需小写,否则在打包过程中会抛警告信息,并自动转换为小写包名。

fpm -s dir -t deb -n csupermapidesktop -v 11.1.0 -C /home/ubuntu/packagebuild/CSuperMapiDesktop -f -p /home/ubuntu/packagebuild --prefix /opt/CSuperMapiDesktop --deb-no-default-config-files

fpm 生成 deb 安装包.png

5. 安装测试 fpm 生成的安装包

5.1. 在 CentOS 操作系统测试 fpm 生成的 rpm 安装包

  • 上传 fpm 生成的 rpm 安装包
    在 CentOS 操作系统上传 fpm 生成的 rpm 安装包.png

  • 使用 yum 安装

    sudo yum install CSuperMapiDesktop-11.1.0-1.x86_64.rpm -y
    

    在 CentOS 操作系统测试 fpm 生成的 rpm 安装包.png

  • 在安装目录下运行安装程序

    /opt/CSuperMapiDesktop/startup.sh
    

    在 CentOS 操作系统执行 rpm 安装程序的运行命令.png
    在 CentOS 操作系统运行 rpm 安装程序结果.png

5.2. 在 Ubuntu 操作系统测试 fpm 生成的 deb 安装包

  • 上传 fpm 生成的 deb 安装包
    在 Ubuntu 操作系统上传 fpm 生成的 deb 安装包.png

  • 使用 dpkg 安装

      由于是自行构建的 deb 安装包,安装时不建议使用 apt 进行安装,虽然 apt 能够安装成功,但最后会有关于 deb 安装包权限的异常提示输出。推荐使用 dpkg 命令安装自行构建的 deb 安装包。

    sudo dpkg -i csupermapidesktop_11.1.0_amd64.deb
    

    在 Ubuntu 操作系统测试 fpm 生成的 deb 安装包.png

  • 在安装目录下运行安装程序

    /opt/CSuperMapiDesktop/startup.sh
    

    在 Ubuntu 操作系统执行 deb 安装程序的运行命令.png
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/supermapsupport/article/details/132497455