一、使用以下命令来安装所需的开发工具和依赖项:
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
|
二、下载 Nginx
和 Redis
源码(或者将已有的文件夹拷贝进来)
1 2 3 4 5 6 7 8 9 10
| wget https://nginx.org/download/nginx-1.4.0.tar.gz
wget https://download.redis.io/releases/redis-4.0.0.tar.gz
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
cd %{_sourcedir}/nginx ./configure --prefix=%{_prefix}/nginx make %{?_smp_mflags}
cd %{_sourcedir}/redis make %{?_smp_mflags}
%install
make DESTDIR=%{buildroot} install -C %{_sourcedir}/nginx
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
路径下