01-RPM包管理

1.RPM基本概述

2.RPM使用示例

3.YUM基本介绍

4.YUM实践案例

5.搭建本地仓库

6.源码包管理实践


徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。

个人博客"徐亮伟架构师之路"累计受益数万人。

笔者Q:552408925

架构师群:471443208

Centos7全新录制基础课程,点击传送--> 文档配视频,效果更佳哦!

1.RPM基本概述

1.什么是rpm?

RPM全称 RPM Package Manager 缩写,由红帽开发用于软件包的安装升级卸载与查询

2.rpm包名组成部分?

RPM包命名以-将软件分成了若干部分bash-4.2.46-28.el7.x86_64.rpm

3.如何获取rpm包

在我们刚开始学习rpm包,建议先使用本地CentOS7的镜像,但实际生产环境中都是通过联网的方式获取rpm包。(先学会,你懂的?)

我们先通过虚拟机加载镜像,然后在linux中执行 mount /dev/cdrom /mnt,此时你会在/mnt/Packages目录下看到很多rpm的包文件。那么就可以开始rpm包管理之旅。

3.扩展: Linux中除了rpm安装软件,是否还有安装软件方式?

分类安装版本

rpm包预先编译打包,安装简单软件版本偏低

源码包手动编译打包,安装繁琐软件版本随意

二进制包解压即可使用, 安装简单不能修改源码

2.RPM使用示例

1.rpm包如何安装

以下列出了rpm命令进行安装软件的常用参数

选项描述

-i安装rpm

-v显示安装详细信息

-h显示安装rpm进度

--force强制重新安装

--nodeps忽略依赖关系

#安装软件包, 需要指定软件包绝对路径[root@xuliangwei ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm[root@xuliangwei ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm#在软件包所在目录下可以不指定绝对路径[root@xuliangwei ~]# cd /mnt/Packages/[root@xuliangwei Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm#如果软件包存在, 强制再次安装[root@xuliangwei ~]# rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm#安装samba服务需要依赖其他组件, 使用--nodeps可重新强制安装[root@xuliangwei ~]# rpm -ivh --nodeps  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

2.如何查询已安装好的rpm包

选项描述

rpm -q查看指定软件包是否安装

rpm -qa查看系统中已安装的所有RPM软件包列表

rpm -qi查看指定软件的详细信息

rpm -ql查询指定软件包所安装的目录、文件列表

rpm -qc查询指定软件包的配置文件

rpm -qf查询文件或目录属于哪个RPM软件

rpm -qip查询未安装的rpm包详细信息

rpm -qlp查询未安装的软件包会产生哪些文件

#查询vsftpd这个rpm包是否安装[root@xuliangwei ~]# rpm -q vsftpd#模糊查找系统已安装的rpm包[root@xuliangwei ~]# rpm -qa |grep ftp#查询vsftpd软件包的相关信息[root@xuliangwei ~]# rpm -qi vsftpd#查询rpm包所安装的文件[root@xuliangwei ~]# rpm -ql vsftpd#查询rpm包相关的配置文件[root@xuliangwei ~]# rpm -qc vsftpd#查询配置文件或命令来自于哪个rpm包[root@xuliangwei ~]# rpm -qf /etc/vsftpd/vsftpd.conf[root@xuliangwei ~]# rpm -qf /usr/sbin/vsftpd#查询未安装的软件包会产生哪些文件[root@xuliangwei ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm#查询未安装的软件包会产生哪些文件[root@xuliangwei ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

3.RPM包升级

选项描述

rpm -U如果老版本不存在则全新安装,如果存在有新版即升级

# wget  https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm# wget  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm#1.先安装低版本[root@www.xuliangwei.com ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm#2.尝试安装高版本(会出现错误)[root@www.xuliangwei.com ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm#3.使用升级的方式,完美解决替换[root@www.xuliangwei.com ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

3.RPM包卸载

卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。

#先查询, 然后卸载 [root@www.xuliangwei.com ~]# rpm -qa |grep sh[root@www.xuliangwei.com ~]# rpm -e zsh

4.RPM包校验(扩展了解)

软件相关的数据库存放于/var/lib/rpm目录

参数描述

S文件的容量大小是否被改变

M文件的类型或者文件的属性是否被修改

5MD5 这一种指纹加密的内容已经不同

L路径已经被改变

U文件的所属主已被修改

G文件的所属组已被修改

T文件的创建时间已被改变

[root@www.xuliangwei.com ~]# rpm -V vsftpdS.5....T.  c /etc/pam.d/vsftpd.......T.  c /etc/vsftpd/ftpusersS.5....T.  c /etc/vsftpd/vsftpd.conf.M.......    /var/ftp/pub

6.RPM包小结

如何查询 util-linux 软件包安装了哪些文件? 

如何查询 mkdir 命令是由哪个 RPM 软件包安装的?

安装 .rpm 软件包时,-i、-U、选项有何区别?

3.YUM基本介绍

1.什么是YUM

Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。(PS: YUM是生产最佳实践)

2.YUM源是什么

1要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的repository(软件仓库),这个软件仓库我们习惯称为 yum 源。(可以是本地源、网络源)

3.YUM源配置实例

1.阿里yum源

#默认系统是国外源,需要替换为国内的源[root@www.xuliangwei.com ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \http://mirrors.aliyun.com/repo/Centos-7.repo#扩展源,有很多软件在基本源中没有[root@www.xuliangwei.com ~]# wget -O /etc/yum.repos.d/epel.repo \http://mirrors.aliyun.com/repo/epel-7.repo

2.Nginx官方源,比如在学习Nginx时需要使用官方的yum源来安装

[root@www.xuliangwei.com ~]# vim /etc/yum.repos.d/nginx.repo[nginx]name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0enabled=1

PS:源超找方式基本一致,zabbix,Docker、Nginx、saltstack、openstack

4.YUM实践案例

1.使用yum查询软件包的方式

[root@www.xuliangwei.com ~]# yum list[root@www.xuliangwei.com ~]# yum list|grep ftp[root@www.xuliangwei.com ~]# yum info ftp

2.使用yum安装软件包的方式

[root@www.xuliangwei.com ~]# yum install tree[root@www.xuliangwei.com ~]# yum install tree -y    #非交互#安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖[root@www.xuliangwei.com ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm#直接安装网络上的rpm包[root@www.xuliangwei.com ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

3.使用yum重新安装软件包的方式

#1.如果不小心删除vsftpd配置文件[root@www.xuliangwei.com ~]# rm -f /etc/vsftpd/vsftpd.conf#2.可以对软件进行重新安装[root@www.xuliangwei.com ~]# yum reinstall vsftpd#3.检查软件的配置文件[root@www.xuliangwei.com ~]# rpm -qc vsftpd/etc/logrotate.d/vsftpd/etc/pam.d/vsftpd/etc/vsftpd/ftpusers/etc/vsftpd/user_list/etc/vsftpd/vsftpd.conf

3.使用yum更新软件包

#对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级[root@www.xuliangwei.com ~]# yum check-update#更新acl软件[root@www.xuliangwei.com ~]#  yum update acl -y#如下的执行很危险,这代表更新整个系统所有的软件,包括内核[root@www.xuliangwei.com ~]#  yum update -y

4.使用yum删除软件包

[root@www.xuliangwei.com ~]# yum install samba -y[root@www.xuliangwei.com ~]# yum erase samba -y[root@www.xuliangwei.com ~]# yum remove samba -y

5.与yum仓库相关指令(扩展了解)

#列出yum源可用的软件仓库[root@www.xuliangwei.com ~]# yum repolist#列出全部yum源可用和禁用的仓库[root@www.xuliangwei.com ~]# yum repolist all#查找某个命令或文件属于那个软件包(生产常用)[root@www.xuliangwei.com ~]# yum provides /etc/my.cnf[root@www.xuliangwei.com ~]# yum provides cd

6.与yum缓存相关指令(扩展了解)

#1.缓存rpm包方式一、修改yum全局配置文件[root@www.xuliangwei.com ~]# vim /etc/yum.conf[main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=1#启动缓存#2.缓存rpm包方式二,只下载不安装[root@www.xuliangwei.com ~]# yum install -y yum-plugin-downloadonly #插件[root@www.xuliangwei.com ~]# yum install httpd -y --downloadonly --downloaddir=/tmp#3.清除所有yum缓存的软件包以及元数据[root@www.xuliangwei.com ~]# yum clean all#4.只清除缓存的软件包[root@www.xuliangwei.com ~]# yum clean packages

7.组包相关指令,(扩展了解)

```

[root@www.xuliangwei.com ~]# yum groups list#安装一整个组的软件[root@xuliangwei ~]# yum groups install Development tools \Compatibility libraries \Base Debugging Tools#yum删除包组[root@www.xuliangwei.com ~]# yum groups remove  -y Base

```

8.历史记录指令,(扩展了解)

#1.查看历史执行yum命令[root@www.xuliangwei.com ~]# yum history#2.查询历史执行yum命令ID详细信息[root@www.xuliangwei.com ~]# yum history info N#3.撤销历史执行过的yum命令[root@www.xuliangwei.com ~]# yum history undo N

PS: YUM还有配置文件与签名验证需要我们额外扩展了解的请点击传送门

5.搭建本地仓库

1.有的时候你的linux系统不能联网,当然就不能很便捷的使用联网的yum源了,这时候就需要你自己会利用linux系统光盘制作一个yum源。具体步骤如下:

#1.挂载镜像[root@xuliangwei ~]# mount /dev/cdrom /mnt  #2.备份原有仓库[root@xuliangwei ~]# gzip /etc/yum.repos.d/*#3.使用yum-config-manager命令添加本地仓库[root@xuliangwei ~]# yum-config-manager --add-repo="file:///mnt"#4.或者使用手动添加repo文件[root@xuliangwei ~]# vim /etc/yum.repos.d/cdrom.repo  [cdrom]      name=This islocalcdrombaseurl=file:///mntenabled=1gpgcheck=0[]#仓库名称name        3仓库描述信息baseurl#YUM源url地址 ,可以是file:// ftp:// http://enabled#是否使用该YUM源(0代表禁用, 1代表激活)gpgcheck#是否验证软件签名(0代表禁用, 1代表激活)#5.生成缓存[root@xuliangwei ~]# yum makecache

2.很多时候不仅仅是一台机器无法上网,而是很多机器都无法上网,但都有联网下载软件的需求,这个时候难道每台机器都挂在光盘吗? 当然可以,但如果软件出现了更新怎么办?

本地光盘提供基础软件包: Base

yum缓存提供常用软件包: nginx, zabbix, docker

1.环境准备

系统IP角色

centos710.0.0.99yum仓库服务端

centos710.0.0.98yum仓库客户端

2.服务端进行yum仓库的搭建准备工作

#1.关闭防火墙、与selinux[root@yum_server ~]# systemctl stop firewalld[root@yum_server ~]# setenforce 0#2.安装ftp服务,启动并加入开机启动[root@yum_server ~]# yum -y install vsftpd [root@yum_server ~]# systemctl start vsftpd [root@yum_server ~]# systemctl enable vsftpd#3.开启yum缓存功能[root@yum_server ~]# vim /etc/yum.conf[main] cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=1[root@yum_server ~]# yum clean all#4.提供基础base软件包[root@yum_server ~]# mkdir /var/ftp/centos7[root@yum_server ~]# mount /dev/cdrom /mnt[root@yum_server ~]# cp -rp  /mnt/Packages/*.rpm /var/ftp/centos7/#5.提供第三方源[root@yum_server ~]# mkdir /var/ftp/ops[root@yum_server ~]# yum -y install nginx docker#6.复制已缓存的 Nginx docker 及依赖包 到自定义 YUM 仓库目录中[root@yum_server_69_112 ~]# find /var/cache/yum/x86_64/7/ \-iname"*.rpm"-exec cp -rf {} /var/ftp/ops \;#7.安装createrepo并创建 reopdata仓库[root@yum_server_ ~]# yum -y install createrepo[root@yum_server_ ~]# createrepo /var/ftp/ops#PS: 如果此仓库每次新增软件则需要重新生成一次

3.客户端配置yum源指向服务端

#1.客户端配置并使用 base 基础源[root@yum_client ~]# gzip /etc/yum.repos.d/*[root@yum_client ~]# vim /etc/yum.repos.d/centos7.repo [centos7]name=centos7_basebaseurl=ftp://10.0.0.99/centos7gpgcheck=0#2.客户端配置并使用 ops 源[root@yum_client ~]# vim /etc/yum.repos.d/ops.repo [ops]name=localftpserverbaseurl=ftp://10.0.0.99/opsgpgcheck=0

6.源码包管理实践

1.源码包是什么

源码包指的是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的工具。

2.为什么要学习源码包

1、部分软件官网仅提供源码包,需要自行编译并安装。

2、部分软件在新版本有一些特性还没来得及制作成rpm包时,可以自行编译软件使用其新特性。

3.源码包的优缺点

1.可以自行修改源代码

2.可以定制需要的相关功能

3.新版软件优先更新源码

4.缺点是: 1) 相对yum安装软件会复杂很多。2) 标准化实施困难,自动化就无法落地。

3.源码包如何获取

常见的软件包都可以在官网获取源码包,比如 apache、nginx、mysql等等

4.将源码包编译为二进制可执行文件步骤如下,简称安装三步曲

PS: 此方法不是百分百通用于所有源码包,建议拿到源码包解压后,进入到目录找相关的README帮助文档

5.源码编译示例

下面通过编译Nginx来深入了解下源码包编译的过程。

#1.基础环境准备[root@node1 ~]# yum install -y gcc make wget #2.下载源码包[root@node1 ~]# wget http://nginx.org/download/nginx-1.15.12.tar.gz#3.解压源码包, 并进入相应目录[root@node1 ~]# tar xf nginx-1.15.12.tar.gz[root@node1 ~]# cd nginx-1.15.12#4.配置相关的选项,并生成Makefile[root@node1 nginx-1.15.12]# ./configure --prefix=/soft/nginx-1.12.2#5.将Makefile文件编译可执行二进制程序[root@node1 nginx-1.15.12]# make#6.将二进制文件拷贝至对应的目录中[root@node1 nginx-1.15.12]# make install

源码编译报错信息处理

checkingforC compiler ... not found ./configure: error: C compiler cc is not found# yum -y install gcc gcc-c++ make./configure: error: the HTTP rewrite module requires the PCRE library.You can eitherdisablethe module by using --without-http_rewrite_moduleoption, or install the PCRE library into the system, or build the PCRE librarystatically from thesourcewith nginx by using --with-pcre= option.# yum install -y pcre-devel./configure: error: the HTTP gzip module requires the zlib library.You can eitherdisablethe module by using --without-http_gzip_module option, or install the zlib library into thesystem, or build the zlib library statically from thesourcewithnginx by using --with-zlib= option.# yum -y install zlib-devel./configure: error: SSL modules require the OpenSSL library.You can eitherdonotenablethe modules, or install the OpenSSL library into the system, or build the OpenSSL library staticallyfrom thesourcewith nginx by using --with-openssl= option.# yum -y install openssl-devel

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

推荐阅读更多精彩内容