linux系统rpm和yum软件包管理
软件安装方式总结
安装软件方式有如下几种:
方式1:编译安装
将源码程序按照需求进行先编译,后安装
缺点:装过程复杂,而且很慢
优点:安装过程可控,真正的按需求进行安装(安装位置、安装的模块都可以选择)
方式2:rpm安装(用rpm来安装rpm后缀的安装包)
优点:安装和卸载过程非常方便
缺点:安装过程不可控(安装位置,安装那些功能模块),rpm包的依赖关系非常复杂
方式3:yum安装
yum安装,其实就是自动分析rpm包的依赖关系,然后按照需要的顺序依次安装
方式4:绿色安装
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:查看软件相关的脚本
rpm -V 用来检查已安装rpm包的完整性。所谓“完整性”,这里就是指安装rpm包产生的所有文件和原始rpm包中的信息是否一致。
补充:
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 -y
yum localinstall -y gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm
#只下载不安装
yum install tree --downloadonly --downloaddir /root/
##说明:如果该服务器已经安装了需要下载的软件包,那么使用 install下载就不行,可以使用reinstall下载
软件包组下载
yum grouplist #查看软件包组
yum groupinstall "某个组" #下载软件包组
卸载软件
yum remove redis -y
查询
yum list #查看rpm包
yum list all #查看所有rpm包
yum list installed #查看已安装的rpm包
yum list available #查看未安装的rpm包
yum search 命令 #查看该命令依赖哪个包
清空缓存
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=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=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=local1
enabled=1
gpgcheck=0
baseurl=file:///mnt #本地yum仓库文件内容
[aliyun]
name=aliyun1
enabled=1
gpgcheck=0
baseurl=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-only
mount: /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: fastestmirror
Repository 'local': Error parsing config: Error parsing "baseurl = 'file///mnt'": URL must be http, ftp, file or https not ""
Cleaning repos: local aliyun
Cleaning up everything
Cleaning up list of fastest mirrors
╭─root@localhost.localdomain /etc/yum.repos.d
╰─➤ yum repolist # 检查yum仓库中有多少个可用的rpm包
Loaded plugins: fastestmirror
Repository '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 mirrors
repo id repo name status
local local1 3,831
aliyun aliyun1 13,190
repolist: 17,021

linux系统rpm和yum软件包管理的更多相关文章
- 5.Linux系统的vim与软件包管理
5.1 Linux系统的vim编辑器 5.1.1 vim编辑器的概述 vim编辑器的简介 1.vim是什么? vim是一个类似vi的文本编辑器,它在vi的基础上增加了很多新特性 vim是vi发展出来的 ...
- Linux命令(六)——软件包管理(安装应用程序)
与windows安装各种应用程序相似,在linux下也可以安装各种需要的应用程序,通常称为软件包.目前,在linux系统下常见的软件包格式主要有:RPM包.TAR包.bz2包.gz包.deb包.sh结 ...
- Linux系统的用户和用户组管理
一.用户账户管理 Linux/Unix是一个用户.多任务的操作系统:在讲Linux账号及账户组管理之前,先简单了解一下多用户.多任务操作系统的基本概念. Linux的单用户多任务 在Linux下,当你 ...
- 末学者笔记--rpm和yum软件管理(Linux)
一.rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Packa ...
- linux的Yum软件包管理工具
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...
- Linux rpm和yum软件管理
rpm是管理程序的一个小工具,rpm常来用作查询 什么源码包:大多数都是tar.gz,bz.bz2结尾的包 zip结尾的包 压缩格式为 zip –r 命名.zip ./* 解压格式为 unzip 命名 ...
- rpm和yum软件管理
rpm简介 数据库管理工具,通过读取数据库,判断软件是否安装,如已安装可读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package Manager(递归 ...
- Yum软件包管理详解
目录 1. Yum 1.1 检查和更新包 1.1.1 查询更新 1.1.2 更新包 1.1.3 使用 ISO 和 Yum 离线升级系统 1.2 使用包 1.2.1 搜索包 1.2.2 列出包 1.2. ...
- Linux各发行版本及其软件包管理方法
Linux发行版本有很多,按照使用领域分为桌面系统领域和服务器领域.下面简要介绍如下: 1.Red Hat和Fedora:redhat最早发行的个人版本的Linux,自从Red Hat 9.0版本发布 ...
随机推荐
- ARM CPU的SVC模式
关于ARM CPU模式中的SVC Arm中CPU的模式 [第一方面] 系统sys模式 VS 管理svc模式 首先,sys模式和usr模式相比,所用的寄存器组,都是一样的,但是增加了一些访问一些在usr ...
- Head First 设计模式 —— 04. 工厂 (Factory) 模式
思考题 如何将实例化具体类的代码从应用中抽离,或者封装起来,使它们不会干扰应用的其他部分? P111 将实例化具体类的代码放入一个对象中管理,通过不同入参决定实例化具体的类 简单工厂 不是23种GOF ...
- 彻底搞懂JavaScript的闭包、防抖跟节流
最近出去面试了一下,收获颇多!!! 以前的我,追求实际,比较追求实用价值,然而最近面试,传说中的面试造火箭,工作拧螺丝,竟然被我遇到了.虽然很多知识点在实际工作中并不经常用到,但人家就是靠这个来筛选人 ...
- Thread线程控制之sleep、join、setDaemon方法的用处
Thread线程控制之sleep.join.setDaemon方法的用处 1. sleep方法 public static void sleep(long millis) throws Interru ...
- Facetoobject_encapsulation
面向对象程序设计思想 一.思想 处处皆对象. 当提到某一功能时,首先应该想有没有实现该功能的对象,有则调用,没有则创建类.当提到数据时,应该想到属于哪个对象. 1.求1~n的累加和 public cl ...
- new ArrayList(0) 和 new ArrayList() 和一样吗?
第一感觉是一样的,盲猜后者调用了前者,并传入参数 0.然而,无论是 JDK 7 还是 JDK 8,这两个方法构造的结果都是不一样的.JDK 开发人员在这方面作了优化. JDK 7 在 Java 7 中 ...
- Python+MySQL随机试卷及答案生成程序
一.背景 本文章主要是分享如何使用Python从MySQL数据库中面抽取试题,生成的试卷每一份都不一样. 二.准备工作 1.安装Python3 下载地址:https://www.python.org/ ...
- OOP、封装、继承、多态,真的懂了吗?
平时只要一提起来面向对象编程OOP的好处,随口就能说出来,不就是封装.继承.多态么,可他们的含义是什么呢,怎么体现,又有什么非用不可的好处啊.可能平时工作中天天在用OOP,仅仅是在用OOP语言,就是一 ...
- LeetCode144 二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? /** * Defin ...
- 一文搞懂MySQL前缀索引
引入 通常在开发中我们需要定义字符串类型的字段,例如用户名或者用户邮箱等. 假设我们在维护一个用户登录系统,用户表的定义: create table User( ID bigint unsigned ...