使用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