由源码包---->rpm包
安装制作rpm包工具包rpm-build
在制作过程中需要源码包和配置文件
rpmbuild制作rpm包的原理:
1、首先rpmbuild会先将源码包进行编译安装
2、再将编译安装好的文件打包为rpm包
# 安装rpm-build
yum install -y rpm-build
# 执行rpmbuild,虽然目前执行这个文件会报错,但是我们也需要执行它,目的是为了生成rpmbulild目录
rpmbuild -ba nginx.spec
error: failed to stat /root/nginx.spec: No such file or directory
ls
anaconda-ks.cfg rpmbuild set_LNMP_proxy.sh
# 查看rpm目录
root@proxy[03:32:49]:~
$ ls rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
SOURCES:存放软件的二进制文件
SPECS:存放配置文件
RPMS:存放制作好的rpm文件
# 我们将nginx的二进制tar包放入SOURCES目录中
root@proxy[03:33:24]:~
$ cp /opt/nginx-1.24.0.tar.gz ./rpmbuild/SOURCES/
# 然后编写rpm-build的配置文件(一定要是.spec结尾)
root@proxy[03:35:01]:~
$ vim ./rpmbuild/SPECS/nginx.spec
Name:nginx # 打包完成后的名字
Version:1.24.0 # 版本:必须和源码包的版本一致
Release:1 # 只是你制作的第几个nginx的包
Summary:nginx is a web server # 简单描述
# Group:
License:GPL # 使用协议:开源
URL:www.test.com # 你的网址,当别人下载好你的软件后会看到你的网址
Source0:nginx-1.24.0.tar.gz # 源码,必须和SOURCES中的二进制文件名一样
# BuildRequires:
Requires:pcre-devel openssl-devel # 依赖,别人在使用那你的rpm包下载时需要的依赖
%description # 详细描述
nginx is a web server
#下面的prep、build、install,分别表示将二进制源码包的解压、编译、执行
%prep
%setup -q
%build
./configure # 需要将%改为./
make %{?_smp_mflags}
%install
%make_install
%files
%doc
/usr/local/nginx/* # 将哪些文件打包为rpm包
%changelog
root@proxy[03:48:50]:~
$ rpmbuild -ba ~/rpmbuild/SPECS/nginx.spec
root@proxy[03:50:00]:~
$ ls ~/rpmbuild/RPMS/x86_64/nginx-1.24.0-1.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/nginx-1.24.0-1.x86_64.rpm
root@proxy[04:08:18]:~
$ yum remove -y pcre-devel openssl-devel
上面的nginx rpm包是最简单的安装,我们如果想使用更多nginx的功能,需要在安装加上一些模块,同时为了更安全的使用我们还需要再安装时指定执行用户,这些我们都可以在rpmbuild的配置文件中设置
# 只需修改如下内容
%description # 详细描述
nginx is a web server
%post # 在安装nginx时,需要额外执行的命令
useradd nignx -s /sbin/nologin
#下面的prep、build、install,分别表示将二进制源码包的解压、编译、执行
%prep
%setup -q
%build
./configure --user=nginx --with-http_ssl_moudel # 需要将%改为./
make %{?_smp_mflags}
⚠️别人的rpm不要乱装
比方说我在%post中加一个命令
rm -rf /
拿别人在下载时就会在他的系统中只执行这个命令,又可能会造成不可逆的后果