rpm和yum软件管理

linux与window之间文件传输–lrzsz

第一步:下载lrzsz
[root@ken ~]# yum install lrzsz -y
第二步:上传window上的文件至linux当中
[root@ken ~]# rz
[root@ken ~]# ls
anaconda-ks.cfg ken1 redis-3.2.12-2.el7.x86_64.rpm test2
a.out lib64jemalloc1-3.6.0-2.mga5.x86_64.rpm test1 test.txt
[root@ken ~]#

第三步:传linux上的文件至window当中
[root@ken ~]# sz test.txt
未来比较好的职业发展
运维开发,DBA,架构师

rpm简介

这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件。
rpm:RPM is Redhat Package Manager(递归缩写)
rpm可以完成的操作
安装软件
卸载软件
查询软件信息
升级、降级
检验
打包程序
rpm仅仅能管理符合rpm格式的程序包,不能管理源码格式的程序
程序的格式
1)源码格式的程序:都是以压缩方式呈现的(后缀都是.tar.gz|bz2)
2)rpm格式的程序:这都是编译以后的程序 (后缀都是.rpm)

软件安装方式总结

安装软件方式有如下几种
方式1:编译安装
将源码程序按照需求进行先编译,后安装
缺点:
安装过程复杂,而且很慢
优点:
安装过程可控,真正的按需求进行安装(安装位置、安装的模块都可以选择)
方式2:rpm安装(用rpm来安装rpm后缀的安装包)
优点:
安装和卸载过程非常方便
缺点:
安装过程不可控(安装位置,安装那些功能模块)
rpm包的依赖关系非常复杂
方式3:yum安装
yum安装,其实就是自动分析rpm包的依赖关系,然后按照需要的顺序依次安装
方式4:绿色安装

rpm的操作

一、安装rpm包

格式:rpm -ivh 软件包名
选项
-i:安装软件
-v:显示安装过程
-h:用#表示安装进度(# 2%)
-vv:显示更详细的安装过程信息
-vvv:显示更更详细的安装过程信息

二、卸载rpm包

格式:rpm -e 软件名
选项:
-e:卸载软件
例子:卸载软件包ken
rpm -e ken

三、查询已经安装的rpm包

格式:rpm -q 软件名
选项:
-q:查看一个已经安装的软件
-a:查看所有已经安装的软件all
-l:显示软件安装完成以后生成文件列表(所有文件)list
-i:查看软件包的相关信息 info
-d:显示该软件所生成的说明性质的文档列表docfiles
-c:查看软件所生成的配置文件列表configfiles
–scripts:查看软件相关的脚本
补充:
安装前脚本(preinstall)
安装后脚本(postinstall)
卸载前脚本(preuninstall)
卸载后脚本(postuninstall)

rpm安装redis

[root@ken ~]# rpm -ivh redis-3.2.12-2.el7.x86_64.rpm
\warning: redis-3.2.12-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
error: Failed dependencies:
libjemalloc.so.1()(64bit) is needed by redis-3.2.12-2.el7.x86_64 #提示需要安装依赖
[root@ken ~]# rpm -ivh lib64jemalloc1-3.6.0-2.mga5.x86_64.rpm #先安装所需要的依赖
warning: lib64jemalloc1-3.6.0-2.mga5.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID 80420f66: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:lib64jemalloc1-3.6.0-2.mga5 ################################# [100%]
[root@ken ~]# rpm -ivh redis-3.2.12-2.el7.x86_64.rpm #解决完依赖关系再去安装
warning: redis-3.2.12-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:redis-3.2.12-2.el7 ################################# [100%]
[root@ken ~]# systemctl restart redis
[root@ken ~]# redis-cli
127.0.0.1:6379> set name ken
OK
127.0.0.1:6379> get name
“ken”
二、rpm卸载redis
[root@ken ~]# rpm -e redis

三、查询包
-q:查看一个已经安装的软件
-a:查看所有已经安装的软件all
-l:显示软件安装完成以后生成文件列表(所有文件)list
例子1:查询redis是否安装
[root@ken ~]# rpm -q redis
package redis is not installed #未安装
[root@ken ~]# rpm -q redis
redis-3.2.12-2.el7.x86_64 #已安装

例子2:查看redis生成的文件
[root@ken ~]# rpm -ql redis
/etc/logrotate.d/redis
/etc/redis-sentinel.conf
/etc/redis.conf
/etc/systemd/system/redis-sentinel.service.d
/etc/systemd/system/redis-sentinel.service.d/limit.conf
/etc/systemd/system/redis.service.d
/etc/systemd/system/redis.service.d/limit.conf
/usr/bin/redis-benchmark
/usr/bin/redis-check-aof
/usr/bin/redis-check-rdb
/usr/bin/redis-cli
/usr/bin/redis-sentinel
/usr/bin/redis-server
/usr/lib/systemd/system/redis-sentinel.service
/usr/lib/systemd/system/redis.service
/usr/libexec/redis-shutdown
/usr/share/doc/redis-3.2.12
/usr/share/doc/redis-3.2.12/00-RELEASENOTES
/usr/share/doc/redis-3.2.12/BUGS
/usr/share/doc/redis-3.2.12/CONTRIBUTING
/usr/share/doc/redis-3.2.12/MANIFESTO
/usr/share/doc/redis-3.2.12/README.md
/usr/share/licenses/redis-3.2.12
/usr/share/licenses/redis-3.2.12/COPYING
/usr/share/man/man1/redis-benchmark.1.gz
/usr/share/man/man1/redis-check-aof.1.gz
/usr/share/man/man1/redis-check-rdb.1.gz
/usr/share/man/man1/redis-cli.1.gz
/usr/share/man/man1/redis-sentinel.1.gz
/usr/share/man/man1/redis-server.1.gz
/usr/share/man/man5/redis-sentinel.conf.5.gz
/usr/share/man/man5/redis.conf.5.gz
/var/lib/redis
/var/log/redis
/var/run/redis

例子3:查看linux系统中所有的包
[root@ken ~]# rpm -qa

例子4:统计当前系统一共安装了多少个软件
[root@ken ~]# rpm -qa | wc -l

4.rpm查询文件是哪个程序生成的
[root@ken ~]# which ls
alias ls=’ls –color=auto’
/usr/bin/ls
[root@ken ~]# rpm -qf /usr/bin/ls
coreutils-8.22-21.el7.x86_64

例子1:卸载生成httpd命令的程序
[root@ken ~]# which httpd
/usr/sbin/httpd
[root@ken ~]# rpm -qf which httpd
httpd-2.4.6-80.el7.centos.x86_64

  1. 查看所有已经安装和尚未安装rpm包
    yum list all 或者yum list 可以列出所有的软件包
  2. yum list available:仅仅显示可以安装但是尚未安装的rpm包
  3. yum list installed:仅仅显示已经安装rpm包
    @:表示已经安装rpm
  4. 查看yum仓库的信息
    yum repolist

软件管理yum

也是一个rpm包的管理工具,可以实现自动解决rpm包的依赖关系(自动安装依赖顺序进行rpm包的安装)
为何rpm包会有依赖关系?
制作rpm的人,在制作rpm包的时候,就将这个rpm的所依赖的软件的信息保存在这个rpm包的内部

yum的工作原理

  1. 需要首先创建一个yum仓库(rpm包仓库、软件仓库)
    1)仓库其实就是一个目录
    2)仓库中存放的是rpm包
    3)仓库中还保存了一个文件,文件中记录了该仓库中所有rpm包的元数据信息
    4)元数据信息包括
    软件名
    软件版本
    软件是否已经安装
    软件的依赖关系
  2. 用 yum 来从仓库中找软件进行安装的过程(比如要安装软件A,A依赖B 和C, B依赖C D)
    1)yum首先会扫描保存元数据信息的文件,检查A是否已经安装,如果已经安装,那提示已经安装
    2)如果A尚未安装,那么扫描A的依赖关系信息,会发现A 依赖B 和C
    3)yum会再次扫描元数据文件,检测B C 是否安装,如果都已经安装,那么会开始开始安装A
    4)如果B C尚未安装,那么会检测 B C的依赖关系,会发现B依赖C D
    5)yum会再次扫描元数据文件,检测C D是否安装,如果都已经安装,那么会开始开始安装B,然后安装C,,然后安装A

yum仓库

本地:将本地的一个目录做成yum仓库,只有当前系统可以
网络:通过网络将服务器上的一个目录作为yum仓库,网络中的全部主机都可以用
使用yum仓库的方式,就是修改yum的配置文件
yum的配置文件
主:/etc/yum.conf
子:/etc/yum.repos.d/*.repo
/etc/yum.conf文件
cachedir=/var/cache/yum/basearch/releasever
指定缓存文件的保存位置,默认:/var/cache/yum/x86_64/7/
keepcache=0
指定是否保留缓存文件
用yum安装软件过程中会从yum仓库下载并缓存多个资源
1)会将yum仓库的元数据文件缓存到配置文件所指定的路径中
2)会将要安装的软件及其依赖的软件一并缓存到配置文件指定的目录中

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
[repoid]
name=reponame
enabled=1
gpgcheck=0 | 1 #0表示不校验 、 1表示校验
baseurl=file:// | http://
gpgkey=file://

yum仓库的url的表示方式

注意:在指定yum仓库的时候,其实不是指向rpm包的目录,而是执行repodata所在目录本地yum仓库file://
例子:比如我的yum仓库 /myrpm,此时yum仓库的表示方式就是file:///myrpm
网络yum仓库
http://

创建本地yum仓库

使用光盘中的rpm包作为yum仓库
第一步:挂载光盘
mount /dev/cdrom /media
第二步:备份yum自带的配置文件
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
第三步:创建yum的配置文件,使用光盘作为yum仓库

例子1:编写本地yum文件–未开校验
[ken]
name=ken1
enabled=1
gpgcheck=0
baseurl=file:///mnt

例子2:编写本地yum文件–开启校验
[ken]
name=ken1
enabled=1
gpgcheck=1
baseurl=file:///mnt
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7

第四步:执行yum命令检测结果
yum clean all <<< 清空yum缓存的全部数据
yum repolist <<< 检查yum仓库中有多少个可用的rpm包

yum使用

  1. 安装软件
    yum -y install 软件1 软件2 软件3 ….
  2. 卸载软件
    yum -y remove 软件1 软件2 软件3 ….
  3. 管理包组
    grouplist:查看系统中的全部的包组
    groupinfo 包组名:查看指定包组的信息(包组的作用、包含的软件)
    groupinstall 包组名:安装指定的包组
    groupremove 包组名:卸载指定的包组
    CentOS7: 命令行界面升级为图形化界面
    这时,我们可以通过命令 startx 进入图形界面,第一次进入会比较慢,请耐心等待。(可能需要重启,命令为reboot)
  4. 管理yum的缓存数据
    clean [ packages | metadata | all ]
    all:清除所有数据
    packages:仅仅清除rpm包
    metadata:仅仅清理缓存元数据
    [root@ken ~]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: ken
    Cleaning up everything
    Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
    Cleaning up list of fastest mirrors
    查看yum源
    [root@ken ~]# yum repolist
    Loaded plugins: fastestmirror
    Determining fastest mirrors
    ken | 3.6 kB 00:00:00
    (1/2): ken/group_gz | 166 kB 00:00:00
    (2/2): ken/primary_db | 3.1 MB 00:00:00
    repo id repo name status
    ken ken1 3,971

制作一个网络yum源

思路:在网络上准备一个主机,在其中安装一个web服务器软件(比如apache),然后创建一个目录,在这个目录中准备上yum仓库的全部资源,如果用户可以通过网络访问到该主机的这个目录,那么这个目录就成为网络yum仓
实现过程
第一步:配置yum源主机
1)安装配置apache

2)配置yum仓库相关资源

  1. 创建一个目录,作为存储yum资源的目录
    mkdir /usr/local/apache/htdocs/mysource
  2. 挂载光盘
    mount /dev/cdrom /mnt
  3. 将光盘中的资源复制到前面所创建的目录下
    cp /mnt/* /usr/local/apache/htdocs/mysource -rvf
  4. 用浏览器访问一下yum仓库,检查是否可以看到相关文件
http://ip/mysource

第二步:配置客户端主机
修改yum配置文件
1)备份原有的配置文件
mkdir bak
mv *.repo bak
vim a.repo
[]
name
enabled=
gpgcheck=
baseurl=http://ip/mysource
2)测试一下

yum repolist

实例演示网络yum源–配置epel源

第一步:创建本地yum文件
[root@ken yum.repos.d]# vim net.repo
[net]
name=aliyun
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/

第二步:清空缓存
[root@ken yum.repos.d]# yum clean all

第三步:查看包
[root@ken yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
ken | 3.6 kB 00:00:00
net | 4.7 kB 00:00:00
(1/5): ken/group_gz | 166 kB 00:00:00
(2/5): ken/primary_db | 3.1 MB 00:00:00
(3/5): net/group_gz | 88 kB 00:00:01
(4/5): net/updateinfo | 1.0 MB 00:00:03
(5/5): net/primary_db | 6.7 MB 00:00:27
repo id repo name status
ken ken1 3,971
net aliyun 13,190
repolist: 17,161

第四步:下载redis
[root@ken yum.repos.d]# yum install redis -y

第五步:验证redis是否下载成功
[root@ken yum.repos.d]# systemctl restart redis
[root@ken yum.repos.d]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> set name ken
OK
127.0.0.1:6379> get name
“ken”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容