1. 程式人生 > >Linux學習記錄--軟體安裝RPM|SRPM|YUM

Linux學習記錄--軟體安裝RPM|SRPM|YUM

軟體安裝RPM|SRPM|YUM

前面說到了軟體安裝可以直接下載原始碼壓縮版編譯安裝。還有一種安裝形式是使用廠商提供給使用者的安裝檔案。廠商在他們的系統上編譯好使用者所需要的軟體,然後將編譯好的軟體釋出給使用者使用。

目前廠商釋出軟體機制主要分為2大類

Dpkg:由Debian Linux社群開發,B2D,Ubantu等Linuxdistributions使用就是這種機制

RPM:由Red Hat開發,CentOs,SuSe使用就是這種機制

這兩種機制安裝軟體會先檢測前驅軟體是否存在,如果不存在則不安裝.如軟體A安裝。需系統內含有軟體B,那麼不存在則不會安裝軟體B

為了解決這種因依賴問題而導致軟體不能安裝廠商又提供了線上升級機制,簡單的說就是先將前驅軟體都安裝以保證要安的軟體能正確安裝

Dpkg機制對應的線上升級機制APT

RPM機制對應的線上升級機制YUM

RPM軟體管理程式

Rpm軟體相關資訊會寫入/var/lib/rpm目錄下的資料庫檔案內,未來軟體升級以及版本比較都源自這個資料庫,查詢已安裝RPM軟體也會查詢這個資料庫

RPM安裝與升級

前面提到過RPM軟體的安裝前會檢查前驅依賴的軟體是否已安裝,如果為安裝則此次安裝不會進行,同時需要說明PRM機制軟體是廠商根據特定系統所提供,因此不同的Linux distributions,以及不同版本之間PRM機制軟體是不能相互安裝的

語法:rpm –[i|F|U]vh軟體名

選項與引數

-i: 安裝

-U:後接的軟體如果沒有安裝過則安裝,如果安裝過且版本較舊則更新

-F:後接的軟體如未安裝則不進行安裝,如果安裝過且版本較舊則更新

-v:檢視詳細安裝資訊

-h:顯示安裝進度

舉例1:安裝

[[email protected] ~]# 
rpm -ivh /media/CentOS_5.10_Final/CentOS/pam-devel-0.99.6.2-12.el5.i386.rpm 
Preparing...                ########################################### [100%]
   1:pam-devel              ########################################### [100%]

舉例2:存在依賴的安裝
[[email protected] ~]# rpm -i /media/CentOS_5.10_Final/CentOS/ant17-junit-1.7.1-1jpp.0.i386.rpm
error: Failed dependencies:
        ant17 = 0:1.7.1-1jpp.0 is needed by ant17-junit-1.7.1-1jpp.0.i386
        junit is needed by ant17-junit-1.7.1-1jpp.0.i386
=>提示其前驅軟體為安裝

RPM查詢

語法: rpm –qa

rpm –q[iR] 存在於系統的軟體名

rpm –qf 存在於系統的某個檔名

rpm -qp[iR] 未安裝的某個檔名

-q:進查詢後面接的軟體名是否安裝

-qa:列出所有已安裝的軟體資訊

-qi :列出後面接軟體的詳細資訊

-qR:列出與該軟體有關的依賴軟體所含的檔案

-qf:由後面接的檔名稱找出還檔案屬於哪一個以安裝的軟體

查詢某個未安裝軟體包含檔案的資訊

-qp[iR]:iR屬於與上面說的一致

[[email protected] ~]# rpm -q pam-devel =>不需要列出版本號
pam-devel-0.99.6.2-12.el5

[[email protected] ~]# rpm -qi pam-devel
Name        : pam-devel                    Relocations: (not relocatable)
Version     : 0.99.6.2                          Vendor: CentOS
Release     : 12.el5                        Build Date: 2013年01月09日星期三 13時30分55秒
Install Date: 2014年04月08日星期二 14時19分02秒      Build Host: builder17.centos.org
Group       : Development/Libraries         Source RPM: pam-0.99.6.2-12.el5.src.rpm
Size        : 504034                           License: GPL or BSD
Signature   : DSA/SHA1, 2013年01月10日星期四 03時18分55秒, Key ID a8a447dce8562897
URL         : http://www.us.kernel.org/pub/linux/libs/pam/index.html
Summary     : Files needed for developing PAM-aware applications and modules for PAM
Description :
PAM(可插入驗證模組)是一個系統安全工具。它允許
系統管理員無需重新編譯處理驗證的程式而設定驗證
策略。該軟體包包括用於建構留意 PAM 的程式和 PAM
使用的模組所需的標頭檔案和靜態庫。

[[email protected] ~]# rpm -qR pam-devel
libpam.so.0  
libpam_misc.so.0  
libpamc.so.0  
pam = 0.99.6.2-12.el5
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1

[[email protected] ~]# rpm -qf /usr/lib/libpam.so
pam-devel-0.99.6.2-12.el5

[[email protected] ~]# rpm –qa
tomcat5-servlet-2.4-api-5.5.23-0jpp.40.el5_9
xml-commons-resolver-1.1-1jpp.12
…..

RPM解除安裝與重建資料庫

解除安裝:rpm –e 軟體名

重建資料庫:rpm –rebuilddb

YUM線上升級

前面說到RPM軟體安裝是如果存在前驅軟體且未安裝此次安裝就不會進行,為了解決這個問題,就引入了YUM線上升級機制,簡答的說,YUM線上升級機制就是將需要安裝的軟體的前驅軟體(RPM)事先都進行安裝以保障軟體的順利安裝

YUM安裝與更新

語法:yum  [option]  [install|update]

Option:

-y:安裝過程中詢問使用者操作,預設是yes

-installroot=路徑:軟體安裝路徑

install:安裝操作

update 更新操作

舉例:

[[email protected] ~]# yum -y install pam-devel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirrors.yun-idc.com
 * extras: mirrors.yun-idc.com
 * updates: mirrors.yun-idc.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-12.el5 set to be updated
--> Finished Dependency Resolution
………………….
  Installing     : pam-devel                                                                                                               1/1 
Installed:
  pam-devel.i386 0:0.99.6.2-12.el5                                                                                                             
Complete!

YUM查詢

語法:yum[search|info |provides]軟體名

yum list|list updates

search: 查詢後接名稱的相關的軟體

info: 查詢後接軟體的相關資訊

provides:查詢提供後接檔案的軟體有哪些

list:列出伺服器上所提供的軟體

list updates:列出伺服器上可供升級的軟體

舉例:

[[email protected] ~]# yum search pam
…….
pam.i386 : A security tool which provides authentication for applications
pam-devel.i386 : Files needed for developing PAM-aware applications and modules for PAM
…..
[[email protected] ~]# yum info pam-devel
……
Installed Packages
Name       : pam-devel
Arch       : i386
Version    : 0.99.6.2
Release    : 12.el5
Size       : 492 k
Repo       : installed
Summary    : Files needed for developing PAM-aware applications and modules for PAM
URL        : http://www.us.kernel.org/pub/linux/libs/pam/index.html
License    : GPL or BSD
Description: PAM(可插入驗證模組)是一個系統安全工具。它允許
           : 系統管理員無需重新編譯處理驗證的程式而設定驗證
           : 策略。該軟體包包括用於建構留意 PAM 的程式和 PAM
           : 使用的模組所需的標頭檔案和靜態庫。

[[email protected] ~]# yum provides /bin/sh
………
bash-3.2-32.el5_9.1.i386 : The GNU Bourne Again shell (bash) version 3.2
Repo        : base
Matched from:
Filename    : /bin/sh

YUM刪除

語法:yum [–y]remove 軟體名

舉例:

[[email protected] ~]# yum remove pam-devel
Loaded plugins: fastestmirror, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-12.el5 set to be erased
--> Finished Dependency Resolution
………….
Transaction Test Succeeded
Running Transaction
  Erasing        : pam-devel                                                                                                               1/1 
Removed:
  pam-devel.i386 0:0.99.6.2-12.el5   

YUM軟體組

前面說的YUM安裝都是一個一個安裝軟體,當我們安裝一個複雜的功能時可能需要安裝很多個軟體,比如安裝KDE桌面系統,其包括很多軟體,如果在一個個安裝就會很費事。此時就可以使用軟體組功能。(至於有哪些軟體組。這就需要伺服器提供了)

語法: yum grouplist

              yum [groupinfo|groupinstall|groupremove] 軟體組名

舉例:

[[email protected] ~]# yum grouplist
Installed Groups:=>已經安裝的軟體組
   DNS 名稱伺服器
   FTP 伺服器
  ……..
Available Groups: =>可安裝的軟體組
   Beagle
   Eclipse
……..
Done

YUM伺服器配置

Yum軟體線上升級資訊都要從遠端的伺服器端來獲取資料,有時我們需要更改下伺服器地址,選擇些離我們較近,或者資源較好的伺服器以提高傳輸效率,那麼伺服器配置資訊在哪裡設定的?

檢視系統中配置伺服器站點

語法:yum repolist all

[email protected] ~]# yum repolist all
repo id               repo name                    status
C5.0-base             CentOS-5.0 - Base            disabled
base                  CentOS-5 - Base              enabled
extras                CentOS-5 - Extras            enabled
updates               CentOS-5 - Updates           enabled
=>只有states是enabled才是被啟用的,上面有三個站點是被啟用的

當我們查詢安裝時會看到如下提示資訊,就代表從上面三個啟用站點查詢到的資料

Loaded plugins: fastestmirror, security

Loading mirror speeds from cached hostfile

 *base: mirrors.yun-idc.com

 *extras: mirrors.yun-idc.com

 *updates: mirrors.yun-idc.com

配置伺服器站點

伺服器配置資訊都在/etc/yum.repos.d/目錄下

[[email protected] /]# ll /etc/yum.repos.d/
-rw-r--r-- 1 root root 1926 04-02 09:21 CentOS-Base.repo
-rw-r--r-- 1 root root  636 10-08 04:57 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root  626 10-08 04:57 CentOS-Media.repo
-rw-r--r-- 1 root root 7574 10-08 04:57 CentOS-Vault.repo
-rw-r--r-- 1 root root  342 04-02 09:26 mystation.repo

以上可見分為4個容器,每個容器內配置了一些列站點

[[email protected] /]# vim /etc/yum.repos.d/CentOS-Base.repo
=>檢視包含了哪些站點
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
enabled=1

名稱說明:

[base]:代表站點的名字!中刮號一定要存在

name:只是說明一下這個容器的意義而已

mirrorlist=:列出這個容器可以使用的對映站臺,如果不想使用,可以註解到這行;

baseurl=:因為後面接的就是容器的實際網址!

enable=1:就是讓這個容器被啟動。如果不想啟動可以使用 enable=0 。

gpgcheck=1:這就是指定是否需要查閱 RPM 檔案內的數碼簽章!

gpgkey=:就是數碼簽章的公鑰檔所在位置。使用預設值即可

舉例:管理一個站點

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

[[email protected] ~]# yum search gcc
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
extras                                                                                                                  | 2.1 kB     00:00     
updates      
=>查詢站點只剩下2個了

對於自定義的伺服器地址需要在/etc/yum.repos.d/目錄下新建.repo檔案,在裡面配置自己的伺服器站點