1. 程式人生 > >linux軟件管理工具-yum

linux軟件管理工具-yum

ack try 每一個 merge mov loading name 軟件 解析

Linux各發行版使用的軟件包管理命令,如apt-get ,dpkg, rpm ,yum,emerge等等。本文對yum工具進行研究整理。

1、yum簡介

1.1 What‘s yum

  • yum命令是在Fedora和RedHat以及SUSE中基於rpm的軟件包管理器。
  • 它可以系統管理員交互和自動化地管理RPM軟件包,
  • 能夠從指定的服務器自動下載RPM包並且安裝,
  • 可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包。

1.2 yum的基本目錄

  • YUM配置文件 /etc/yum.conf,通常無需修改
  • 倉庫配置文件目錄 /etc/yum.repos.d/
  • YUM的緩存目錄 /var/cache/yum

  • YUM的日誌文件 /var/log/yum.log

2、what‘s repo

2.1 repo文件是yum源的配置文件

  • 通常一個repo文件定義了一個或者多個軟件倉庫的細節內容,repo文件中的設置內容將被yum讀取和應用!

2.2 YUM的工作原理:

  • 每一個 RPM軟件的頭(header)裏面都會紀錄該軟件的依賴關系,那麽如果可以將該頭的內容紀錄下來並且進行分析,可以知道每個軟件在安裝之前需要額外安裝
  • 服務器端:在服務器上面存放了所有的RPM軟件包,然後以相關的功能去分析每個RPM文件的依賴性關系,將這些數據記錄成文件存放在服務器的某特定目錄內。
  • 客戶端:如果需要安裝某個軟件時,先下載服務器上面記錄的依賴性關系文件(可通過WWW或FTP方式),通過對服務器端下載的紀錄數據進行分析,然後取得所有相關的軟件,一次全部下載下來進行安裝。

2.3 repo文件配置解釋

  • [serverid]
是用於區別各個不同的repository
  • name=Some name for this server
是對repository的描述
  • baseurl=url://server1/path/to/repository/
其中url支持的協議有 http:// ftp:// file://三種
baseurl後可以跟多個url
url之後可以加上多個選項,如gpgcheck、failovermethod
  • enabled=[1 or 0]
是否可用

2.4 repo中的變量

  • $releasever,linux發行版本,[5/6/7]
  • $arch,cpu體系,如[i686,athlon]
  • $basearch,cpu的基本體系組,[i386/x86_64]


3、yum源的安裝

3.1 本地yum搭建

本地yum就是讓linux 系統使用 裝機鏡像包中的rpm軟件1、創建掛載點
# mkdir /yum
2、光驅插入鏡像盤3、掛載
# mount /dev/cdrom /yum
4、編輯repo文件
[local]name=auto yumbaseurl=file:///yumenabled=1gpgcheck=1gpgkey=file:///yum/RPM-GPG-KEY-CentOS-6

3.2 基於ftp的網絡yum源

服務端1、服務端安裝vsftpd
# rpm -ivh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm # service vsftpd start
# chkconfig vsftpd on
2、修改ftp訪問的目錄設置ftp家目錄為光盤掛載點
# mount /dev/cdrom /yum# usermod -d /yum ftp #修改ftp用戶家目錄為rpm包目錄
客戶端1. 編輯客戶端的repo文件 # vim /etc/yum.repos.d/local.repo
[local]name=auto yumbaseurl=ftp://x.x.x.xenabled=1gpgcheck=0

3.3 epel yum源搭建

1. epel源簡介
  • EPEL,即Extra Packages for Enterprise Linux
  • 這個軟件倉庫裏有很多非常常用的軟件,而且是專門針對RHEL設計的,對RHEL標準yum源是一個很好的補充,完全免費使用
  • 由Fedora項目維護,所以如果你使用的是RHEL,或者CentOS,Scientific等RHEL系的linux,可以非常放心的使用EPEL的yum源。
2. 打開epel網站
http://mirrors.kernel.org/fedora-epel/
方法1:安裝生成repo的rpm,網上通用,但是報錯
下載配置repo 的rpm
選擇對應版本的rpm
因為我是redhat6.4 ,選擇此網頁的epel-release-latest-6.noarch.rpm
linux安裝命令:
# rpm -Uvh http://mirrors.kernel.org/fedora-epel/epel-release-latest-6.noarch.rpm # yum clean all# yum makecache
報錯:連接不到epel源
Loading mirror speeds from cached hostfileError: Cannot retrieve metalink for repository: epel. Please verify its path and try again
解決辦法:
方法2
方法2:編輯一個epel的repo文件
1. 選擇basedir
在epel源的網站上選擇合適的系統版本,和cpu架構,比如我是redhat6.4 64位http://mirrors.kernel.org/fedora-epel/6/x86_64/
2. 編輯 epel.repo
# cat epel.repo [epel]name=epelbaseurl=http://mirrors.kernel.org/fedora-epel/6/x86_64/enable=1gpgcheck=0
3. 查看yum源
# yum clean all# yum repolist

3.4 國內yum源:網易163yum源

# cd /etc/yum.repos.d方法1:下載repo文件
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo# yum clean all# yum makecache
報錯:
http://mirrors.163.com/centos/6Server/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
解決方案:
可以通過報錯看到解析的地址有問題,我們將變量直接替換成指定值$releasever --> 6$basearch --> x64_86替換後,baseurl=http://mirrors.163.com/centos/6/os/x86_64/

方法2:直接編輯一個repo文件
# cat Centos163.repo [base]name=CentOS-6 - Base - 163.combaseurl=http://mirrors.163.com/centos/6/os/x86_64/enable=1gpgcheck=1gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6


4、yum語法和命令

語法:
yum [選項] [參數]
選項:
-h:顯示幫助信息; -y:對所有的提問都回答“yes”; -c:指定配置文件; -q:安靜模式; -v:詳細模式; -d:設置調試等級(0-10); -e:設置錯誤等級(0-10); -R:設置yum處理一個命令的最大等待時間; -C:完全從緩存中運行,而不去下載或者更新任何頭文件。
參數:
install:安裝rpm軟件包; update:更新rpm軟件包; check-update:檢查是否有可用的更新rpm軟件包; remove:刪除指定的rpm軟件包; list:顯示軟件包的信息; search:檢查軟件包的信息; info:顯示指定的rpm軟件包的描述信息和概要信息; clean:清理yum過期的緩存; shell:進入yum的shell提示符; resolvedep:顯示rpm軟件包的依賴關系; localinstall:安裝本地的rpm軟件包; localupdate:顯示本地rpm軟件包進行更新; deplist:顯示rpm軟件包的所有依賴關系。
常用命令:yum插件安裝
yum install yum-fastestmirror #自動搜索最快鏡像插件 yum install yumex #安裝yum圖形窗口插件
yum查看
yum list #顯示所有已經安裝和可以安裝的程序包yum grouplist #查看可能批量安裝的列表
yum安裝
yum install package1 #安裝指定的安裝包package1yum groupinsall group1 #安裝程序組group1
yum更新
yum update package1 #更新指定程序包package1
yum移除
yum remove | erase package1 #刪除程序包package1

linux軟件管理工具-yum