RPM 合并打包 Redis 和 Nginx

一、使用以下命令来安装所需的开发工具和依赖项:

1
2
3
4
5
su root
sudo yum install rpm-build
sudo yum install gcc make
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel
sudo yum install tcl

二、下载 NginxRedis 源码(或者将已有的文件夹拷贝进来)

1
2
3
4
5
6
7
8
9
10
# 下载 nginx
wget https://nginx.org/download/nginx-1.4.0.tar.gz
# 下载 redis
wget https://download.redis.io/releases/redis-4.0.0.tar.gz
# 解压 redis 和 nginx
tar -xzvf nginx-1.4.0.tar.gz
tar -xzvf redis-4.0.0.tar.gz
# 移动文件(如果是拷贝的文件直接跳到这一步)
mv nginx-1.4.0 /root/rpmbuild/SOURCES
mv redis-4.0.0 /root/rpmbuild/SOURCES

三、创建 .spec 配置文件

切换到 /root/rpmbuild/SPEC使用命令创建文件 nginx-redis.spec ,并输入下面的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Name: nginx-redis
Version: 1.0
Release: 1%{?dist}
Summary: Combined package of Nginx and Redis
License: MIT
URL: https://www.example.com

%description
This package contains a combined installation of Nginx and Redis.

%prep

%build
# Build Nginx
cd %{_sourcedir}/nginx
./configure --prefix=%{_prefix}/nginx
make %{?_smp_mflags}

# Build Redis
cd %{_sourcedir}/redis
make %{?_smp_mflags}

%install
# Install Nginx
make DESTDIR=%{buildroot} install -C %{_sourcedir}/nginx

# Install Redis
make PREFIX=%{buildroot}/%{_prefix}/redis install -C %{_sourcedir}/redis

%files
%defattr(-,root,root,-)
%doc
%{_prefix}/nginx/
%{_prefix}/redis/

%changelog
* Mon 7 19 2023 DDS <1099380657@qq.com.com> - 1.0-1
- Initial package release

关键部分如下:

  • Name:软件包的名称。
  • Version:软件包的版本号。
  • Release:软件包的发行号。
  • Summary:软件包的简要描述。
  • License:软件包的许可证类型。
  • URL:软件包的官方网站或URL。

接下来是%description部分,其中提供了软件包的描述信息。

%prep部分,可以执行一些准备操作,如解压源代码。

%build部分,我们进行Nginx和Redis的构建过程。我们首先进入源代码目录,然后使用适当的配置和命令进行构建。

%install部分,我们安装构建好的Nginx和Redis。我们使用make DESTDIR=%{buildroot} install将Nginx安装到构建根目录下,使用make PREFIX=%{buildroot}/usr/local/redis install将Redis安装到构建根目录下的usr/local/redis目录。

%files部分指定了软件包中需要包含的文件和目录。

最后,%changelog部分记录了软件包的变更历史。

请注意,这只是一个示例.spec文件,你可能需要根据实际需求进行修改和调整。还要确保在.spec文件中正确指定Nginx和Redis的构建和安装步骤,以及它们在文件系统中的安装位置。

四、开始打包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 在刚刚创建文件的目录别离开,输入以下语句
sudo rpm -ivh nginx-redis.rpm
# 提示出现以下语句证明打包成功
Provides: nginx-redis = 1.0-1.el7 nginx-redis(x86-64) = 1.0-1.el7
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.10)(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.17)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.2)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.6)(64bit) libc.so.6(GLIBC_2.7)(64bit) libcrypt.so.1()(64bit) libcrypt.so.1(GLIBC_2.2.5)(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libpcre.so.1()(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libpthread.so.0(GLIBC_2.3.2)(64bit) libz.so.1()(64bit) rtld(GNU_HASH)
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/nginx-redis-1.0-1.el7.x86_64
Wrote: /root/rpmbuild/SRPMS/nginx-redis-1.0-1.el7.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/nginx-redis-1.0-1.el7.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.Rrcvq1
+ umask 022
+ cd /root/rpmbuild/BUILD
+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/nginx-redis-1.0-1.el7.x86_64
+ exit 0#

打包完成之后的 rpm 文件会保存在 /root/rpmbuild/RPMS中。

五、使用 RPM

使用以下命令

1
sudo rpm -ivh redis-nginx.rpm
打包完成之后的路径在 /usr 路径下

RPM 合并打包 Redis 和 Nginx
https://tdsgpo.top/2023/08/01/RPM 合并打包 Redis 和 Nginx/
作者
DDS
发布于
2023年8月1日
许可协议