1、打包/压缩
mkdir -p /backup
chown -R apps:apps /backup
chmod -R 755 /backup
su - apps
cd /backup/
tar -czvf mysql57-x86_64.tar.gz /apps
tar -xzvf mysql57-x86_64.tar.gz .
2、安装rpm-build
yum install rpm-build
su - apps
mkdir -pv rpmbuild/{BUILD,SOURCES,SPECS,RPMS,SRPMS}
tree /home/apps/rpmbuild/
vim ~/.rpmmacros
%_topdir /home/apps/rpmbuild
%_prefix /apps
%debug_package %{nil}
3、拷贝二进制文件
cd /root/rpmbuild/SOURCES
cp /backup/mysql57-x86_64.tar.gz .
4.配置spec
cd /home/apps/rpmbuild/SPECS
vim yunbee-mysql57-suite-v2.0.spec
chmod 755 yunbee-mysql57-suite-v2.0.spec
5.构建rpm包
su - apps
rpmbuild -bb yunbee-mysql57-suite-v2.0.spec #用bb参数生成rpm包
rpmbuild -bc yunbee-mysql57-suite-v2.0.spec #bc只是部分执行,不能生成rpm包的。
rpmbuild --showrc
rpmbuild --showrc |grep _topdir
rpmbuild --showrc |grep _tmppath
rpmbuild --showrc|grep _prefix
编译命令说明:
rpmbuild
-ba 既生成src.rpm又生成二进制rpm
-bs 只生成src的rpm
-bb 只生二进制的rpm
-bp 执行到pre
-bc 执行到 build段
-bi 执行install段
-bl 检测有文件没包含
spec配制文件
1、%setup -q -n
tar解压出来的顶级目录如果和tar包名不同,一定要在%setup -q -n
【这里写解压后生成的目录】这里指定,原则就是这样,你的具体环境我也看不到,哪里有错得自己看看。
1、普通用户可以打包,但需要配置一个~/..rpmmacros
内容类似:
%_topdir /home/apps/rpmbuild
%_prefix /apps
%debug_package %{nil}
这里都改成普通用户可写的目录
2、如果解压目录覆盖了mysql运行目录,肯定要关闭。
但正常来说不会覆盖的,都在那个BUILDROOT下进行文件复制。
3、把带 SOURCE1的地方去掉
这就是你%install里的cp -rv那部分。
4、这个命名:vipshop-mysqlpay56-suite-1.0.3-1.x86_64是哪个变量过来的?
这个是spec文件里的name version之类变量组合起来的。
5.去掉:/apps/conf/mysql/.cnf相关的行
5.error: File not found by glob: /root/rpmbuild/BUILDROOT/yunbee-mysql57-suite-2.1.0-1.x86_64/usr/logs/
执行如下:
echo "%_prefix /apps" > ~/.rpmmacros
6.error: File not found by glob: /root/rpmbuild/BUILDROOT/yunbee-mysql57-suite-2.1.0-1.x86_64/apps/dbdat/
一个道理,那两个目录下没有东西
那两个在%files下声明要打包的安装目录,实际在BUILDROOT临时安装目录下不存在。