博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux系统rpm和yum软件包管理
阅读量:5048 次
发布时间:2019-06-12

本文共 6851 字,大约阅读时间需要 22 分钟。

1、软件安装方式总结

安装软件方式有如下几种:

方式1:编译安装

将源码程序按照需求进行先编译,后安装
缺点:装过程复杂,而且很慢
优点:安装过程可控,真正的按需求进行安装(安装位置、安装的模块都可以选择)

方式2:rpm安装(用rpm来安装rpm后缀的安装包)

优点:安装和卸载过程非常方便
缺点:安装过程不可控(安装位置,安装那些功能模块),rpm包的依赖关系非常复杂

方式3:yum安装

yum安装,其实就是自动分析rpm包的依赖关系,然后按照需要的顺序依次安装

方式4:绿色安装

2、rpm

作用:rpm是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件。

rpm可以完成安装软件、卸载软件、查询软件信息、升级、降级、检验、打包程序的操作。
rpm仅仅能管理符合rpm格式的程序包,不能管理源码格式的程序。

程序的格式

源码格式的程序:都是以压缩方式呈现的(后缀都是.tar.gz|bz2)
rpm格式的程序:这都是编译以后的程序 (后缀都是.rpm)

安装rpm包

语法:rpm -ivh 软件包名

option:

-i:安装软件
-v:显示安装过程
-h:用#表示安装进度(# 2%)
-vv:显示更详细的安装过程信息
-vvv:显示更更详细的安装过程信息

卸载rpm包

语法:rpm -e 软件名

option:

-e:卸载软件

查询已经安装的rpm包(常用)

语法:rpm -q 软件名

option:

-q:查看一个已经安装的软件
-f: --file
-a:查看所有已经安装的软件all (-qa)
-l:显示软件安装完成以后生成文件列表(所有文件)list (-ql)
-i:查看软件包的相关信息 info
-d:显示该软件所生成的说明性质的文档列表docfiles
-c:查看软件所生成的配置文件列表configfiles
--scripts:查看软件相关的脚本

补充:

preinstall scriptlet (using /bin/sh)::安装前执行脚本
postinstall scriptlet (using /bin/sh)::安装后执行脚本
preuninstall scriptlet (using /bin/sh)::卸载前执行脚本
postuninstall scriptlet (using /bin/sh)::卸载后执行脚本

如果安装过程中,不想执行其中一个脚本,可以指定:

--nopre:不执行安装前脚本
--nopost:不执行安装后脚本
--nopreun :不执行卸载前脚本
--nopostun:不执行卸载后脚本

查看文件是哪个软件生成的

rpm -qf /path/to/file

升级软件

option:

-U:升级或安装软件
-F:仅仅是升级操作

语法:

rpm -Fvh 软件包名
rpm -Uvh 软件包名
---

yum

作用:yum是一个rpm包的管理工具,可以实现自动解决rpm包的依赖关系(自动安装依赖顺序进行rpm包的安装)

为何rpm包会有依赖关系?

制作rpm的人,在制作rpm包的时候,就将这个rpm的所依赖的软件的信息保存在这个rpm包的内部

下载软件

yum install redis-3.2.12-2.el7.x86_64.rpm -y
yum install redis -y
yum localinstall -y gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm

卸载软件

yum remove redis -y

查询

yum list #查看rpm包
yum list all #查看所有rpm包
yum list installed #查看已安装的rpm包
yum list available #查看未安装的rpm包
yum search 命令 #查看该命令依赖哪个包

╭─root@localhost.localdomain ~  ╰─➤  yum search pstree Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.cn99.com * extras: mirrors.zju.edu.cn * updates: mirrors.zju.edu.cn============================================================= Matched: pstree ==============================================================psmisc.x86_64 : Utilities for managing processes on your systemtexlive-pst-tree.noarch : Trees, using pstricks

清空缓存

yum clean all

查看所有仓库源

yum repolist

yum的工作原理

①需要首先创建一个yum仓库(rpm包仓库、软件仓库)

仓库其实就是一个目录;

仓库中存放的是rpm包;
仓库中还保存了一个文件,文件中记录了该仓库中所有rpm包的元数据信息;
元数据信息包括:软件名、软件版本、软件是否已经安装、软件的依赖关系;

②用 yum 来从仓库中找软件进行安装的过程(比如要安装软件A,A依赖B 和C, B依赖C D)

yum首先会扫描保存元数据信息的文件,检查A是否已经安装,如果已经安装,那提示已经安装;

如果A尚未安装,那么扫描A的依赖关系信息,会发现A 依赖B 和C;
yum会再次扫描元数据文件,检测B C 是否安装,如果都已经安装,那么会开始开始安装A;
如果B C尚未安装,那么会检测 B C的依赖关系,会发现B依赖C D;
yum会再次扫描元数据文件,检测C D是否安装,如果都已经安装,那么会开始开始安装B,然后安装C,,然后安装A;

yum仓库

本地:将本地的一个目录做成yum仓库,只有当前系统可以使用

网络:通过网络将服务器上的一个目录作为yum仓库,网络中的全部主机都可以使用

使用yum仓库的方式,就是修改yum的配置文件

  • yum的配置文件
    主:/etc/yum.conf
    子:/etc/yum.repos.d/*.repo
╭─root@localhost.localdomain ~  ╰─➤  cat /etc/yum.conf[main]          cachedir=/var/cache/yum/$basearch/$releasever   //指定缓存文件的保存位置,默认:/var/cache/yum/x86_64/7/keepcache=0       //指定是否保留缓存文件debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1installonly_limit=5bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yumdistroverpkg=centos-release#  This is the default, if you make this bigger yum won't see if the metadata# is newer on the remote and so you'll "gain" the bandwidth of not having to# download the new metadata and "pay" for it by yum not having correct# information.#  It is esp. important, to have correct metadata, for distributions like# Fedora which don't keep old packages around. If you don't like this checking# interupting your command line usage, it's much better to have something# manually check the metadata once an hour (yum-updatesd will do this).# metadata_expire=90m# PUT YOUR REPOS HERE OR IN separate files named file.repo# in /etc/yum.repos.d

用yum安装软件过程中会从yum仓库下载并缓存多个资源

1)会将yum仓库的元数据文件缓存到配置文件所指定的路径中
2)会将要安装的软件及其依赖的软件一并缓存到配置文件指定的目录中

yum仓库制作

yum配置文件的编写

[localRpm] <<< 指定yum仓库的id,可以随便写,但是中间不能有空格
name=xxx <<< 指定yum仓库的名称,可以随便写
enabled=0|1 <<< 指定是否使用该yum仓库,0表示不使用;1表示使用
gpgcheck=0|1 <<< 指定是否对rpm包做完整性和来源合法性验证,0表示不做验证;1表示必须做验证
gpgkey= <<< 指定公钥文件(如果gpgcheck=1,那么该项不能省略)
baseurl= <<< 指定yum仓库的url
cost=1 <<< 优先级等于1

  • 注意:在指定yum仓库的时候,其实不是指向rpm包的目录,而是执行repodata所在目录

yum仓库制作演示:

#第一步:编辑yum仓库子文件╭─root@localhost.localdomain ~  ╰─➤  cd /etc/yum.repos.d      #进入到子配置文件夹╭─root@localhost.localdomain /etc/yum.repos.d  ╰─➤  vim mnt.repo       #创建并编辑配置文件  (文件名要求:*.repo)#yum文件编辑内容:...[local]   name=local1enabled=1gpgcheck=0baseurl=file:///mnt        #本地yum仓库文件内容[aliyun]name=aliyun1enabled=1gpgcheck=0baseurl=https://mirrors.aliyun.com/epel/7/x86_64/     #网络源yum仓库文件内容...#第二步:挂在光盘╭─root@localhost.localdomain ~  ╰─➤  mkdir /mnt╭─root@localhost.localdomain /etc/yum.repos.d  ╰─➤  mount /dev/cdrom /mnt       #挂载光盘mount: /dev/sr0 is write-protected, mounting read-onlymount: /dev/sr0 is already mounted or /mnt busy       /dev/sr0 is already mounted on /yummnt       /dev/sr0 is already mounted on /mnt#第三步:查看yum仓库╭─root@localhost.localdomain /etc/yum.repos.d  ╰─➤  yum clean all     #清空yum缓存的全部数据Loaded plugins: fastestmirrorRepository 'local': Error parsing config: Error parsing "baseurl = 'file///mnt'": URL must be http, ftp, file or https not ""Cleaning repos: local aliyunCleaning up everythingCleaning up list of fastest mirrors╭─root@localhost.localdomain /etc/yum.repos.d  ╰─➤  yum repolist       # 检查yum仓库中有多少个可用的rpm包Loaded plugins: fastestmirrorRepository 'local': Error parsing config: Error parsing "baseurl = 'file///mnt'": URL must be http, ftp, file or https not ""local                                                                                                             | 3.6 kB  00:00:00     aliyun                                                                                                            | 4.7 kB  00:00:00     (1/5): local/group_gz                                                                                             | 155 kB  00:00:00     (2/5): local/primary_db                                                                                           | 3.0 MB  00:00:00     (3/5): aliyun/group_gz                                                                                            |  88 kB  00:00:06     (4/5): aliyun/updateinfo                                                                                          | 998 kB  00:00:11     (5/5): aliyun/primary_db                                                                                          | 6.7 MB  00:00:58     Determining fastest mirrorsrepo id                                            repo name                                     statuslocal                                               local1                                               3,831aliyun                                              aliyun1                                          13,190repolist: 17,021

1675881-20190518143030905-1563623370.jpg

转载于:https://www.cnblogs.com/du-z/p/10886109.html

你可能感兴趣的文章
华为“云-管-端”:未来信息服务新架构
查看>>
基于Sentinel实现redis主从自动切换
查看>>
函数(二)
查看>>
oracle中所有存在不存在的用户都可以使用dba连接到数据库
查看>>
函数式编程思想
查看>>
java安全沙箱(二)之.class文件检验器
查看>>
Oracle学习之简单查询
查看>>
log4j配置
查看>>
linux 配置SAN存储-IPSAN
查看>>
双链表
查看>>
java学习笔记之String类
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>
Word Break II
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
无线通讯
查看>>
Mongodb Manual阅读笔记:CH9 Sharding
查看>>
AX2009使用NPOI导出EXCEL2007
查看>>
如何删除NSDictionary或NSArray中的NSNull
查看>>