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/mqm 和 dspmqver 都还不存在,这正好证明“接受许可”和“安装 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/mqmdspmqver 显示当前版本为 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用户资源限制。