rpm包管理命令:YUM
藉助於YUM軟件倉庫,可以完成安裝、卸載、自動升級rpm軟件包等任務,能夠自動查找並解決rpm包之間的依賴關係,而無需管理員逐個、手工地去安裝每一個rpm包,使管理員在維度護在量linux服務器時更加輕鬆自如。特別是在擁有大量linux主機的本地網絡中,構建一臺源服務器可以大大緩解軟件安裝、升級等對於internet的依賴。
要成功使用YUM機制來更新系統和軟件,需要有一個包含各種rpm安裝文件的軟件倉庫,提供軟件庫的服務器也稱爲“源”服務器。在客戶機中只要正確指定軟件倉庫的地址等信息,就可以通過對應的“源”服務器來安裝或更新軟件了。
YUM軟件倉庫即可以作爲本地YUM源,即爲本地主機提供軟件源服務;也可以措助FTP或HTTP協議來進行發佈,這樣可以面向網絡中的所有客戶機提供軟件源服務。爲了便於客戶機查詢軟件包,獲取依賴關係等信息,在軟件倉庫中需要提供倉庫數據庫(repodata),其中收集了目錄下所有rpm包的頭部信息。
在RHEL6系統的安裝光盤中,已針對軟件目錄Packages/建好了repodata數據,因此只要簡單地將整個光盤中的內容或將光盤全部內容複製到硬盤通過HTTP或FTP進行發佈,就可以作爲軟件倉庫了。
A):本地YUM:(光盤源)
以下是rhel_6.0-i386-DVD的目錄結構:
HighAvailability 高可用相關軟件包,如rhcs等相關套件
Server 常規軟件包,如mysql,httpd,開發工具,系統管理工具等
LoadBalancer 負載均衡相關軟件包,如lvs,pirihan
ResilientStorage存儲
Packages 真正存放所有軟件包的目錄
images rhel安裝進程所需要的引導和驅動鏡像文件,
isolinux 鏡像文件引導時所需要的文件
用yum來安裝所需要的軟件包,先來搭建yum光盤源:
先將RHEL6的光盤掛載到某一目錄下,如掛載到/mnt
#mount /dev/cdrom /mnt
在/etc/yum.repos.d目錄下創建一個以.repo結尾的文件:
#vi /etc/yum.repos.d/server.repo
配置內容如下:
[Server] //倉庫名稱
name=Server //倉庫描述信息
baseurl=file:///mnt/Server //URL訪問路徑
enabled=1 //啓用此軟件倉庫
gpgcheck=1 //驗證軟件包的簽名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release //GPG公鑰文件的位置
[LoadBalancer]
name=LoadBalancer
baseurl=file:///mnt/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=file:///mnt/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ResilientStorage]
name=ResilientStorage
baseurl=file:///mnt/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Yum命令格式:
yum <options> <command><package...>
參數說明:
options: 常用的有:
-y : 如果在工作過程中如要使用者響應,這個參數可以直接回答yes
command:
list : 列出在yum server 上面有的RPM套件;若執行yum list installed則表示只列出系統中已安裝的軟件包,yum list available則表示只列出軟件倉庫中可用(尚未安裝)的軟件包,yum list update則表示列出可以升級版本的軟件包。
install: 安裝某個套件
update : 升級某個套件,如果update後面沒有接套件名稱,即更新目前主機所有已安裝的套件.
info : 列出某個套件的詳細信息,相當於rpm -qi package內容
clean : 將已下載到本機的packages或headers移除
remove : 移除已經安裝在系統中的某個套件
yum update 全部更新
yum update package 更新指定程序包package
yum check-update 檢查可更新的程序
yum info <package> 顯示安裝包信息
yum list 顯示所有已經安裝和可以安裝的程序包
yum list <package> 顯示指定程序包安裝情況
yum search <keyword>查找軟件包,當需要根據某個關鍵詞來查找相關的軟件包時,可以執行yum search 關鍵詞,默認僅根據軟件包名稱和描述信息進行搜索。若執行yum search all 關鍵詞,可以擴大搜索範圍,例如,以下將搜索軟件倉庫並列出與httpd相關的軟件包。Yum search allhttpd
yum clean headers 清除header
yum clean packages 清除下載的rpm包
yum clean all 清除header與rpm包
yum grouplist ,列出所有組
yum groupinstall 安裝某個軟件組如:yumgroupinstall Virtualization 安裝虛擬化
問題解決:
1、如果首次安裝軟件包之後,再次安裝別的軟件包的時候,很可能會發現報錯了,錯誤信息如下:
Error: Cannot retrieve repository metadata (repomd.xml) for repository:
InstallMedia. Please verify its path and try again
其實,rhel6在首次讀取改軟件倉庫之後,會把原本光盤根目錄下,也就是一同被你拷貝到軟件倉庫目錄的media.repo複製一份到/etc/yum.repos.d/,而該文件也就是導致本地yum源失效的罪魁禍首。
解決方法:
刪除軟件倉庫中的media.repo
# rm -f /share/rhel/media.repo
2、如果安裝軟件包出現public key for …….rpm isnot install
解決方法:導入完整性驗證的公鑰
#mount /dev/sr0 /mnt
#rpm –-import /mnt/RPM-GPG-KEY-redhat-release
本地YUM(硬盤源)
在本地創建一個存放YUM源的目錄,如mkdir /yum
將RHEL6光盤中的所有內容拷貝到/yum中
#mount /dev/cdrom /media
#cp -rf /media/* /yum
在/etc/yum.repos.d目錄下創建一個以.repo結尾的文件:
配置內容參照光盤源的YUM,此處略過
清理YUM緩存
yum clean all
驗證本地YUM安裝包
B):網絡YUM(通過FTP或HTTP協議方式實現網絡YUM安裝RPM包)
在Linux主機中使用YUM客戶端工具在線升級、安裝軟件時,由於受到網絡連接速度、網絡帶寬的限制,往往給用戶安裝帶來不必要的麻煩。但是如果在局域網中構建一個基於本地的YUM源服務器,則可以大大解決用戶安裝軟件速度較慢的問題
通過FTP方式:(方式1:硬盤源)
實現步驟:
YUM服務器端配置:
將RHEL6光盤中的所有內容複製到本地硬盤相關目錄下,如/var/ftp/rhel6
推薦步驟:
安裝vsftpd服務軟件包
#mkdir/var/ftp/rhel6
#mount /dev/cdrom /media
#cp /media/*/var/ftp/rhel6
啓動vsftpd服務:
service vsftpd start
chkconfig vsftpd on
在另一臺客戶端測試,首先創建repo文件指定YUM源位置
vi /etc/yum.repos.d/server.repo,注意文件的擴展名要以repo結尾,文件內容如下
[Server]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ResilientStorage]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
驗證:在客戶端上安裝RPM包,如samba
若YUM服務器開啓了selinux功能,客戶端通過YUM安裝會失敗
解決方法1:關閉selinux功能setenforce 0
方法2:setsebool allow_ftpd_full_access on
若YUM服務器開啓了防火牆,客戶端通過YUM安裝會失敗
解決方法1:關閉iptables
方法2:在INPUT規則鏈上創建允許FTP訪問的規則。
通過FTP方式:(方式2:光盤源)
YUM服務器端配置:(IP:192.168.0.2)
先將RHEL6系統光盤掛載到/var/ftp/pub目錄下
確保vsftpd服務啓動
YUM客戶端配置:(IP:192.168.0.1)
在/etc/yum.repos/目錄下創建一個以.repo爲後綴的文件,內容如下:
[Server]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ResilientStorage]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
在客戶端上測試
2、通過HTTPD方式:與ftp方式類似
(略)
對於用戶蒐集的非RHEL6光盤的更多其他軟件包(必須包括存在依賴關係的所有安裝文件)除了應準備相應的目錄以外,還需要手動創建repodata數據文件,這就要用到createrepo工具(RHEL6光盤中有)
以RHEL6安裝光盤中Packages/目錄的RPM包爲例:
安裝createrepo工具:
createrepoa主要用於收集目錄中的rpm包文件的頭信息,以創建repodata軟件倉庫數據(經gzip壓縮的xml文件)。
mount /dev/cdrom /mnt //掛載光盤
rpm –ivh /mnt/Packages/createrepo-0.9.8-4.el6.noarch.rpm
注意:安裝createrepo包時要依賴以下兩個包:deltarpm和python-deltarpm,不能忽略這兩個包
安裝FTP服務器:
rpm -ivh /mnt/Packages/vsftpd-2……..(按TAB鍵自動補齊)
配置軟件倉庫目錄:
可參考安裝光盤的Server目錄
mkdir/var/ftp/pub/Packages
mkdir/var/ftp/pub/repodata
從光盤把所有的RPM包複製到/var/ftp/pub/Packages目錄下(要確保硬盤有足夠的磁盤空間)
cp - a /mnt/Packages/* /var/ftp/pub/Packages/
創建軟件倉庫信息文件:
cd/var/ftp/pub/
createrepo --database ./
[root@serverpub]# ls repodata/
filelists.sqlite.bz2 other.sqlite.bz2 primary.sqlite.bz2 repomd.xml
filelists.xml.gz other.xml.gz primary.xml.gz
可以看到已經創建好了相應的軟件倉庫信息文件
在客戶端上創建擴展名爲.repo的文件,內容參考上面的設置。
v