您的位置:

CentOS 7 RPM - 从入门到精通

一、RPM概述

RPM是"RedHat Package Manager"的缩写,它是一种软件包管理器,主要用于管理Linux系统中的软件安装、升级、删除等操作。在CentOS 7中,RPM被广泛应用于系统软件和第三方软件的管理。

RPM软件包格式通常包含如下信息:

  • 软件包名称(Name)
  • 软件包版本号(Version)
  • 软件包发布号(Release)
  • 软件包厂商(Vendor)
  • 软件包描述(Summary)
  • 软件包详细描述(Description)
  • 软件包依赖项(Depends)
  • 软件包安装后需要执行的脚本(%post)
  • 软件包卸载前需要执行的脚本(%preun)

下面我们将通过实例来介绍如何使用RPM进行软件包的管理。

二、RPM命令的基本使用

RPM命令是CentOS 7系统中最重要的命令之一,通过RPM命令可以安装、更新、卸载软件包。以下是RPM命令常用的选项和用法:

  • 安装软件包:rpm -ivh 包名.rpm
  •     
    rpm -ivh nginx-1.18.0-1.el7.x86_64.rpm
        
      
  • 升级软件包:rpm -Uvh 包名.rpm
  •     
    rpm -Uvh nginx-1.20.0-1.el7.x86_64.rpm
        
      
  • 卸载软件包:rpm -e 包名
  •     
    rpm -e nginx
        
      
  • 列出系统中已安装的软件包:rpm -qa
  •     
    rpm -qa
        
      
  • 查看软件包信息:rpm -qi 包名
  •     
    rpm -qi nginx
        
      
  • 查看软件包文件列表:rpm -ql 包名
  •     
    rpm -ql nginx
        
      
  • 查看软件包依赖项:rpm -qR 包名
  •     
    rpm -qR nginx
        
      
  • 从RPM包中提取文件:rpm2cpio 包名.rpm | cpio -idvm 文件路径
  •     
    rpm2cpio nginx-1.20.0-1.el7.x86_64.rpm | cpio -idvm ./usr/sbin/nginx
        
      

三、RPM的高级用法

1. 使用Yum进行软件管理

Yum也是一种基于RPM的软件包管理器,它可以实现自动下载和安装软件包的功能。Yum的使用相对于RPM更加便捷,下面我们通过实例来介绍如何使用Yum进行软件包管理:

  • 安装软件包:yum install 软件包名
  •     
    yum install nginx
        
      
  • 升级软件包:yum update 软件包名
  •     
    yum update nginx
        
      
  • 卸载软件包:yum remove 软件包名
  •     
    yum remove nginx
        
      
  • 搜索软件包:yum search 软件包名称
  •     
    yum search nginx
        
      

2. 使用RPM进行软件打包

在CentOS 7中,我们也可以使用RPM进行软件包的制作,并进行自定义配置。下面我们通过实例来介绍如何使用RPM进行软件包的打包:

  • 安装RPM打包工具:yum install rpm-build
  •     
    yum install rpm-build
        
      
  • 创建RPM包目录结构
  •     
    mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
        
      
  • 下载需要打包的软件包
  •     
    wget https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm
        
      
  • 创建 spec 文件
  •     
    cat << EOF > ~/rpmbuild/SPECS/nginx.spec
    Name: nginx
    Version: 1.20.0
    Release: 1
    Summary: High Performance Web Server
    Group: System Environment/Daemons
    License: GPLv2
    URL: http://nginx.org/
    
    %description
    Nginx ("engine X") is a high-performance web server. It is a scalable, multi-threaded web server which can be used as a reverse proxy, load balancer, mail proxy, and HTTP cache.
    
    %prep
    %setup -q
    
    %build
    ./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-debug
    make %{?_smp_mflags}
    
    %install
    make DESTDIR=%{buildroot} install
    
    %pre
    /usr/sbin/groupadd -r nginx &> /dev/null || :
    /usr/sbin/useradd -r -g nginx -s /sbin/nologin -d /usr/share/nginx -c "nginx user" nginx &> /dev/null || :
    
    %files
    %defattr(-,root,root)
    %doc LICENSE README
    %{buildroot}/%{_sbindir}/nginx
    %dir %{buildroot}/usr/share/nginx
    %dir %{buildroot}/usr/share/nginx/html
    %dir %{buildroot}/usr/share/nginx/icons
    %dir %{buildroot}/usr/share/nginx/modules
    %{buildroot}/usr/share/nginx/html/*
    %{buildroot}/usr/share/nginx/icons/*
    %{buildroot}/usr/lib64/nginx/modules/*.so
    %{_mandir}/man8/*
    %{_sysconfdir}/nginx/*
    %{_unitdir}/nginx.service
    %{_tmpfilesdir}/nginx.conf
    EOF
        
      
  • 生成 RPM 包
  •     
    rpmbuild -bb ~/rpmbuild/SPECS/nginx.spec
        
      
  • 查看 RPM 包
  •     
    ls -lh ~/rpmbuild/RPMS/x86_64/nginx-1.20.0-1.el7.x86_64.rpm
        
      

四、小结

本文简要介绍了CentOS 7中的RPM软件包管理器、使用Yum进行软件包管理、使用RPM进行软件包的打包,希望能够对大家有所帮助。