将源码包打包成RPM包

发布于 2019-11-05  257 次阅读


RPM
1,描述信息
2,对源码安装后的数据压缩rpm

应用的场景

打包流程

1、安装rpm-build软件

#yum -y install rpm-build
#rpmbuild -ba nginx.spec //会报错,没有那个文件或目录
#cd rpmbuild/

将源码软件复制到SOURCES目录下

#cp /lnmp_soft/nginx-1.10.3.tar.gz /root/rpmbuild/SOURCES/
#vim SPECS/nginx.spec (SPECS/下vim自动生成xx.spec配置文件)
---------------------------------------------------------------------------------------
Name:nginx                 //软件名称
Version:1.10.3             //软件版本
Release:2                  //RPM版本
Summary:This is a web      //描述

#Group:                    //软件组
License:GPL                //协议
URL:www.ainiwan.com        //网址
Source0:nginx-1.10.3.tar.gz    //源码文件

#BuildRequires:            //编译时依赖包
#Requires:                 //安装时依赖包

%description               //详细描述
nginx [engine x] is an HTTP and reverse proxy server.

%post                      //
useradd nginx              //非必需操作:安装后脚本(创建账户)

%prep                      //安装前准备,解压
%setup -q                  //自动解压源码包,并cd进入目录

%build                     //编译需要执行的命令
./configure (--prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-stream         --with-http_stub_status_module  )

make %{?_smp_mflags}       //

%install                   //安装时需要执行的指令
make install DESTDIR=%{buildroot}

%files                     //定义打包文件列表
%doc                       //说明文件
/usr/local/nginx/*

%changelog                 //软件修改历史
--------------------------------------------------------------------------------------------

 

#rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
## ls RPMS/x86_64/
nginx-1.10.3-2.x86_64.rpm  nginx-debuginfo-1.10.3-2.x86_64.rpm

==================打包完工==============

     将打包成rpm的nginx安装
#yum -y install gcc pcre-devel.i686 openssl-devel.i686 zlib-devel.i686 
#netstat -antlp | grep 80
#systemctl stop httpd.service
#rpm -ivh RPMS/x86_64/nginx-1.12.2-6.x86_64.rpm
#/usr/local/nginx/sbin/nginx 
#netstat -antlp | grep 80
#curl http://127.0.0.1/

==================安装完工================
原文链接:https://blog.csdn.net/weixin_41619143/article/details/88577384

 

2、通过SRCRPM包制作RPM包

SRCRPM包的作用中要用于升级红帽自带的RPM包,因为软件包中带了很多patch包
下载zip的src.rpm包,并安装,查看spec文件,进一步理解rpm构建流程。

# wget ftp://ftp.redhat.com/redhat/linux/enterprise/5Server/en/os/SRPMS/zip-2.31-2.el5.src.rpm
# rpm -ivh zip-2.31-2.el5.src.rpm --安装src.rpm包,在RHEL5默认安装在/usr/src/redhat目录中
# rpm -qpl zip-2.31-2.el5.src.rpm
warning: zip-2.31-2.el5.src.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
exec-shield.patch
zcrypt29.tar.gz
zip-2.3-currdir.patch
zip-2.31-configure.patch
zip-2.31-install.patch
zip-2.31-near-4GB.patch
zip-2.31-umask_mode.patch
zip.spec
zip23-umask.patch
zip23.patch
zip231.tar.gz
# less /usr/src/redhat/SPECS/zip.spec --查看并分析spec配置文件
# rpmbuild -bb /usr/src/redhat/SPECS/zip.spec --制作RPM包,这次只制作rpm包,不再创建源码包。
# ls /usr/src/redhat/RPMS/i386/zip-*
/usr/src/redhat/RPMS/i386/zip-2.31-2.i386.rpm /usr/src/redhat/RPMS/i386/zip-debuginfo-2.31-2.i386.rpm

3、给RPM包签名,并制作成YUM源

GnuPG 和 RPM签名
你应该对由你创建的所有包签名。签名有助于系统和系统管理员确认包真实来自于你而非其他试图冒充你的人。在自动更新站点这个功能尤为重要,比如RedHat、openSuSE 、 CentOS等站点,它们提供了7x24小时的下载更新和自动更新服务,如果其更新包被伪造后果将极其严重。在你做RPM包签名之前,你需要首先生成GnuPG签名,如果你之前已经有了签名文件,默认它应该在%{HOME}/.gnupg目录中。

1. RPM包应进行数字签名,以协助包的有效性检查
2. 创建包RPM签名的步骤

# gpg --gen-key --生成gpg密钥对

○ 创建GPG密钥对,设置~/.rpmmacros

# vim ~/.rpmmacros
%_signature gpg
%_gpg_path /root/.gnupg
%_gpg_name kanghuikai (test) <kanghuikai@uplooking.com>

○ rpm --resign packagefile (rpm resign --> ~/.rpmmacros --> ~/.gnupg/):

# rpm --resign *.rpm
Enter pass phrase: --输入私钥的加密密码

3.制作yum源

# mkdir /yum
# cd /usr/src/redhat/RPMS/i386/
# cp zip-2.31-2.i386.rpm nginx-0.8.42-1.i386.rpm hello-1.0-1.i386.rpm /yum
# mount /dev/cdrom /mnt
# cd /mnt/Server
# rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm 
# cd /yum
# createrepo ./

4、导出公钥存放到仓库中去:

# gpg --list-key /root/.gnupg/pubring.gpg
------------------------
pub 1024D/9E7F6840 2012-04-12
uid test01 (test) <test01@uplooking.com>
sub 1024g/D6047D24 2012-04-12

# gpg --export --armor 9E7F6840 > /yum/RPM-GPG-KEY
# chmod +r /yum/RPM-GPG-KEY

5、在客户端上测试yum源:

# vim /etc/yum.repos.d/yum.repo
[yum]
name=a test yum source
baseurl=ftp://192.168.0.200/
gpgcheck=1
gpgkey=ftp://192.168.0.200/RPM-GPG-KEY
enable=1

# yum -y install vsftpd

在rpm命令中使用 -K 参数进行签名验证:
# rpm -K hello-1.0-1.i386.rpm

使用rpm命令来导入公钥
# rpm --import /path/to/your/gpg-pub-key