如何将源码包转换为rpm包:以nginx为例

1. 背景:为什么要将源码包转化为rpm包呢?

1. 简化安装的过程,可以自动解决依赖关系,便于升级和卸载
2. 提高了软件的可移植性
3. 便于分发和共享

2. 转化过程

2.1. 安装将源码包转化为rpm包的工具

[root@test ~]# yum -y install rpm-build

2.2. 拷贝源码包到rpmbuild的工作目录

[root@test ~]# cp nginx-1.17.6.tar.gz  rpmbuild/SOURCES/

2.3. 安装nginx的依赖

[root@test ~]# yum -y install gcc make pcre-devel openssl-devel

2.4. 编辑配置文件

[root@test ~]# cat rpmbuild/SPECS/nginx.spec 
Name:nginx		
Version:1.17.6	
Release:1
Summary:test	


#Group:		
License:GPL	
URL:www.a.com		
Source0:nginx-1.17.6.tar.gz	


#BuildRequires:	
Requires:pcre-devel openssl-devel	


%description
test~~


%prep
%setup -q


%build
./configure
make %{?_smp_mflags}


%install
make install DESTDIR=%{buildroot}


%files
%doc
/usr/local/nginx/*


%changelog


[root@test ~]# 

2.5. 将源码包转换为rpm包

[root@test ~]# rpmbuild -ba rpmbuild/SPECS/nginx.spec

2.6. 执行rpmbuild之后生成rpm包

[root@test ~]# ls rpmbuild/RPMS/x86_64/nginx-1.17.6-1.x86_64.rpm 
rpmbuild/RPMS/x86_64/nginx-1.17.6-1.x86_64.rpm

2.7. 哪台机器要用到这个rpm包就可以拷贝到哪台机器了

3. 进一步操作-将做好的rpm包配成网络yum源

3.1. 安装httpd服务并启动

[root@test ~]# yum -y install httpd
[root@test ~]# systemctl start httpd

3.2. 在/var/www/html/目录下创建nginx目录,并将做好的rpm包复制到nginx目录下

root@test nginx]# cd /var/www/html/
[root@test html]# mkdir nginx
[root@test html]# ll
total 4
drwxr-xr-x 2 root root 4096 Sep  3 20:43 nginx
[root@test html]# 
[root@test html]# cp ~/rpmbuild/RPMS/x86_64/nginx-1.17.6-1.x86_64.rpm nginx/
[root@test html]# ls
nginx
[root@test html]# ls nginx/
nginx-1.17.6-1.x86_64.rpm

3.3. 安装生成yum源工具

[root@test ~]# yum -y install createrepo

3.4. 在/var/www/html/中执行以下命令

[root@test ~]# createrepo nginx

3.5. 将原本的yum源改一个名字

改之前:
[root@test ~]# ll /etc/yum.repos.d/
total 8
-rw-r--r-- 1 root root 675 Sep  3 20:05 CentOS-Base.repo
-rw-r--r-- 1 root root 230 Sep  3 20:05 epel.repo
改之后:
[root@test yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@test yum.repos.d]# mv epel.repo epel.repo.bak
[root@test yum.repos.d]# ls
CentOS-Base.repo.bak  epel.repo.bak

3.6. 创建自定义的yum源文件

[root@test yum.repos.d]# vim nginx.repo
[root@test yum.repos.d]# cat nginx.repo
[nginx]
name=nginx
baseurl=http://39.103.57.11:80/nginx
enable=1
gpgcheck=0
[root@test yum.repos.d]# ls
CentOS-Base.repo.bak  epel.repo.bak  nginx.repo

3.7. 浏览器查看

3.8. 通过yum安装nginx

[root@test ~]# yum -y install nginx

3.9. 停止httpd服务,不然会占用80端口

[root@test ~]# systemctl stop httpd

3.10. 启动nginx

[root@test ~]# /usr/local/nginx/sbin/nginx 
[root@test ~]# ss -lntup |  grep 80
udp    UNCONN     0      0         *:68                    *:*                   users:(("dhclient",pid=803,fd=6))
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=4927,fd=6),("nginx",pid=4926,fd=6))
[root@test ~]# 

3.11. 浏览器访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值