最近项目发布包要求用rpm制作,为了适应马上要执行的自动化部署要求。RPM build是专门为了制作rpm的工具,使用也很简单,基本上按要求写好spec,然后运行rpmbuild –bb *.spec即可制作好rpm, 存放在/usr/src/redhat/RPMS/$platform/packagename-$version-$release.$platform.rpmspec文件举例如下:
Summary:
Name: slimg2jc
Version: 1.2
Release: 2011
License:
Group:
BuildRoot: /tmp/slimbuild/rpmsrc
%define slimversion_previous 6.16
 
%description
 
%prep
 
%build
 
%install
 
%check
 
%files
/a/b
/c/d
 
%defattr(-,root,root)
%doc %attr(0444,root,root)
 
%pre
 
%post
 
%postun
 
简单介绍这些参数:
Summary: 包的简介
Name: 包名
Version: 包版本号
Release: 发布号
License: 许可类型
Group: 发布组
BuildRoot: 包文件目录的虚拟根目录对应目录,在build服务器可以基于此目录布局包目录
%define var1 val1 定义变量var1值为val1。并且此变量和NameVersion, Release等一样是用%{var1}来引用。而shell里的变量还是${var2}来引用。
%description:包说明
%prep:准备配置,跟autoconf/make结合使用。
%build:编译包应用程序,跟autoconf/make结合使用。
%install:生成包应用程序到对应目录,跟autoconf/make结合使用。
%check:测试应用程序,跟autoconf/make结合使用。
%files:包目录结果,目录代表其下所有文件,可以包含%doc, %attr, %conf%exclude来灵活定义包目录结构
%defattr(-,root,root):定义包默认宿主为root组,root用户,权限模式为umask定义(也可以用0777等模式值显式指定)。
%pre: 安装前运行的脚本
%post:安装后运行的脚本
%postun:卸载后运行的脚本
%preun: 卸载前运行的脚本
 
另外,所有4shell里可以获得$1系统变量,该值在安装时为0,卸载时为1,升级时为2
网络上说preun会在升级安装时得到执行,postun在升级安装不会执行。根据个人实践,postun会在升级安装时执行,比如1.1升级到1.21.1postun定义会得到执行。并且升级的执行顺序还是1.2的安装,1.1的卸载。所以1.1postun最后执行。记住:$1un/ins都是相对的。比如1.1升级到1.2,对于1.1rpm shell来说就是卸载。
 
补充几个有用的命令来实现包的管理:
#rpm –ev –repackage Package1(卸载包并且备份包到/var/spool/repackage/package1.rpm, 更改的配置还得到保留)
#rpm –ivh –nomd5 –nodigest Repakcage1 (重装备份rpm包,因为备份包包含更新的配置,所以校验通不过,加参数忽略)
 
Jmeter是测试SOAP web服务的好工具,不过如果测试基于HTTPS的站点时,你要注意一个问题,如果你的站点SSL证书是没有CA认证,而是自己用jdk keytool生成的,那就需要加配置来读取证书了。方法是找到Jmeter启动文件比如jmeter.bat,定位到JAVA启动命令行,加如下宏参数, 证书库文件路径, 库文件密码(同证书密码)。
-Djavax.net.ssl.trustStore=d:\ Path1\tclient.keystore -Djavx.net.ssl.trustStorePassword=changeit