yum的理解與使用

yum工作原理

yum是一個RPM包的前端管理工具,在rpm包的依賴關(guān)系已經(jīng)被建成數(shù)據(jù)庫的前提下它能夠?qū)崿F(xiàn)自動查找相互依賴的人rpm包,并從repository中下載互相依賴的rpm包到本地。

1. yum server 提供軟件包,供client下載.

2. yum client 從server端下載軟件包

以下就是以安裝net-tools為例,client調(diào)用yum install或者search的時候,都會去解析/etc/yum.repos.d下面所有以.repo結(jié)尾的配置文件,這些配置文件指定了yum服務(wù)器的地址。從yum服務(wù)器上解析出net-tools所依賴的安裝環(huán)境。從而將依賴軟件包與net-tools軟件包下載到client進行安裝。

image.png

yum常用操作

[root@openstack ~]# yum install vim可自動安裝依賴包(rpm不行)
[root@openstack ~]# yum -y install vim 無下載提示安裝
[root@openstack ~]# yum list installed 列出已經(jīng)安裝的包
[root@openstack ~]# yum list all 列出已經(jīng)安裝的和可以安裝的包
[root@openstack ~]# yum list installed | grep php 查詢是否安裝php包
[root@openstack ~]# yum remove net-tools 卸載net-tools包
[root@openstack ~]# yum info net-tools 顯示已經(jīng)安裝包的詳細信息
[root@openstack ~]# yum deplist net-tools 查詢net-tools包的依賴信息
[root@openstack local_server]# yum clean all 清除緩存目錄(/var/cache/yum)下的軟件包及舊的headers

yum實驗

實驗?zāi)康?/h4>

理解與使用本地源的建立過程,使用本地源安裝net-tools工具。

操作步驟

一.掛載光盤文件&&將所有rpm包復(fù)制到/local_server

1.檢查虛擬機光驅(qū)中是否有虛擬光盤,如果沒有,先選擇虛擬盤。

image.png

2.右擊選擇虛擬盤,圖標(biāo)亮起則成功

image.png

(虛擬盤相當(dāng)于是充當(dāng)一個虛擬的linux服務(wù)器)

3.創(chuàng)建新目錄,用于掛載光盤鏡像文件

#mkdir /media/cdrom

4.然后使用mount命令掛載光盤鏡像文件到/media/cdrom/

#mount -t auto /dev/cdrom /media/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only

掛載成功,以只讀方式掛載

5.創(chuàng)建本地倉庫目錄(用來存放從虛擬服務(wù)器上獲取到的軟件包)

#mkdir /local_server

6查看虛擬光盤中有哪些文件和目錄

#ls /media/cdrom
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

7.將光盤中的所有RPM軟件包復(fù)制到本地倉庫目錄中

#cp /media/cdrom/Packages/* -rv /local_server/

二.備份所有repo文件

1.進入yum配置文件目錄&&查看

#cd /etc/yum.repos.d/
#ls        //下列是所有的yum配置文件
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo

2.在/etc/yum.repo.d/目錄下新建腳本文件并執(zhí)行

#vi BackupRepoFile.sh
for file in *
do
          if [  "$file"  !="$0"  ]         //"$0"代表的是該文件本身
          then
                      mv $file{,.bak}        //文件備份
          fi
done 
//然后保存
#sh BackupRepoFile.sh

3.驗證執(zhí)行是否成功(以.bak結(jié)尾的是備份文件)

#ls
BackupRepoFile.sh     CentOS-Debuginfo.repo.bak  CentOS-Sources.repo.bak
CentOS-Base.repo.bak  CentOS-fasttrack.repo.bak  CentOS-Vault.repo.bak
CentOS-CR.repo.bak    CentOS-Media.repo.bak

三.創(chuàng)建本地源倉庫(用來存放所有所有包,使之不需要再從服務(wù)器獲取)

#vi local_server.repo
[local_server]
name=This is a local repo
baseurl=file:///local_server
enable=1
gpgcheck=0

四.創(chuàng)建yum倉庫,用createrepo命令

1.進入倉庫所在目錄&&createrepo工具

#cd /local_server/
#rpm -ivh createrepo-0.9.9-23.el7.noarch.rpm
error: Failed dependencies:
        deltarpm is needed by createrepo-0.9.9-23.el7.noarch
        libxml2-python is needed by createrepo-0.9.9-23.el7.noarch
        python-deltarpm is needed by createrepo-0.9.9-23.el7.noarch

返回的信息是指,有依賴的包沒有安裝,這里缺少三個包
讀者可根據(jù)自己的環(huán)境安裝缺少的rpm包。下一步即為安裝所缺少的軟件包。

2所需要的三個軟件包都在該目錄下面

#rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm python-deltarpm-3.6-3.el7.x86_64.rpm libxml2-python-2.9.1-5.el7_1.2.x86_64.rpm
#rpm -ivh createrepo-0.9.9-23.el7.noarch.rpm 
#createrepo -v /local_server/       //這里是所有的依賴包

3.我們可以用ls repodata/命令查看到所有包之間的依賴關(guān)系

#cd /local_server/
ls repodata/
40bac61f2a462557e757c2183511f57d07fba2c0dd63f99b48f0b466b7f2b8d2-other.xml.gz
92384ea8958855cd44d8cd6bd999548d15879afe740b604ef5ff806435777dcd-primary.xml.gz
9710c85f1049b4c60c74ae5fd51d3e98e4ecd50a43ab53ff641690fb164a6d63-other.sqlite.bz2
cfa741341d5d270d5b42d6220e2908d053c39a2d8346986bf48cee360e6f7ce8-filelists.xml.gz
d863fcc08a4e8d47382001c3f22693ed77e03815a76cedf34d8256d4c12f6f0d-filelists.sqlite.bz2
e63b5b60a4a37c6d50bc855c950f5f2b23adab400d1c2b868c6a6965803eb422-primary.sqlite.bz2
repomd.xml

五.清除緩存

#yum clean all

六.使用本地源安裝net-tools

首先檢查是否已安裝net-tools工具。
若返回信息如下所示,表示已安裝。需要先使用yum remove net-tools進行卸載。

#yum list installed | grep net-tools
net-tools.x86_64       1.60-110.el6_2   @anaconda-CentOS-201605220104.x86_64/6.8     //代表已經(jīng)安裝

若無返回信息,表示未安裝net-tools。進行下一步

#yum install net-tools
image.png

拓展

1.使用ll /etc/yum.repos.d/命令可以看到所有的yum倉庫

#ll /etc/yum.repos.d/
total 36
-rw-r--r--. 1 root root  109 Sep 29 09:15 BackupRepoFile.sh
-rw-r--r--. 1 root root 1664 Dec  9  2015 CentOS-Base.repo.bak
-rw-r--r--. 1 root root 1309 Dec  9  2015 CentOS-CR.repo.bak
-rw-r--r--. 1 root root  649 Dec  9  2015 CentOS-Debuginfo.repo.bak
-rw-r--r--. 1 root root  290 Dec  9  2015 CentOS-fasttrack.repo.bak
-rw-r--r--. 1 root root  630 Dec  9  2015 CentOS-Media.repo.bak
-rw-r--r--. 1 root root 1331 Dec  9  2015 CentOS-Sources.repo.bak
-rw-r--r--. 1 root root 1952 Dec  9  2015 CentOS-Vault.repo.bak
-rw-r--r--. 1 root root   92 Sep 29 09:27 local_server.repo

從中我們可以看到前面的倉庫都已經(jīng)關(guān)閉,只剩下最后一個,這個倉庫就是我們當(dāng)前正在使用的。

2.在/etc/yum.repos.d/目錄下使用 cat CentOS-Base.repo.bak 命令可以查看到linux的四個基本倉庫其中前單個是開啟的,最后一個是默認關(guān)閉的

cd /etc/yum.repos.d/
cat CentOS-Base.repo.bak
CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0     //關(guān)閉狀態(tài)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

3.如果只需要查看當(dāng)前啟用了哪些倉庫,可以使用yum repolist

#yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                       repo name                             status
local_server                  This is a local repo                  3,723
repolist: 3,723
#cat /local_server.repo
[local_server]
name=This is a local repo
baseurl=file:///local_server
enableed=1
gpgcheck=0
 

相關(guān)知識

1.使用"yum repolist"可以列出你當(dāng)前的yum 資源庫.

#yum repolist

2.從不可用的資源庫安裝, 可用使用yum -enablerepo

#yum -enablerepo
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容