linux

使用rpmbuild 打rpm包

yum install rpmbuild rpmdevtools

1. 创建目录:

rpmdev-setuptree

用户目录下新建rpmbuild目录,在rpmbuild目录下建如下目录: rpmbuild/ ├── BUILD #打包过程中的工作目录
├── RPMS #存放生成的二进制包 ├── SOURCES #放置打包资源,包括源码打包文件和补丁文件等 ├── SPECS #放置SPEC文档 └── SRPMS #存放生成的源码包

2.源码打包nginx

在SPECS目录下新建nginx.spec文件

Name:nginx		
Version:1.24.0		
Release:        1%{?dist}		
Summary:this is a web server
#Group:         
License:GPL		
URL:www.abc.com		
Source0:nginx-1.24.0.tar.gz	
#BuildRequires:		
#Requires:      

%description
this is a web server to.

%post

%prep
%setup -q		
%build
./configure --prefix=/usr/local/nginx
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%doc
/usr/local/nginx/*		
%changelog

将 nginx-1.24.0.tar.gz 文件放到SOURCES 目录

rpmbuild -bb nginx.spec

打包好的rpm包在RPMS 目录 安装 : rpm -ivh nginx-1.24.0-1.el7.x86_64.rpm –nodeps –force

3.docker二进制文件打包rpm

进入SPECS目录新建

docker.spec文件

Summary: docker package.
Name: docker
Version: 20.10.2
Release: 200
License: GPL
Group: denglibin
AutoReqProv: no
 
%description
docker process rpm.
 
%prep
%build
%install
 
%files
/usr/bin/runc
/usr/bin/dockerd
/usr/bin/docker-proxy
/usr/bin/docker-init
/usr/bin/docker
/usr/bin/ctr
/usr/bin/containerd-shim-runc-v2
/usr/bin/containerd-shim
/usr/bin/containerd

进入BUILDROOOT目录 新建 docker-20.10.2-200.aarch64 目录(Name-Version-Release.aarch64) 将 docker二进制文件(runc, docker-proxy等)拷贝到docker-20.10.2-200.aarch64目录下的/usr/bin目录

进入SPEC目录执行

rpmbuild -bb docker.spec

4. 文件夹打rpm包

注释掉: /root/.rpmmacros的 %__arch_install_post这一行(前面加#) 将文件夹paddle_ocr放到 /root/rpmbuild/SOURCES/目录

Name:paddle_ocr
Version:1.0
Release:0%{?dist}
Summary: paddle_ocr
Group:test
License:GPL
AutoReqProv: no
BuildRoot:%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%description -l zh_CN
"the tools for test"
%prep
echo "Nothong to do"
%global __os_install_post %{nil}
%install
cd %{_sourcedir}
cp -ar * %{buildroot}/
%files
/paddle_ocr
%postun
rm -rf /paddle_ocr

rpmbuild -bb paddle_ocr.spec

5. redis打包

https://download.redis.io/releases/redis-6.2.5.tar.gz 放到SOURCES目录

# 软件名
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

关于作者

程序员,软件工程师,java, golang, rust, c, python,vue, Springboot, mybatis, mysql,elasticsearch, docker, maven, gcc, linux, ubuntu, centos, axum,llm, paddlepaddle, onlyoffice,minio,银河麒麟,中科方德,rpm