Redis(SPEC文件打包)

1. 建立工作路径

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

2. 下载Redis源码

cd ~/rpmbuild/SOURCES
wget https://download.redis.io/releases/redis-6.2.5.tar.gz

3. 安装依赖、编译和打包工具

yum install -y rpm-build

#1、安装scl,它可以在不覆盖原有软件包的情况下与其共存,缺点就是仅支持64位
yum -y install centos-release-scl
 
#2、安装gcc,其中的9表示大版本号,默认安装大版本下的最新稳定版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
 
#3、使用以下命令临时启动gcc,这种方式适用于临时切换系统的gcc版本,即开即用,仅在当前bash中有效,重启虚拟机就又变成4.8.5了
scl enable devtoolset-9 bash
 
#4、使用以下命令永久启动gcc,这种方式适用于长期使用该版本进行编译,切换bash依然有效
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
 
#查看gcc环境
gcc -v

4. 编写SPEC文件

cd ~/rpmbuild/SPECS
vim redis_build.spec
# 软件名
Name:           redis
# 版本号
Version:        6.2.5
# 发布编号
Release:        1%{?dist}
# 软件说明
Summary(zh_CN): 这是redis项目
# 软件包的版权协议
License:        GPLv3+

URL:            https://download.redis.io/releases/
Source0:        redis-6.2.5.tar.gz

# 编译需要的依赖
BuildRequires: gcc
# 本软件需要的依赖
#Requires: 

%description -l zh_CN
这个是一个redis项目练手项目,进行redis打包等操作。

%prep
%setup -q

# 编译阶段执行的命令
%build
make

# 安装阶段执行的命令
%install
rm -rf %{buildroot}
make install PREFIX=%{buildroot}
cp %{_builddir}/%{name}-%{version}/redis.conf %{buildroot}/bin/

# 安装后执行的命令
%post
cat>/lib/systemd/system/redis.service<<-EOF
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/bin/redis-server
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF


# 卸载前执行的命令
%preun
rm -rf /lib/systemd/system/redis.service

# 将所需要打包的文件都存放到这边中;-f %{name}.lang 加上后的意思为声明找到的文件
%files
/bin/*

# 软件更新说明
%changelog

5.检查SPEC文件(可略)

rpmlint redis_build.spec

6.打包

centos7以及下命令:

cd ~/rpmbuild/SPECS
rpmbuild -ba redis_build.spec

centos8命令:

cd ~/rpmbuild/SPECS
rpmbuild -ba redis_build.spec --nodebuginfo

你可能感兴趣的:(RPM打包,Linux,linux)