Linux_软件包管理
1. 软件包介绍
与windows类似,在linux系统上也可以安装各种应用程序,或称软件包,linux下软件包分为三类
1 . rpm包
预先编译打包, 安装简单
通常软件的稳定版会被官方做成rpm, 所以软件版本偏低
2 . 源码包
手动编译打包, 安装繁琐
软件版本丰富, 可选择性强
3 . 二进制包
解压即可使用, 安装简单
不能修改源代码
2. rpm包管理
1. rpm简介
Red- Hat Package Manager ( RPM软件包管理器)
这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的
在主流的linux系统上,多数软件的安装、升级、移除以及维护工作都是使用RPM软件包管理程序来完成的
2. rpm包格式
3. rpm包格式示例
mysql- connector- odbc- 5.2 .5 - 8. el7. x86_64. rpm
mysql- connector- odbc
Version:5.2 .5
Release:8
el7. x86_64
. rpm
abrt- python- doc- 2.1 .11 - 57. el7. centos. noarch. rpm
abrt- python- doc
2.1 .11
57
el7: enterprise linux Centos7
noarch
. rpm
4. RPM闭包使用的平台
redhat/ centos/ redora/ suse
[ root@localhost ~ ]
x86_64
[ root@localhost ~ ]
CentOS Linux release 7.6 .1810 ( Core)
5. 管理rpm包有两种命令
1 . rpm命令
需要自己找到rpm包,并且手动解决包的依赖性关系
ps:实际情况下,很难分辨缺少什么依赖包
2 . yum命令
相关rpm包事先都被存放于一个仓库里,仓库包含了所有的依赖包,yum安装可以帮我们解决依赖性问题
6. RPM包获取
1 . 本地的ISO镜像光盘( 软件包可能存在版本偏低情况)
方式1
[ root@localhost ~ ]
方式2
[ root@localhost ~ ]
方式3
[ root@localhost ~ ]
查看光盘里的rpm包
[ root@localhost ~ ]
2 . 自己去网上下载rpm包进行安装
3 . 联网从yum仓库里获取rpm包
3. rpm命令
1. 选项
1 . 安装
rpm - ivh < RPM包名全称>
2 . 卸载
rpm - e < RPM包名>
3 . 升级
rpm - Uvh < RPM包名>
4 . 查询
rpm - qa
rpm - qa | grep php
rpm - q < RPM包名>
[ root@lee ~ ]
zip - 3.0 - 11. el7. x86_64
rpm - qi < RPM包名>
rpm - ql < RPM包名>
rpm - qc < RPM包名>
[ root@lee ~ ]
/ etc/ my. cnf. d/ client. cnf
rpm - qd < RPM包名>
[ root@localhost ~ ]
rpm - qf 文件路径
[ root@lee ~ ]
net- tools- 2.0 - 0.25 . 20131004git. el7. x86_64
- p
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
5 . 额外选项
- - nomd5
- - nodeps
[ root@localhost ~ ]
- - force
2. 安装
1 . rpm包在本地
[ root@lee ~ ]
[ root@lee ~ ]
2 . rpm来自于网络
如果安装过程中报错:curl: ( 60 ) Peer's Certificate has expired
请先将系统时间修改正确,然后再安装即可
[ root@lee ~ ]
3. 安装与依赖
[ root@lee ~ ]
错误:依赖检测失败:
/ etc/ mime. types 被 httpd- 2.4 .6 - 88. el7. centos. x86_64 需要
httpd- tools = 2.4 .6 - 88. el7. centos 被 httpd- 2.4 .6 - 88. el7. centos. x86_64 需要
libapr- 1. so. 0 ( ) ( 64bit) 被 httpd- 2.4 .6 - 88. el7. centos. x86_64 需要
libaprutil- 1. so. 0 ( ) ( 64bit) 被 httpd- 2.4 .6 - 88. el7. centos. x86_64 需要
[ root@egon ~ ]
[ root@egon ~ ]
[ root@egon ~ ]
[ root@egon ~ ]
[ root@egon ~ ]
然后重新安装
[ root@egon ~ ]
准备中. . .
正在升级/ 安装. . .
1 : httpd- 2.4 .6 - 88. el7. centos
4. 升级rpm包
1 . 下载一个低版本、一个高版本
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
2 . 先安装低版本
[ root@egon ~ ]
3 . 再安装高版本,会报错
[ root@egon ~ ]
4 . 如果采用- - force选项,那就是强制安装,会同时存在两个版本,该方案不可取
[ root@egon ~ ]
zabbix- agent- 3.0 .9 - 1. el7. x86_64
[ root@egon ~ ]
. . . 安装成功. . .
[ root@egon ~ ]
zabbix- agent- 3.0 .9 - 1. el7. x86_64
zabbix- agent- 4.2 .0 - 1. el7. x86_64
5 . 重来 采用升级方式安装
[ root@egon ~ ]
[ root@egon ~ ]
[ root@egon ~ ]
[ root@egon ~ ]
. . .
[ root@egon ~ ]
. . . 清理老版本,安装新版本. . .
[ root@egon ~ ]
zabbix- agent- 4.2 .0 - 1. el7. x86_64
5. 练习
1 . vsftpd
2 . samba
3 . nfs- utils
4 . httpd
5 . dhcp
6 . postfix
7 . php
8 . lftp
9 . dos2unix
10 . unix2dos
11 . tigervnc
4. yum管理rpm包
1. yum介绍
Yum = > Yellow dog Updater, Modified
是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装
[ root@localhost ~ ]
yum- 3.4 .3 - 161. el7. centos. noarch
[ root@localhost ~ ]
/ etc/ logrotate. d/ yum
/ etc/ yum. conf
/ etc/ yum/ version- groups. conf
2. yum命令常用选项
1 . 仓库
yum repolist
yum repolist all
yum- config- manager - - disable epel
yum- config- manager - - enable epel
2 . 查看
yum list
yum list | less
yum grouplist
yum provides / usr/ sbin/ ifconfig
3 . 安装
yum install httpd httpd- tools
yum groupinstall "开发工具" - y
<= >
yum groups install "开发工具" - y
4 . 卸载
yum remove httpd httpd- tools http*
yum groupremove "开发工具" - y
<= >
yum groups remove "开发工具" - y
5 . 重装
yum reinstall httpd
6 . 更新
yum check- update
yum update - y
7 . 统时执行
yum update httpd - y
8 . 缓存
yum makecache
yum clean all
vim / etc/ yum. conf
9 . 历史记录
yum history
yum history info ID号
yum history undo ID号
无论yum安装的软件来自何方,yum时刻以自己仓库中的repodata存储依赖关系为准,如有多个仓库,就依次检索
1 . yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系
yum install https: // mirrors. aliyun. com/ centos/ 7.6 .1810 / os/ x86_64/ Packages/ samba- 4.8 .3 - 4. el7. x86_64. rpm
2 . yum直接安装本地的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系
yum localinstall - y / mnt/ Packages/ httpd- 2.4 .6 - 88. el7. centos. x86_64. rpm
3. 系统常见yum源
在使用yum前, 需要准备一个yum源( 我们也称为yum仓库) , 这个可以是一个互联网上的仓库, 也可以是本地自己搭建的仓库. 仓库里面有什么呢?里面全部都是. rpm的软件包. 一台linux, 可以添加N多个yum源, 能搜索的软件包数量就是N个yum源之和
1 . 自定义的本地源
2 . 网络上的源头,如:base基础源、epel扩展源、与服务相关的源( 官网)
epel = > Extra Packages for Enterprise Linux
4. 镜像文件作为yum源(本地源)
1 . 先挂载
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
2 . 编辑repo文件
[ root@localhost ~ ]
[ root@localhost yum. repos. d]
[ local]
name= local
baseurl= file : // / opt
enabled= 1
gpgcheck= 0
3 . 检查可用仓库
[ root@localhost ~ ]
[ root@localhost ~ ]
4 . 安装 查询 卸载
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
/ etc/ httpd/ conf/ httpd. conf
[ root@localhost ~ ]
[ root@localhost ~ ]
5 . 软件包组安装 查询 卸载
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
5. 使用开源yum源(网络源)
1 . 阿里云的Base基础源
wget - O / etc/ yum. repos. d/ CentOS- Base. repo http: // mirrors. aliyun. com/ repo/ Centos- 7. repo
2 . 163 的Base基础源
wget - O / etc/ yum. repos. d/ CentOS- Base. repo http: // mirrors. 163. com/ . help / CentOS7- Base- 163. repo
3 . 红帽的epel扩展源
[ root@lee ~ ]
http: // mirrors. aliyun. com/ repo/ epel- 7. repo
[ root@lee ~ ]
4 . 扩展
EPEL = > Extra Packages for Enterprise Linux
EPEL是由Fedora社区打造,为RHEL及衍生发行版如CentOS、Scientific Linux等提供高质量软件包的项目
装上了EPEL之后,就相当于添加了一个第三方源
RHEL以及他的衍生发行版如CentOS、Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题
5 . nginx官网的软件包源
进入nginx官网
- > download
- > Pre- Built Packages
- > Stable and mainline
- > RHEL/ CentOS
- > 编辑到本地
[ root@lee yum. repos. d]
[ nginx- stable]
name= nginx stable repo
baseurl= http: // nginx. org/ packages/ centos/ $releasever/ $basearch/
gpgcheck= 1
enabled= 1
gpgkey= https: // nginx. org/ keys/ nginx_signing. key
module_hotfixes= true
[ nginx- mainline]
name= nginx mainline repo baseurl= http: // nginx. org/ packages/ mainline/ centos/ $releasever/ $basearch/
gpgcheck= 1
enabled= 0
gpgkey= https: // nginx. org/ keys/ nginx_signing. key
module_hotfixes= true
6 . Centos系统默认的源备份
[ root@lee ~ ]
[ root@lee yum. repos. d]
[ root@lee yum. repos. d]
[ root@lee yum. repos. d]
bak CentOS- Base. repo epel. repo local. repo nginx. repo
6. 自制本地yum源
1 . 下载好一堆rpm包,相关依赖包也都存在,将所有的rpm包都放置于一个文件夹下,比如/ aaa
2 . 安装工具createrepo
[ root@localhost ~ ]
3 . 制作repodata
[ root@localhost ~ ]
4 . 配置本地repo文件, 指向/ aaa
[ root@localhost ~ ]
[ soft]
name= soft
baseurl= file : // / aaa
enabled= 1
gpgcheck= 0
7. yum扩展知识
1 . yum元数据缓存
指的将yum仓库的元数据缓存下来,下次安装时省去了检索过程,安装速度可以加快
[ root@localhost ~ ]
[ root@localhost ~ ]
2 . yum软件包缓存
开启软件包缓存后,从网络源下载安装完的软件安装包不再删除,都缓存到了本地
[ root@localhost ~ ]
[ main]
cachedir= / var/ cache/ yum/ $basearch/ $releasever
keepcache= 1
debuglevel= 2
3 . 基于软件包缓存,可以做成自己的yum源,以此来控制各个服务的版本
1 . 在测试环境中,在每个节点上都开启软件包缓存
2 . 在测试环境中,安装相同版本的操作系统,安装完毕后统一执行yum update - y
3 . 在测试环境中,部署完完你的架构,测试完毕
4 . 把测试环境中每台机器上缓存好的软件包安装包采集到一个文件下
[ root@lee ~ ]
5 . 然后用createrepo命令制作好依赖关系,即repodata数据库
6 . 然后在线上环境部署时, 就用该本地源就好,不要轻易升级,不要滥用yum源
这样可以严格控制好各个服务的版本
8. 自制本地yum源共享给别人
1 . 环境准备
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
2 . 安装ftp服务
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
3 . 采集软件包放到一个目录下
可以基于4.7 的方式,也可以直接用镜像里现成的,但无论何种方式,都一定要解决好依赖关系才能用来做yum源
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
1 . 环境准备
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
[ root@lee ~ ]
2 . 在客户端配置网络yum源
[ root@lee yum. repos. d]
[ root@lee yum. repos. d]
[ root@lee yum. repos. d]
[ root@lee yum. repos. d]
> [ ftp_repo]
> name = This is Ftp Share Repo
> baseurl = ftp: // 192.168 .12 .42 / centos7
> enabled = 1
> gpgcheck = 0
> EOF
客户端baseurl指向的文件夹无论是什么,在该文件夹的子目录一级必须有一个repodata数据库
9. yum的历史记录
yum history
yum history info ID号
yum history undo ID号
10. 签名检查机制
[ root@localhost ~ ]
[ root@localhost ~ ]
- - nomd5
[ root@localhost yum. repos. d]
[ root@localhost yum. repos. d]
[ local]
name= local
baseurl= file : // / opt
enabled= 1
gpgcheck= 1
[ root@localhost yum. repos. d]
[ local]
name= local
baseurl= file : // / opt
enabled= 1
gpgcheck= 1
gpgkey= file : // / etc/ pki/ rpm- gpg/ RPM- GPG- KEY- CentOS- 7
- - nogpgcheck
5. 源码包
1. 官网下载,如nginx
1 . 浏览器下载
2 . 执行命令
wget http: // nginx. org/ download/ nginx- 1.18 .0 . tar. gz
2. 预先安装编译安装依赖的库
yum - y install gcc gcc- c+ + autoconf automake make
yum - y install zlib zlib- devel openssl openssl- devel pcre pcre- devel
或者
LANG= C yum - y groupinstall "Development tools"
3. 解压 编译 编译安装
[ root@localhost ~ ]
[ root@localhost ~ ]
[ root@localhost nginx- 1.18 .0 ]
1 . - - prefix 指定安装的目录, / usr/ local/ nginx 是安装目录
2 . 带ssl stub_status模块 添加stream模块 –with - stream,这样就能传输tcp协议了
3 . http_stub_status_module 状态监控
4 . http_ssl_module 配置https
5 . stream 配置tcp的转发
6 . http_gzip_static_module 压缩
7 . http_sub_module 替换请求
[ root@localhost nginx- 1.18 .0 ]
[ root@lee soft]
[ root@lee ~ ]
现在百分之90 , 能用上的软件, 都提供了rpm包. 使用户可以使用yum直接安装使用
4. 总结编译安装-三部曲
1 . 指定安装路径,例如- - prefix= DIR
2 . 启用或禁用某项功能, 例如 - - enable- ssl, - - disable- filter - - with - http_ssl_module
3 . 和其它软件关联,例如- - with - pcre= / root/ pcre- 8.31
4 . 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求
最终生成:Makefile
如果中途发生错误,多半是因为缺少必要的库支持,可以先清理
然后安装好依赖库,重新执行三部曲
有一些源码包是已经编译好的结果,下载后解压即可使用