创建 Apache Cassandra 的 RPM 包
为了简化部署和配置管理,将Cassandra所需的模块和设置以RPM软件包形式打包。
环境准备
Cassandra的开发环境
or
Cassandra的开发环境配置
首先,请设置Apache Cassandra的开发环境。
本次操作假定在上一页中设置的CentOS7上进行。
JUnit是一个用于Java编程语言的自动化测试框架。
请先下载并安装ant-junit,因为在rpmbuild时会用到。
$ curl -O http://mirror.centos.org/centos/7/os/x86_64/Packages/ant-junit-1.9.4-2.el7.noarch.rpm
安装
$ rpm -ivh ant-junit-1.9.4-2.el7.noarch.rpm
使用rpmbuild
安装 rpmbuild,这是创建 RPM 包所必需的。
-
- sudo yum install rpm-build
- sudo yum groupinstall ‘Development tools’
进行包装制作
切换到已克隆的Cassandra目录。
[shoshii@cassandra-1 cassandra]$ ls
CASSANDRA-14092.txt NOTICE.txt build-shaded-dtest-jar.sh data ide relocate-dependencies.pom
CHANGES.txt README.asc build.properties.default debian lib src
CONTRIBUTING.md TESTING.md build.xml doc logs test
LICENSE.txt bin cassandra.iml eclipse_compiler.properties pylib tools
NEWS.txt build conf examples redhat
[shoshii@cassandra-1 cassandra]$
参考 redhat/README.md,创建软件包。
$ ant artifacts -Drelease=true
$ mkdir -p build/rpmbuild/{BUILD,RPMS,SPECS,SRPMS}
$ rpmbuild --define="version 4.0.1" \
--define="revision $(date +"%Y%m%d")git$(git rev-parse --short HEAD)%{?dist}" \
--define "_topdir $(pwd)/build/rpmbuild" \
--define "_sourcedir $(pwd)/build" \
-ba redhat/cassandra.spec
请注意,将版本4.0.1的部分根据您所切换的分支进行修改。
[shoshii@cassandra-1 cassandra]$ ls -l build/rpmbuild/RPMS/noarch/
合計 43896
-rw-rw-r-- 1 shoshii shoshii 44940000 7月 15 07:12 cassandra-4.0.1-20210715git51f16a3.el7.noarch.rpm
-rw-rw-r-- 1 shoshii shoshii 6444 7月 15 07:12 cassandra-tools-4.0.1-20210715git51f16a3.el7.noarch.rpm
可以看到生成了两个RPM包,分别是Cassandra和Cassandra-tools。
如果出现rat-check的错误
在进行 rpmbuild 时,可能会出现类似如下的 rat-check 错误。在进行 Cassandra 使用的软件的许可证检查时,似乎会检查本不应该检查的文件。相关JIRA。
rat-check:
BUILD FAILED
/home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.build/build-rat.xml:79: Some files have missing or incorrect license information. Check RAT report in /home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/build/rat.txt for more details! \n Unapproved licenses:
/home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.circleci/config-2_1.yml.high_res.patch
/home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.circleci/config-2_1.yml.mid_res.patch
/home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.jenkins/Jenkinsfile
/home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/CASSANDRA-14092.txt
Total time: 7 seconds
作为临时解决措施,我在.build/build-rat.xml中添加了排除引发错误的文件的设置。如果您在自己的环境中遇到类似错误,您也可以通过这种处理方式来解决。
diff --git a/.build/build-rat.xml b/.build/build-rat.xml
index ce4e6f4..4c50c90 100644
--- a/.build/build-rat.xml
+++ b/.build/build-rat.xml
@@ -67,7 +67,14 @@
<exclude name="**/tools/cqlstress-example.yaml"/>
<exclude name="**/tools/cqlstress-insanity-example.yaml"/>
<exclude name="**/tools/cqlstress-lwt-example.yaml"/>
- <!-- NOTICE files -->
+ <exclude name="**/.idea/**/*"/>
+ <exclude name="**/.circleci/**/*"/>
+ <exclude name="**/.jenkins/**/*"/>
+ <exclude name="CASSANDRA-14092.txt"/>
+ <exclude name="CHANGES.txt"/>
+ <exclude name="README.asc"/>
+ <exclude name="build.properties.default"/>
+ <!-- NOTICE files -->
<exclude NAME="**/NOTICE.md"/>
<!-- LICENSE files -->
<exclude NAME="**/LICENSE.md"/>
安装和执行
使用rpm -ivh命令进行安装。
[shoshii@cassandra-1 cassandra]$ sudo rpm -ivh build/rpmbuild/RPMS/noarch/cassandra-4.0.1-20210715git51f16a3.el7.noarch.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:cassandra-4.0.1-20210715git51f16a################################# [100%]
[shoshii@cassandra-1 cassandra]$
使用sudo -u cassandra命令在Cassandra用户下执行。
[shoshii@cassandra-1 cassandra]$ sudo -u cassandra cassandra
[shoshii@cassandra-1 cassandra]$ CompilerOracle: dontinline org/apache/cassandra/db/Columns$Serializer.deserializeLargeSubset (Lorg/apache/cassandra/io/util/DataInputPlus;Lorg/apache/cassandra/db/Columns;I)Lorg/apache/cassandra/db/Columns;
...略
INFO [main] 2021-07-15 09:16:24,045 StorageService.java:2737 - Node localhost/127.0.0.1:7000 state jump to NORMAL
根据启动日志的最后一行显示,状态已成功跳转至正常状态,因此看来启动成功。
我尝试连接到通过cqlsh启动的Cassandra。
[shoshii@cassandra-1 cassandra]$ bin/cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh>
我已经连接上了。
安装和运行cassandra-tools。
在安装 Cassandra-Tools 时,虽然不是直接必需的,但可以为操作提供方便的工具。
[shoshii@cassandra-1 cassandra]$ sudo rpm -ivh build/rpmbuild/RPMS/noarch/cassandra-tools-4.0.1-20210715git51f16a3.el7.noarch.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:cassandra-tools-4.0.1-20210715git################################# [100%]
[shoshii@cassandra-1 cassandra]$
我们尝试使用nodetool status命令来检查集群状态。
[shoshii@cassandra-1 cassandra]$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 69.05 KiB 16 100.0% b2334131-34e5-45a4-bd89-35efcc73b2ed rack1
[shoshii@cassandra-1 cassandra]$
上面显示了Cassandra节点的状态、地址和负责的数据量。
在上面的显示中,状态(最左边的列)显示为UN。这是Up Normal的缩写,意味着Cassandra正常启动并能够接受处理。
请参考
这是我参考过的页面。
- 【簡単に解説】RPMパッケージを作成する方法
以上就是。