[Centos7]手动将源码包转换成可直接安装的RPM安装包。
这里以Nginx源码包举例。
首先理解,下载的软件包一般为tar格式,而rpm包,也是一种压缩方式。所谓的安装,其实就是解压缩。
yum -y install rpm-build //安装rpm-build,rpm包制作工具。
rpmbuild -ba xx.spec //使用此命令使系统在当前路径创建目录 rpmbuild
cd rpmbuild //进入目录
ls rpmbuild //查看目录会发现出现六个文件夹,以下简单介绍其中三个
目录结构:
RPMS //rpm成品
SOURCES //此目录放置程序源码
SPECS //里面写配置文件,记录要如何安装这个rpm
cp /root/nginx-1.12.2.tar.gz /root/rpmbuild/SOURCES/ //拷贝源码到指定位置
cd SPECS/ //进入SPECS目录
vim nginx.spec //新建spec文件(后缀格式必须为 .spec )
自动生成如下信息:(注意,加粗部分必须严格谨慎填写!其他部分任意填写。)
Name:nginx //软件名(严格按照文件名填写,程序会去SOURCES目录下查找) Version: 1.12.2 //版本号(严格按照文件名填写,原因同上) Release: 1 //第几次做RPM包(任意填写) Summary: //概述(任意填写) Group: //是否属于哪个组包(无就#注释) License: //建议输入GPL(GPL=自由/开源) URL: //网站 Source0:nginx-1.12.2.tar.gz //输入源码包名称 nginx-1.12.2.tar.gz (严格填写) BuildRequires: //建议注释,提示依赖关系,但不会解决。 Requires: //建议注释 %description //详细的描述信息 任意信息,详细描述。 %post //添加此行,预留脚本,装包时会自动运行。 useradd -s /sbin/nologin nginx //创建用户,提升安全性 %prep %setup -q //自动解压并cd进入目录 %build %configure //改为 ./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-stream 等需要的模块。 make %{?_smp_mflags} //自动make编译 %install make install DESTDIR=%{buildroot} //编译安装 %files //对哪些文件和目录打包,也就是你的程序。 %doc /usr/local/nginx/* //例如,这些是源码安装出的东西,提供此路径以打包。 %changelog |
:wq保存退出。
rpmbuild -ba nginx.spec //读取刚刚创建的 nginx.spec 开始打包 rpm 包。
检查:
[root@tset SPECS]# ls ../RPMS/x86_64/
nginx-1.12.2-1.x86_64.rpm //rpm安装包
nginx-debuginfo-1.12.2-1.x86_64.rpm //调试信息包
[root@tset SPECS]# yum -y install ../RPMS/x86_64/nginx-1.12.2-1.x86_64.rpm //安装使用即可
发表评论