rpm包管理及yum命令以及创建yum仓库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: rpm包管理及yum命令以及创建yum仓库
本文章为原创,如有转载,请注明出处

1. yum命令

yum 命令:用于添加/删除/更新RPM包,自动解决包的依赖问题以及系统更新升级

参数

-e [error level], --errorlevel=[error level] 错误输出级别
-q, --quiet 安静的操作
-t 忽略错误
-R[分钟] 设置等待时间
-y 自动应答yes
--skip-broken 忽略依赖问题
--nogpgcheck 忽略GPG验证

check-update 检查可更新的包
clean all 清除全部
clean packages 清除临时包文件(/var/cache/yum 下文件)
clean headers 清除rpm头文件
clean oldheaders 清除旧的rpm头文件
deplist 列出包的依赖
list 可安装和可更新的RPM包
list installed 已安装的包
list extras 已安装且不在资源库的包
info 可安装和可更新的RPM包 信息
info installed 已安装包的信息(-qa 参数相似)
install[RPM包] 安装包
localinstall 安装本地的 RPM包
update[RPM包] 更新包
upgrade 升级系统
search[关键词] 搜索包
provides[关键词] 搜索特定包文件名
reinstall[RPM包] 重新安装包
repolist 显示资源库的配置
resolvedep 指定依赖
remove[RPM包] 卸载包
  1. 例子

1,安装

[root@localhost ~]# yum install php53        #安装php5.3

[root@localhost ~]# yum groupinstall "MySQL Server"    #安装mysql数据库组

2,更新和升级

[root@localhost ~]# yum update              #全部更新

[root@localhost ~]# yum update  php53       #更新php

[root@localhost ~]# yum check-update        #检查可更新的程序

[root@localhost ~]# yum upgrade php53       #升级php53

[root@localhost ~]# yum groupupdate "MySQL Server"    #升级mysql服务组

3,查找和显示

[root@localhost ~]# yum info php53          #查看php53的安装信息

[root@localhost ~]# yum list                #列出所有可安装的程序包

[root@localhost ~]# yum list php53         #列出所有php53的程序包

[root@localhost ~]# yum groupinfo "MySQL Server"    #查看mysql服务组的,相关安装包

[root@localhost ~]# yum deplist php53      #查看php53依赖情况

4,删除

[root@localhost ~]# yum remove php53          #删除php53

[root@localhost ~]# yum groupremove "MySQL Server"    #删除mysql服务组

5,清除缓存

[root@localhost ~]# yum clean packages            #清除缓存目录下的软件包

[root@localhost ~]# yum clean headers             #清除缓存目录下的 headers

[root@localhost ~]# yum clean oldheaders          #清除缓存目录下旧的 headers

[root@localhost ~]# yum clean, yum clean all      #清除所有

2. rpm

rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。以下的例子都以example-1.2.3-1.i386.rpm代表对象软件包的名称
  1. 安装选项
命令格式: 
rpm -i ( or --install) options file1.rpm ... fileN.rpm 

参数: 
file1.rpm ... fileN.rpm 将要安装的RPM包的文件名 

详细选项: 

-h (or --hash) 安装时输出hash记号 (``#'') 
--test 只对安装进行测试,并不实际安装。 
--percent 以百分比的形式输出安装的进度。 
--excludedocs 不安装软件包中的文档文件 
--includedocs 安装文档 
--replacepkgs 强制重新安装已经安装的软件包 
--replacefiles 替换属于其它软件包的文件 
--force 忽略软件包及文件的冲突 
--noscripts 不运行预安装和后安装脚本 
--prefix 将软件包安装到由 指定的路径下 
--ignorearch 不校验软件包的结构 
--ignoreos 不检查软件包运行的操作系统 
--nodeps 不检查依赖性关系 
--ftpproxy 用 作为 FTP代理 
--ftpport 指定FTP的端口号为 

通用选项 

-v 显示附加信息 
-vv 显示更加详细的信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安 
装程序都会安装到这个目录下 
--rcfile 设置rpmrc文件为 
--dbpath 设置RPM 资料库存所在的路径为 
  1. 删除选项
命令格式: 
rpm -e ( or --erase) options pkg1 ... pkgN 

参数 
pkg1 ... pkgN :要删除的软件包 

详细选项 

--test 只执行删除的测试 
--noscripts 不运行预安装和后安装脚本程序 
--nodeps 不检查依赖性 

通用选项 

-vv 显示调试信息 
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装 
程序都会安装到这个目录下 
--rcfile 设置rpmrc文件为 
--dbpath 设置RPM 资料库存所在的路径为 
  1. 升级选项
命令格式 
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm 

参数 
file1.rpm ... fileN.rpm 软件包的名字 

详细选项 

-h (or --hash) 安装时输出hash记号 (``#'') 
--oldpackage 允许"升级"到一个老版本 
--test 只进行升级测试 
--excludedocs 不安装软件包中的文档文件 
-F, --freshen=+     如果软件包已经安装,升级软件包
--includedocs 安装文档 
--replacepkgs 强制重新安装已经安装的软件包 
--replacefiles 替换属于其它软件包的文件 
--force 忽略软件包及文件的冲突 
--percent 以百分比的形式输出安装的进度。 
--noscripts 不运行预安装和后安装脚本 
--prefix 将软件包安装到由 指定的路径下 
--ignorearch 不校验软件包的结构 
--ignoreos 不检查软件包运行的操作系统 
--nodeps 不检查依赖性关系 
--ftpproxy 用 作为 FTP代理 
--ftpport 指定FTP的端口号为 

通用选项 

-v 显示附加信息 
-vv 显示调试信息 
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
--rcfile 设置rpmrc文件为 
--dbpath 设置RPM 资料库存所在的路径为 
  1. 查询选项
命令格式: 

rpm -q ( or --query) options 

参数: 
pkg1 ... pkgN :查询已安装的软件包 

详细选项 
-p (or ``-'') 查询软件包的文件 
-f 查询属于哪个软件包 
-a 查询所有安装的软件包 
--whatprovides 查询提供了 功能的软件包 
-g 查询属于 组的软件包 
--whatrequires 查询所有需要 功能的软件包 

信息选项 

显示软件包的全部标识 
-i 显示软件包的概要信息 
-l 显示软件包中的文件列表 
-c 显示配置文件列表 
-d 显示文档文件列表 
-s 显示软件包中文件列表并显示每个文件的状态 
--scripts 显示安装、卸载、校验脚本 
--queryformat (or --qf) 以用户指定的方式显示查询信息 
--dump 显示每个文件的所有已校验信息 
--provides 显示软件包提供的功能 
--requires (or -R) 显示软件包所需的功能 

通用选项 

-v 显示附加信息 
-vv 显示调试信息 
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
--rcfile 设置rpmrc文件为 
--dbpath 设置RPM 资料库存所在的路径为 
  1. 校验已安装的软件包
命令格式: 

rpm -V ( or --verify, or -y) options 

参数 
pkg1 ... pkgN 将要校验的软件包名 

软件包选项 

-p Verify against package file 
-f 校验所属的软件包 
-a Verify 校验所有的软件包 
-g 校验所有属于组 的软件包 

详细选项 

--noscripts 不运行校验脚本 
--nodeps 不校验依赖性 
--nofiles 不校验文件属性 

通用选项 

-v 显示附加信息 
-vv 显示调试信息 
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
--rcfile 设置rpmrc文件为 
--dbpath 设置RPM 资料库存所在的路径为
  1. 校验软件包中的文件
语法: 

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm 

参数: 
file1.rpm ... fileN.rpm 软件包的文件名 
Checksig--详细选项 
--nopgp 不校验GPG签名 

通用选项 

-v 显示附加信息 
-vv 显示调试信息 
--rcfile 设置rpmrc文件为 
  1. 其它rpm选项
--rebuilddb 重建RPM资料库 
--initdb 创建一个新的RPM资料库 
--quiet 尽可能的减少输出 
--help 显示帮助文件 
--version 显示RPM的当前版本

例子

[root@localhost ~]# rpm -ivh ipchains-1.3.6-1.i386.rpm     #安装包,并显示详细进度
[root@localhost ~]# rpm -i ftp://ftp.xxx.xxx            #在线安装
[root@localhost ~]# rpm -Va                            #校验所有的rpm包,查找丢失的文件
[root@localhost ~]# rpm -qf /usr/bin/who               #查找一个文件属于哪个rpm包
[root@localhost ~]# rpm -qpi mon-0.37j-1.i386.rpm     #列出一个rpm包的描述信息
[root@localhost ~]# rpm -qpl mon-0.37j-1.i386.rpm            #列出一个rpm包的文件信息
[root@localhost ~]# rpm -Uvh ipchains-1.3.6-1.i386.rpm            #升级包
[root@localhost ~]# rpm -q  httpd               #查看httpd的安装包
[root@localhost ~]# rpm -e  httpd               #移除安装包
[root@localhost ~]# rpm -qi httpd             #得到httpd安装包的信息
Name        : httpd                        Relocations: (not relocatable)
Version     : 2.2.3                             Vendor: CentOS
Release     : 45.el5.centos.1               Build Date: 2011年05月04日 星期三 18时54分56秒
Install Date: 2011年06月29日 星期三 08时05分34秒      Build Host: builder10.centos.org
Group       : System Environment/Daemons    Source RPM: httpd-2.2.3-45.el5.centos.1.src.rpm
Size        : 3281960                          License: Apache Software License
Signature   : DSA/SHA1, 2011年05月04日 星期三 20时31分28秒, Key ID a8a447dce8562897
URL         : http://httpd.apache.org/
Summary     : Apache HTTP 服务器
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@localhost ~]# rpm -ql httpd            #列出httpd中有哪些文件
[root@localhost ~]# rpm -qa                  #列出所有已安装的包

3. createrepo

createrepo用以创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据

  1. 基本用法
基本语法:createrepo [option] <directory>

常用参数详解
    -u  --baseurl <url>
        指定Base URL的地址

    -o --outputdir <url>
        指定元数据的输出位置

    -x --excludes <packages>
        指定在形成元数据时需要排除的包

    -i --pkglist <filename>
        指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。

    -n --includepkg
        通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。

    -q --quiet
        安静模式执行操作,不输出任何信息。

    -g --groupfile <groupfile>
        指定本地软件仓库的组划分,范例如下:
     createrepo -g comps.xml /path/to/rpms
        注意:组文件需要和rpm包放置于同一路径下。

    -v --verbose
        输出详细信息。
    -c --cachedir <path>
        指定一个目录,用作存放软件仓库中软件包的校验和信息。当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。
    --update
        如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多。

    -p --pretty
        以整洁的格式输出xml文件。
    -d --database
        该选项指定使用SQLite来存储生成的元数据,默认项。
  1. 例子
$ mkdir -p /yum/centos/6/      #创建本地源目录

$ createrepo -p -d -o /yum/centos/6/ix86_64 /yum/centos/6/ix86_64   #初始化源目录,产生repodata

4. rpm和srpm

RPM: RedHat Package Manager

优点:

  1. 由于已经编译完成并且打包完毕,所以软件传输与安装上很方便
  2. 由于软件信息都已经记录在Linux主机的数据库上,很方便查询,升级,卸载。

缺点:

  1. 软件安装环境必须跟打包时的环境需求一致或者相当。
  2. 需要满足软件的依赖属性需求
  3. 卸载的时候需要小心,最底层不能先删除,否则会造成系统问题。也就是最后安装先卸载。

SRPM: Source RPM

使用必须将该软件以RPM管理的方式先编译,此时SRPM会编译成RPM文件。

文件格式 文件名格式 直接安装与否 内含程序类型 可否修改参数并编译
RPM xxx.rpm 已编译 不可
SRPM xxx.src.rpm 不可 未编译的源代码

rp-xxxx - 3.1 - 5 .i386 .rpm

软件名称 软件的版本信息 发布次数 硬件平台 扩展名

5. spec文件

参考资料

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
缓存 应用服务中间件 Linux
yum 命令下载软件包到本地
在 Linux 系统中,使用 `yum` 命令可以下载软件包但不安装。通过 `yum` 的下载缓存功能,可以快速获取所需软件包。常用命令包括:`yum list available` 列出可安装的软件包,`yum download nginx` 下载特定软件包,`yum download nginx-1.18.0` 下载特定版本,`yum download -resolve nginx` 下载软件包及其依赖,`yum download nginx -d /path/to/download/directory` 指定下载目录
228 11
|
1月前
|
缓存 应用服务中间件 Linux
yum 命令下载软件包到本地
在 Linux 系统中,使用 yum 命令可以下载软件包但不安装。通过 yum 的下载缓存功能,可以快速获取软件包。常用命令包括:`yum list available` 列出可安装的软件包,`yum download nginx` 下载特定软件包,`yum download nginx-1.18.0` 下载特定版本,`yum download -resolve nginx` 下载软件包及其依赖,`yum download nginx -d /path/to/download/directory` 指定下载目录
152 1
|
1月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
198 0
|
6月前
yum 可以安装rpm包
【6月更文挑战第18天】yum 可以安装rpm包
711 0
|
2月前
|
缓存 前端开发 Linux
Linux yum 命令
10月更文挑战第1天
60 2
|
4月前
|
Web App开发 缓存 Ubuntu
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
241 11
|
4月前
|
缓存 Linux 网络安全
解决 CentOS 7 官方 yum 仓库无法使用的最佳实践
【8月更文挑战第18天】若 CentOS 7 的官方 YUM 仓库无法使用,可按以下步骤解决: 1. **检查网络连接**: - 确认服务器能正常上网,可通过访问外部网站或网络诊断测试。 - 检查防火墙设置,避免其阻挡 YUM 的网络访问。 2. **检查 YUM 配置**: - 核实 `/etc/yum.repos.d/` 下的 `CentOS-Base.repo` 文件中仓库地址正确无误。 - 确认配置文件内的 `enabled` 选项设为 `1` 以启用仓库。
2124 0
|
5月前
|
SQL Python
你需要在你的系统上安装`sqlmap`。这通常可以通过下载其源代码并编译,或者使用包管理器(如`apt`、`yum`或`pip`,但请注意,`pip`通常不直接提供`sqlmap`)来完成。
你需要在你的系统上安装`sqlmap`。这通常可以通过下载其源代码并编译,或者使用包管理器(如`apt`、`yum`或`pip`,但请注意,`pip`通常不直接提供`sqlmap`)来完成。
|
6月前
|
缓存 Linux
【Linux基础】 常用 yum 命令
yum是Yellowdog Updater, Modified的简称,旨在自动化地升级、安装/移除 RPM 安装包。它通过收集rpm包的相关信息,检查依赖性,并提示用户解决依赖问题,从而简化了Linux系统中软件包的管理。
100 10
|
6月前
|
缓存
创建本地yum源并安装tree命令(openEuler-20.03-LTS-SP3)
创建本地yum源并安装tree命令(openEuler-20.03-LTS-SP3)
394 1