上次說到一些yum的基礎使用。我們說yum最方便的地方在於,
它可以自我下載、
檢測依賴並全部安裝、
甚至環境變量也一並可以配置完成、
對於新手來說有了極大的方便。
但是使用慣之后,我們也可以發現yum很大的一個缺點:版本控制。
yum軟件版本的缺陷
我們舉個例子來說。
在原生系統中,我們使用yum安裝php,其版本為5.4
[root@localhost ~]# php -v PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
可是對於現在使用的絕大部分框架或者軟件,其php版本要求都要到達5.6以上,而使用正常的yum update已經無法升級了。
所以這個例子告訴我們,yum為了保持軟件的穩定性,不會把自己庫中的軟件升級到最新版,甚至連主流的穩定版也無法升級到。這時就需要我們動一些手腳了,比如使用epel包,以及更改yum源。
epel包
EPEL的全稱叫 Extra Packages for Enterprise linux 。這個包專門為落后的yum源提供了額外的軟件支持。而且其包內容版本更新,安裝方式簡單,更適合我們使用。
同時我們也要使用rpm包管理器進行解壓配置,RPM之前全稱為Red Hat Package Manager。我們現在可以把rpm理解為一個安裝軟件,它會像yum一樣把本地安裝包內的軟件安裝好。
在Cent中,Rpm功能是內置的,直接在命令行中執行rpm就可以。
和yum類似,rpm集成了軟件包的安裝與卸載,可喜的是,rpm包使用時,我們可以直接利用yum的操作在使用它。
使用rpm的基本使用方式是:
[root@localhost ~]# rpm -Uvh xxx.rpm [root@localhost ~]# rpm -ivh xxx.rpm
這里vh代表顯示安裝進度。而u代表update升級,i代表install安裝。
為了解決上述問題,我們首先把之前的php低版本卸載
因為安裝5.6版本的php時,yum把其識別為和php不同的軟件,為了防止沖突,一定要卸載。
之后我們使用yum安裝epel
[root@localhost ~]# yum install epel-release
同時,我們需要去安裝固定的rpm包,這里我們直接使用remi的包
[root@localhost ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 獲取http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 警告:/var/tmp/rpm-tmp.7Pr0XW: 頭V4 DSA/SHA1 Signature, 密鑰 ID 00f97f56: NOKEY 准備中... ################################# [100%] 正在升級/安裝... 1:remi-release-7.3-1.el7.remi ################################# [100%]
此時軟件源就裝好了
如果你使用的是centos6版本,其內置沒有epel,所以需要從網站下載 rpm -ivh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
同時它的remi包的網址也不同 rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
其他的包,請參照remi的網址 http://rpms.famillecollet.com/
之后我們使用yum查看下我們現在所擁有的php版本
[root@localhost ~]# yum list php*
此時我們可以看到有php54,php55,php56等等。這后面的數字就代表着php的版本號。
所以我們這里安裝php56.
[root@localhost ~]# yum install php56
安裝好之后查看php版本
[root@localhost ~]# php56 -v PHP 5.6.30 (cli) (built: Jan 19 2017 07:08:58) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
請注意,這里的php版本我們需要輸入php56才可以,如果想讓這里輸入php就可以顯示版本,我們需要在安裝時使用:
[root@localhost ~]# yum install --enablerepo=remi --enablerepo=remi-php56 php
即把php56設置成php的默認版本。
更改cent yum源
更改yum源,即我們要使用其他的yum源來下載及校驗yum。
比較好用的國內的yum源包括:
阿里鏡像站:http://mirrors.aliyun.com/
網易開源鏡像站:http://mirrors.163.com/
我們以網易的鏡像站為例:(幫助文檔:http://mirrors.163.com/.help/centos.html)
首先我們進入yum源存放的目錄:
[root@localhost yum.repos.d]# ls CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo remi-php54.repo remi.repo CentOS-CR.repo CentOS-Media.repo epel.repo remi-php70.repo remi-safe.repo CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo remi-php71.repo
這里可以很清晰的看到我們剛才使用的remi源以及epel的源。我們在這里更改base源。先備份:
mv CentOS-Base.repo CentOS-Base.repo.backup
然后下載163的源:
[root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
運行命令生成緩存:
yum clean all yum makecache
此時我們的yum源就更新好了。
yum源的更新不一定會使軟件得到升級,但是如果使用了國內的yum源,我們下載軟件的速度就大大的提升。
刪除epel包或者yum源
我們可以看到,其實epel包的本質就是在yum源上添加自己的源。那我們自然可以刪除它。
首先我們查看下當前的包。一般安裝入yum的都是noarch的類型包。
[root@localhost yum.repos.d]# yum list *remi*noarch 已安裝的軟件包 remi-release.noarch 7.3-1.el7.remi
之后我們直接卸載就可以
[root@localhost yum.repos.d]# yum list remi-release.noarch