HOME

IBM MQ 学习 02:Linux RPM 安装、许可接受与安装状态验证

文章目录10 节

这一章从 IBM_MQ_01 上的安装介质校验开始。第一章已经证明两台目标机适合做学习实验;现在进入 Linux RPM 安装路径。

已验证:安装介质上传到目标机

本地安装包:

路径: /Users/xiangjigong/飞牛同步/学习/IBM MQ
文件: IBM_MQ_9.2.0.7_LINUX_X86-64.tar.gz
大小: 1.0G
SHA256: 0c2bfad58c6e717928fa7f2f107fd81d414f2296cef818c94def531b500e662c

上传到目标机:

scp IBM_MQ_9.2.0.7_LINUX_X86-64.tar.gz root@192.168.64.14:/home/
IBM_MQ_9.2.0.7_LINUX_X86-64.tar.gz 100% 1046MB 27.7MB/s 00:37

目标机侧校验:

/home/IBM_MQ_9.2.0.7_LINUX_X86-64.tar.gz
SHA256: 0c2bfad58c6e717928fa7f2f107fd81d414f2296cef818c94def531b500e662c

目标机 tar -tzf 可读取安装包,前几项包括:

MQServer/
MQServer/MQSeriesServer-9.2.0-7.x86_64.rpm
MQServer/licenses/
MQServer/licenses/Lic_zh.txt
MQServer/repodata/
MQServer/IBM-MQ.repo

空间检查:

/     ext4  11G  4.2G  5.9G  42%
/home ext4  27G  1.2G   25G   5%
/opt  ext4  11G  4.2G  5.9G  42%
/var  ext4  11G  4.2G  5.9G  42%

结论:安装介质已经完整上传到 IBM_MQ_01:/home/,目标机侧哈希与本地一致,tar 结构可读,空间足够进入解压步骤。

下一批操作:解压安装介质并检查目录

目的:只解压安装介质,确认 MQServer/ 目录、mqlicense.sh 和关键 RPM 包存在;不接受许可、不安装 RPM。

# 进入安装介质所在目录
cd /home

# 解压前确认当前路径
pwd

# 解压前确认 /home、/、/opt、/var 的空间
df -hT /home / /opt /var

# 解压 IBM MQ 安装介质
tar -xzf IBM_MQ_9.2.0.7_LINUX_X86-64.tar.gz

# 确认解压后的 MQServer 目录存在
ls -ld /home/MQServer

# 确认许可脚本存在
ls -lh /home/MQServer/mqlicense.sh

# 确认后续最小学习安装会用到的关键 RPM 包存在
ls -lh /home/MQServer/MQSeriesRuntime-9.2.0-7.x86_64.rpm \
       /home/MQServer/MQSeriesServer-9.2.0-7.x86_64.rpm \
       /home/MQServer/MQSeriesSamples-9.2.0-7.x86_64.rpm \
       /home/MQServer/MQSeriesClient-9.2.0-7.x86_64.rpm \
       /home/MQServer/MQSeriesMsg_Zh_CN-9.2.0-7.x86_64.rpm

# 解压后再次确认空间余量
df -hT /home / /opt /var

停止点:做到目录和 RPM 包检查即可,不要执行 mqlicense.sh,也不要安装 RPM。

已验证:解压安装介质

解压后,/home/MQServer/ 已存在,mqlicense.sh 和关键 RPM 包都能看到:

/home/MQServer/mqlicense.sh
/home/MQServer/MQSeriesRuntime-9.2.0-7.x86_64.rpm
/home/MQServer/MQSeriesServer-9.2.0-7.x86_64.rpm
/home/MQServer/MQSeriesSamples-9.2.0-7.x86_64.rpm
/home/MQServer/MQSeriesClient-9.2.0-7.x86_64.rpm
/home/MQServer/MQSeriesMsg_Zh_CN-9.2.0-7.x86_64.rpm

空间变化:

解压前 /home: 25G total, 1.1G used, 23G available
解压后 /home: 25G total, 2.2G used, 22G available

结论:当前只完成了解压。IBM MQ 软件本体还没有安装,许可也还没有接受。

已验证:接受许可

IBM_MQ_01:/home/MQServer 中执行许可脚本,帮助信息显示支持 -accept 参数:

Usage: mqlicense.sh [-accept] [-text_only] [ -jre ( path_to_java | "path_to_java java_options" ) ] ][-h|-?]

执行接受许可后,脚本返回:

Agreement accepted:  Proceed with install.

许可接受后继续验证安装状态:

rpm -qa | grep -E '^MQSeries' | sort || true

这条命令无输出,说明仍没有已安装的 MQSeries* RPM 包。

ls -ld /opt/mqm 2>/dev/null || echo "/opt/mqm 还没有创建"
/opt/mqm 还没有创建
command -v dspmqver || echo "还未设置 dspmqver 环境变量"
还未设置 dspmqver 环境变量

结论:许可已经接受,但 IBM MQ 软件本体还没有安装。/opt/mqmdspmqver 都还不存在,这正好证明“接受许可”和“安装 RPM”是两个不同状态层。

已验证:RPM 模拟安装

真正安装前,我先把准备安装的最小学习包做了一次 rpm --test

MQSeriesRuntime 9.2.0-7 x86_64
MQSeriesGSKit 9.2.0-7 x86_64
MQSeriesServer 9.2.0-7 x86_64
MQSeriesClient 9.2.0-7 x86_64
MQSeriesSamples 9.2.0-7 x86_64
MQSeriesMsg_Zh_CN 9.2.0-7 x86_64

模拟安装结果:

rpm -ivh --test $MQ_RPMS
Preparing...                          ################################# [100%]

随后再次验证:

rpm -qa | grep -E '^MQSeries' | sort || true

这条命令仍然无输出,/opt/mqm 也仍然没有创建。

结论:rpm --test 只证明这批 RPM 的安装事务检查通过,没有发现依赖或冲突阻塞;它没有真正安装 IBM MQ。下一步才是实际安装。

已验证:实际安装 IBM MQ

真实安装时,RPM 脚本创建了 mqm 组和用户,并完成 6 个组件安装:

Creating group mqm
Creating user mqm
MQSeriesRuntime-9.2.0-7
MQSeriesGSKit-9.2.0-7
MQSeriesServer-9.2.0-7
MQSeriesClient-9.2.0-7
MQSeriesSamples-9.2.0-7
MQSeriesMsg_Zh_CN-9.2.0-7

安装后可以从 RPM 数据库看到这些包:

MQSeriesClient-9.2.0-7.x86_64
MQSeriesGSKit-9.2.0-7.x86_64
MQSeriesMsg_Zh_CN-9.2.0-7.x86_64
MQSeriesRuntime-9.2.0-7.x86_64
MQSeriesSamples-9.2.0-7.x86_64
MQSeriesServer-9.2.0-7.x86_64

/opt/mqm/var/mqm 也已经创建:

dr-xr-xr-x 14 mqm mqm 4096 Nov 24  2022 /opt/mqm
drwxrwsr-x 14 mqm mqm 4096 Jun 21 14:38 /var/mqm

dspmqver 显示当前版本为 9.2.0.7,安装路径为 /opt/mqm,数据路径为 /var/mqm,许可类型为 Production

安装登记一开始显示 Primary: No,随后执行 setmqinst -i -p /opt/mqm,再次查看后变成:

InstName:      Installation1
InstPath:      /opt/mqm
Version:       9.2.0.7
Primary:       Yes
State:         Available
LicenseType:   Production

这一步之后,IBM MQ 软件层已经可用,但队列管理器还没有创建。

已验证:创建并启动 QM1

队列管理器操作切换到 mqm 用户后执行。创建 QM1 时,MQ 创建了 /var/mqm/qmgrs/QM1,并创建了 83 个缺省对象:

crtmqm QM1
IBM MQ 队列管理器已创建。
已创建目录“/var/mqm/qmgrs/QM1”。
缺省对象统计:83 个已创建。0 个已替换。0 个已失败。

创建后,dspmq 显示:

QMNAME(QM1)                                               STATUS(已立即结束)

启动后,dspmq 显示:

QMNAME(QM1)                                               STATUS(正在运行)

启动时出现过 RLIMIT_NOFILE 偏低提醒。这个问题没有阻止学习环境启动,但后续需要单独处理资源限制。

已验证:MQSC 定义本地队列

进入 runmqsc QM1 后,先显示队列管理器:

QMNAME(QM1)                             DESCR( )

然后定义本地队列:

DEFINE QLOCAL(Q1.LEARN) DESCR('First learning local queue')
AMQ8006I: IBM MQ 队列已创建。

显示队列时可以看到:

QUEUE(Q1.LEARN)                         TYPE(QLOCAL)
CURDEPTH(0)                             DESCR(First learning local queue)
MAXDEPTH(5000)

这说明 MQSC 可以连接 QM1,并且 Q1.LEARN 已经创建。

已验证:第一条消息收发

使用样例程序往队列放入一条消息:

Sample AMQSPUT0 start
target queue is Q1.LEARN
hello ibm mq
Sample AMQSPUT0 end

放入后队列深度变成 1

CURDEPTH(1)

再用 amqsget 取出消息:

Sample AMQSGET0 start
message <hello ibm mq>

取出后队列深度回到 0

CURDEPTH(0)

至此,Q1.LEARN 已经完成第一条消息 put/get 验证。

本章小结

本章已经完成 IBM MQ 从安装介质到本地消息收发的最小闭环。

  • 已验证:上传、校验、解压、许可接受、RPM 模拟安装、真实安装、主安装、QM1 创建启动、Q1.LEARN 定义、第一条消息 put/get。
  • 环境改变:IBM_MQ_01 已安装 IBM MQ 9.2.0.7,/opt/mqm 是主安装,QM1 正在运行,Q1.LEARN 当前深度为 0
  • 关键概念:安装成功、队列管理器运行、队列存在、消息可收发是不同层次,需要分别证明。
  • 要记住的坑:rpm --test 不是安装;队列管理器操作应使用 mqm 用户;RLIMIT_NOFILE 偏低需要后续修正。
  • 下一步:学习队列管理器生命周期管理,并处理 mqm 用户资源限制。
IBM MQ Linux 中间件 技术分享