上一篇文章在了解完Linux环境配置后+函数库配置后,这篇继续讲解Linux下不同安装方式的对比
Linux系列:Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]、Linux最全环境配置 + 动态库/静态库配置
rpm包是别人编译安装好的二进制包
安装这个包,可能需要手动安装别的函数库或者依赖软件
一般自行去网站下载以.rpm为结尾的安装包
下载安装包后,可以离线手动安装
很多安装包有依赖性,装一个包就带连带着装其他包,大包套小包
相比rpm安装来讲yum的安装更人性化,一般推荐yum联网安装
yum仓库用来存放所有的rpm包
当使用yum安装一个rpm包时,如果需要依赖关系会自动在仓库中查找依赖软件并安装
yum仓库可以是本地的,也可以是HTTP、FTP、nfs形式的网络仓库
yum最大的优势在于可以联网去下载所需要的rpm包,然后自动安装,安装东西方便快捷
如果要安装的rpm包有依赖关系,yum会帮您解决掉这些依赖关系并依次安装所有rpm包
1,yum安装的版本会比较低,一般不是最新版本
2,yum安装过程人为无法干预,不能按需安装,源里面有什么就安装什么,
3,不能自定义软件的模块和功能,不能自定义软件部署的路径,对后期的维护成本会增加
4,需要维护yum源的网络库,找到合适的repo库,否则找不到安装软件
5,大部分生产环境要求服务器的环境配置要一致,统一环境如果需要升级某个程序版本,一个脚本几条命令就可以解决。如果是yum安装,机房和机房之间,国家和国家之间,yum的库不能保持一致,会很麻烦的问题
源码安装,下载的是源码包,用户自行编译和安装
编译安装过程,可以设定参数,按照需求进行安装,安装的版本可以选择,灵活性比较大
可以自定义部署的路径,进行统一的管理,减轻后期的维护工作量
1,编译,安装,配置,部署比较复杂
2,不能自动解决软件包之间的依赖关系
3,由于安装包过新,或版本过低,或是其他问题,导致依赖的包没有,就要解决包的依赖问题
可能装一个小东西,就要解决一堆包的依赖问题,花很多时间解决包的依赖问题
4,不敢随便升级系统,升级系统可能会导致以前手动装的东西,不能用
以上是在Linux环境下安装软件的3种办法,常用的是yum和源码安装这2种方式
具体的安装方法比较繁杂,下一篇文章介绍yum安装和源码安装的流程
在上一篇文章中,已经详细介绍了源码安装 + yum安装的优缺点
今天来详细谈谈关于yum安装的方案和注意事项,毕竟在实际工作中yum使用还是比较频繁的
关键词:CentOS的yum安装,yum源设置,yum镜像源,yum优先级,阿里云源,中科大源
yum安装软件时候,一般都有具体的命令参考,按教程操作一般不会有问题
安装的方法其实比较简单,不能人为干涉,一般不会遇到大的问题,这里不再细说
合适的源类似于不同的应用商店,我们需要设置合适的源,找到合适的应用商店
才能顺利安装我们需要的软件,在使用yum时才不会遇到各种问题
1,源是国外的,下载速度非常慢,网络不稳定,经常安装失败
2,有些源根本没有想要安装的软件,要切换特殊的源才能提供
3,使用的源突然失效了,需要重新设置你的源连接
4,记得要维护更新源库,才能获取最新的软件列表
5,有些源下载安装的软件包版本过低
查看系统发行版本:rpm -qi centos-release
(查看Version字段)
进入yum配置目录:cd /etc/yum.repos.d
查看yum配置目录:ll /etc/yum.repos.d
备份yum配置目录:cp -r /etc/yum.repos.d /data/
显示使用中的yum源:yum repolist
清除yum的缓存:yum clean all
生成yum的缓存:yum makecache
查看yum配置目录后,你会发现/etc/yum.repos.d目录下有非常多以.repo结尾的源文件
你可以新增yourname.repo文件,表示这个是属于你加的源文件
我也可以新增myname.repo文件,表示这个是属于我加的源文件
一般官方的源文件CentOS-Base.repo下有[base], [updates], [extras]三个源
另外还有两个[CentOSplus], [contrib] 源
这就是一个源文件里面可以填写多个源地址的样例
1 [base] #仓库名称
2 name= #仓库描述
3 mirrorlist= #仓库镜像路径
4 baseurl= #仓库url路径
5 enabled= #仓库是否启用,1表示启用,0表示关闭
6 gpgcheck=1 #密钥检测,1表示开启,0表示关闭
7 gpgkey= #检查key的地址,如果上面不检查,这个可以不写
如果你执行显示yum源的命令yum repolist
,会显示正在使用的仓库标识和仓库名称
仓库标识就是配置中的仓库名称,例如[base]
仓库名称就是配置中的仓库描述,例如name=xxx
具体的作用可以看yum源的配置说明
其实CentOS-Base.repo文件中,配置的仓库一共有5个
[base], [updates], [extras],[CentOSplus],[contrib]
但是[CentOSplus],[contrib]却被设置为enabled=0
所以使用 显示使用中的yum源的命令 展示的源,只有[base], [updates], [extras]3个
前面说的:/etc/yum.repos.d目录下有非常多以.repo结尾的源文件
进去查看具体的内容,会发现都有配置,但却没有设置为enabled=1生效
因此这么多文件都是没有用的,要生效,需要再自己设置
只有CentOS-Base.repo文件,默认生效了3个配置
如果安装了CentOS的发行版,那么自带的源应该就是官方的
但源是国外的,因为众所众知的原因,下载速度非常慢,安装经常失败
一般不使用
第一:备份原始yum源,执行cp -r /etc/yum.repos.d /data/
第二:在/etc/yum.repos.d目录下,清空所有文件
第三:执行rpm -qi centos-release
,确认系统的版本
第四:wget -O /etc/yum.repos.d/aliyun-Base-7.repo https://mirrors.aliyun.com/repo/Centos-7.repo
第五:执行yum clean all
,清除缓存
第六:执行yum makecache
,生成缓存
第七:执行yum repolist
,查看生效后的源地址
1,wget -O /etc/yum.repos.d/aliyun-Base-7.repo 中的aliyun-Base-7.repo
,表示下载来的文件的名称
从阿里云下载的.repo
文件,就命名为aliyun-Base-7.repo
注意:aliyun-Base-7.repo
中最好带上-Base-7
的描述,跟阿里云的网络路径尽量一致,以后容易区分
2,确认系统版本,例如7.9,则使用版本7
填写为 https://mirrors.aliyun.com/repo/Centos-7.repo
中的7,用来获取阿里云中具体的版本
3,最后一定要执行yum clean all & yum makecache
4,获取.repo文件的链接可能变动,有时需要自己去官网更新最新的办法
阿里云配置帮助链接:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
第一:备份原始yum源,执行cp -r /etc/yum.repos.d /data/
第二:在/etc/yum.repos.d
目录下,清空所有文件
第三:执行rpm -qi centos-release
,确认系统的版本
第四:wget -O /etc/yum.repos.d/tencent-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
第五:执行yum clean all
,清除缓存
第六:执行yum makecache
,生成缓存
第七:执行yum repolist
,查看生效后的源地址
1,wget -O /etc/yum.repos.d/tencent-Base-7.repo
中的tencent-Base-7.repo
,表示下载来的文件的名称
从腾讯云下载的.repo
文件,就命名为tencent-Base-7.repo
注意:tencent-Base-7.repo
中最好带上-Base-7
的描述,跟腾讯云的网络路径尽量一致,以后容易区分
2,确认系统版本,例如7.9,则使用版本7,填写为
http://mirrors.cloud.tencent.com/repo/centos7_base.repo
中的7
用来获取腾讯云中具体的版本
3,最后一定要执行yum clean all & yum makecache
4,获取.repo
文件的链接可能变动,有时需要自己去官网更新最新的办法
腾讯云配置帮助链接:腾讯软件源
设置中科大的源不像阿里云和腾讯云方便,但是原理都一样
需要新建立源的文件,再手动更改文件的内容即可
这里不再细说,可以参看中科大详细的帮助文档
中科大配置帮助链接:USTC Open Source Software Mirror
CentOS自带的yum源中rpm包数量有限,很多时候找不到我们需的软件包,所以我们需要安装包含丰富的第三方YUM源来满足我们的需求。简单来说,就是去新增一个应用商店,这个应用商店可能有我们要下载的软件
EPEL(Extra Packages for Enterprise Linux是企业版Linux附加软件包)
EPEL的软件包通常不会与企业版Linux官方源中的软件包发生冲突,或者互相替换文件
官方的EPEL源可能速度比较较慢,这里我们添加阿里的EPEL源,如下:
wget -O /etc/yum.repos.d/aliyun-epel-7.repo https://mirrors.aliyun.com/repo/epel-7.repo
指令格式不再详说,都是和上面差不多的
安装某些特殊的软件,需要安装官方的源,否则没办法通过yum安装
例如Nginx源,需要独立配置官方的源,才能进行安装
但是这类软件非常少,我们一般不需要这样配置
当系统有多个软件源时,要安装某一个软件,并且这个软件在多个源里面都有时
我们肯定希望用最优质的源来下载软件,而且不同的软件源之间并不能保证软件的完全兼容没有冲突
所以我们需要设置软件源的优先级
yum-plugin-priorities
插件可以用来强制保护源它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如官方源)设定为最高优先级
yum install yum-plugin-priorities.noarch
yum-plugin-priorities
插件的配置文件是/etc/yum/pluginconf.d/priorities.conf
,先确认其是否存在,后查看
其内容为:
[main]
enabled=1 # 0禁用 1启用
把enabled=1设置为1就是启用
举例:
以官方源文件 /etc/yum.repos.d/CentOS-Base.repo
为样本
对于[base]选项,添加:
priority=1 #设置[base]源优先级为1
对于[updates]选项,添加:
priority=1 #设置[updates]源优先级为1
对于[extras]选项,添加:
priority=1 #设置[extras]源优先级为1
对于[centosplus]选项,添加:
priority=2 #设置[centosplus]源优先级为2
对于[contrib]选项,添加:
priority=2 #设置[contrib]源优先级为2
举例:
以源文件 /etc/yum.repos.d/epel.repo为样本
对于[epel]选项,添加:
failovermethod=priority
priority=11 #设置[epel]源优先级为11
priority的优先级为1到99,设置为1即优先级最高,1-10为系统保留,第三方yum源的优先级从11-99
一般官方的源文件CentOS-Base.repo下有[base], [updates], [extras]三个源设置为 priority=1
另外两个[CentOSplus],[contrib] 源设置成priority=2
其他第三方软件源的源文件中的源源设置为:priority=N
(推荐N>10,并且每个类型的源推荐从n0开始,n为1-9的数字,比如10,20,30,这样源下面的细分源以后也方便添加级别)
/etc/yum.repos.d/目录下文件名后缀为.repo的文件都是源文件,里面对应的源都需要设置
如果这里没有想要的软件在进行其他源的添加,添加过多的源维护起来麻烦,还容易造成软件源的冲突
把暂时不用的源通过enabled=0关闭,只留下一个EPEL第三方源,这样可以减少软件的冲突和软件搜索的速度
在上一篇,介绍了CentOS下的yum安装和yum源的配置
现在介绍另一种在Linux环境下安装软件的办法:源码安装
源码安装的方法比较固定,但不简单。如果不熟悉,可能会遇到很多头疼的问题,需要有一定的Linux知识基础才能进行安装,例如:Linux下的系统环境配置,Linux下的目录,常用指令等要有了解,可以看看往期的文章。
下面介绍一下源码安装的一些知识
下载了源码之后,进入目录,一般有以下几项:
配置 configure(可执行文件)
源码 src(源代码)
说明 README(说明文档)
其他 其他的文件夹(每个软件可能有不同的软件)
configure是非常重要的文件,很多参数都由它来完成
了解软件安装的必要参数设定,对于源码安装来说非常重要
编译软件的功能,模块,特性都是通过configure来设定参数的
每个软件的编译,安装设置可能都不一样
因此需要参考–help里面的说明来设定
–prefix=PATH中的PATH是软件安装的路径
当然也可以不执行,默认安装在/usr/local/
你可以再添加别的编译参数,详细见–help
Makefile文件是Linux下指导编译,安装的配置文件
使用configure命令后自动生成,就不需要再更改
这一步是编译,比较容易出问题
编译需要的库找不到
所需要的的文件找不到
具体解决办法查看看configure --hlep以及
学习如何设定Linux的环境(即Linux系列:Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]、Linux最全环境配置 + 动态库/静态库配置中的Linux最全环境配置 + 动态库/静态库配置
)
一定要根据报错信息来对症下药
一般的软件都有make check命令
用来检查编译的软件有没有问题
通过make check后再进行下一步
(如果没有make check,就不用执行了)
最后一步是安装步骤
会把软件的可执行文件等
放到–prefix=PATH中设定的目录
(一般只是复制目录,生成一些配置等)
在安装好后,如果直接运行软件,会发现找不到这个指令
需要我们把安装目录下的可执行软件
添加到系统的搜索路径里面
参看环境配置教程(即Linux系列:Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]、Linux最全环境配置 + 动态库/静态库配置中的Linux目录分析:\[/\] + \[/usr\] + \[/usr/local\] + \[/usr/local/app-name\]
)
可以自己设定安装参数,也就不会安装根本用不到的模块,做到按需定制,这对有点强迫症的我来说很友好
可以自己控制安装过程,对软件状态比较了解,对以后的管理很方便,做到心中有数
能及时安装使用最新版本的软件,不需要等待源的更新
要熟悉软件的安装参数配置,否则就编译不出你要的软件,甚至报错
这要求熟悉configure --help文档,这是最好的安装指导
但有时候我们也不要迷信于源码安装,解决不了报错,或者花费的代价太大
使用yum安装也是不错的,这2者结合起来,能解决大部分软件的安装问题了
不是罗罗
RPM安装 + yum安装 + 源码安装的区别&优缺点
CentOS下的yum安装 + yum源配置 + yum镜像源
Linux下的源码安装